Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
emit_public_log_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 emit_public_logImpl<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_FLAT_PUBLIC_LOGS_HEADER_LENGTH = FF(1);
19 const auto constants_FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH = FF(4096);
20 const auto constants_PUBLIC_LOG_HEADER_LENGTH = FF(2);
21 const auto constants_MEM_TAG_FF = FF(0);
22 const auto constants_AVM_MEMORY_SIZE = FF(4294967296UL);
23 const auto constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_PUBLIC_LOGS_ROW_IDX = FF(522);
24 const auto emit_public_log_LATCH_CONDITION = in.get(C::emit_public_log_end) + in.get(C::precomputed_first_row);
25 const auto emit_public_log_NOT_END = (in.get(C::emit_public_log_sel) - in.get(C::emit_public_log_end));
26 const auto emit_public_log_TOTAL_LOG_FIELDS_SIZE =
27 constants_PUBLIC_LOG_HEADER_LENGTH + in.get(C::emit_public_log_log_size);
28 const auto emit_public_log_IS_WRITE_LOG_LENGTH = in.get(C::emit_public_log_start);
29 const auto emit_public_log_WRONG_NEXT_TAG = (FF(1) - in.get(C::emit_public_log_correct_tag_shift));
30 const auto emit_public_log_START_PUBLIC_INDEX =
31 constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_PUBLIC_LOGS_ROW_IDX +
32 constants_FLAT_PUBLIC_LOGS_HEADER_LENGTH + in.get(C::emit_public_log_prev_num_public_log_fields);
33
34 {
35 using View = typename std::tuple_element_t<0, ContainerOverSubrelations>::View;
36 auto tmp = static_cast<View>(in.get(C::emit_public_log_sel)) *
37 (FF(1) - static_cast<View>(in.get(C::emit_public_log_sel)));
38 std::get<0>(evals) += (tmp * scaling_factor);
39 }
40 {
41 using View = typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
42 auto tmp = static_cast<View>(in.get(C::emit_public_log_start)) *
43 (FF(1) - static_cast<View>(in.get(C::emit_public_log_start)));
44 std::get<1>(evals) += (tmp * scaling_factor);
45 }
46 {
47 using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
48 auto tmp = static_cast<View>(in.get(C::emit_public_log_end)) *
49 (FF(1) - static_cast<View>(in.get(C::emit_public_log_end)));
50 std::get<2>(evals) += (tmp * scaling_factor);
51 }
52 { // SEL_ON_START_OR_END
53 using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
54 auto tmp =
55 (static_cast<View>(in.get(C::emit_public_log_start)) + static_cast<View>(in.get(C::emit_public_log_end))) *
56 (FF(1) - static_cast<View>(in.get(C::emit_public_log_sel)));
57 std::get<3>(evals) += (tmp * scaling_factor);
58 }
59 { // TRACE_CONTINUITY
60 using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
61 auto tmp = (FF(1) - CView(emit_public_log_LATCH_CONDITION)) *
62 (static_cast<View>(in.get(C::emit_public_log_sel)) -
63 static_cast<View>(in.get(C::emit_public_log_sel_shift)));
64 std::get<4>(evals) += (tmp * scaling_factor);
65 }
66 { // START_AFTER_LATCH
67 using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
68 auto tmp = static_cast<View>(in.get(C::emit_public_log_sel_shift)) *
69 (static_cast<View>(in.get(C::emit_public_log_start_shift)) - CView(emit_public_log_LATCH_CONDITION));
70 std::get<5>(evals) += (tmp * scaling_factor);
71 }
72 {
73 using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
74 auto tmp =
75 static_cast<View>(in.get(C::emit_public_log_start)) *
76 (((CView(constants_PUBLIC_LOG_HEADER_LENGTH) + static_cast<View>(in.get(C::emit_public_log_log_size))) -
77 FF(1)) -
78 static_cast<View>(in.get(C::emit_public_log_remaining_rows)));
79 std::get<6>(evals) += (tmp * scaling_factor);
80 }
81 { // REMAINING_ROWS_DECREMENT
82 using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
83 auto tmp =
84 CView(emit_public_log_NOT_END) * ((static_cast<View>(in.get(C::emit_public_log_remaining_rows)) - FF(1)) -
85 static_cast<View>(in.get(C::emit_public_log_remaining_rows_shift)));
86 std::get<7>(evals) += (tmp * scaling_factor);
87 }
88 {
89 using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
90 auto tmp = static_cast<View>(in.get(C::emit_public_log_sel)) *
91 ((static_cast<View>(in.get(C::emit_public_log_remaining_rows)) *
92 (static_cast<View>(in.get(C::emit_public_log_end)) *
93 (FF(1) - static_cast<View>(in.get(C::emit_public_log_remaining_rows_inv))) +
94 static_cast<View>(in.get(C::emit_public_log_remaining_rows_inv))) -
95 FF(1)) +
96 static_cast<View>(in.get(C::emit_public_log_end)));
97 std::get<8>(evals) += (tmp * scaling_factor);
98 }
99 {
100 using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
101 auto tmp = static_cast<View>(in.get(C::emit_public_log_start)) *
102 (static_cast<View>(in.get(C::emit_public_log_max_mem_size)) - CView(constants_AVM_MEMORY_SIZE));
103 std::get<9>(evals) += (tmp * scaling_factor);
104 }
105 {
106 using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
107 auto tmp = static_cast<View>(in.get(C::emit_public_log_start)) *
108 ((static_cast<View>(in.get(C::emit_public_log_log_address)) +
109 static_cast<View>(in.get(C::emit_public_log_log_size))) -
110 static_cast<View>(in.get(C::emit_public_log_end_log_address_upper_bound)));
111 std::get<10>(evals) += (tmp * scaling_factor);
112 }
113 { // ERROR_OUT_OF_BOUNDS_CONSISTENCY
114 using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
115 auto tmp =
116 CView(emit_public_log_NOT_END) * (static_cast<View>(in.get(C::emit_public_log_error_out_of_bounds_shift)) -
117 static_cast<View>(in.get(C::emit_public_log_error_out_of_bounds)));
118 std::get<11>(evals) += (tmp * scaling_factor);
119 }
120 {
121 using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
122 auto tmp = static_cast<View>(in.get(C::emit_public_log_start)) *
123 ((static_cast<View>(in.get(C::emit_public_log_prev_num_public_log_fields)) +
124 CView(emit_public_log_TOTAL_LOG_FIELDS_SIZE)) -
125 static_cast<View>(in.get(C::emit_public_log_expected_next_log_fields)));
126 std::get<12>(evals) += (tmp * scaling_factor);
127 }
128 {
129 using View = typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
130 auto tmp = static_cast<View>(in.get(C::emit_public_log_start)) *
131 (static_cast<View>(in.get(C::emit_public_log_max_public_logs_payload_length)) -
132 CView(constants_FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH));
133 std::get<13>(evals) += (tmp * scaling_factor);
134 }
135 { // ERROR_TAG_MISMATCH_CONSISTENCY
136 using View = typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
137 auto tmp =
138 CView(emit_public_log_NOT_END) * (static_cast<View>(in.get(C::emit_public_log_error_tag_mismatch_shift)) -
139 static_cast<View>(in.get(C::emit_public_log_error_tag_mismatch)));
140 std::get<14>(evals) += (tmp * scaling_factor);
141 }
142 { // INITIAL_SEEN_WRONG_TAG
143 using View = typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
144 auto tmp = static_cast<View>(in.get(C::emit_public_log_start)) *
145 static_cast<View>(in.get(C::emit_public_log_seen_wrong_tag));
146 std::get<15>(evals) += (tmp * scaling_factor);
147 }
148 { // WRONG_TAG_CHECK
149 using View = typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
150 auto tmp =
151 CView(emit_public_log_NOT_END) * (((FF(1) - static_cast<View>(in.get(C::emit_public_log_seen_wrong_tag))) *
152 CView(emit_public_log_WRONG_NEXT_TAG) +
153 static_cast<View>(in.get(C::emit_public_log_seen_wrong_tag))) -
154 static_cast<View>(in.get(C::emit_public_log_seen_wrong_tag_shift)));
155 std::get<16>(evals) += (tmp * scaling_factor);
156 }
157 { // CHECK_END_TAG_MISMATCH
158 using View = typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
159 auto tmp = static_cast<View>(in.get(C::emit_public_log_end)) *
160 (static_cast<View>(in.get(C::emit_public_log_error_tag_mismatch)) -
161 static_cast<View>(in.get(C::emit_public_log_seen_wrong_tag)));
162 std::get<17>(evals) += (tmp * scaling_factor);
163 }
164 {
165 using View = typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
166 auto tmp = static_cast<View>(in.get(C::emit_public_log_start)) *
167 ((FF(1) - static_cast<View>(in.get(C::emit_public_log_error_out_of_bounds))) *
168 (FF(1) - static_cast<View>(in.get(C::emit_public_log_error_too_many_log_fields))) *
169 (FF(1) - static_cast<View>(in.get(C::emit_public_log_error_tag_mismatch))) *
170 (FF(1) - static_cast<View>(in.get(C::emit_public_log_is_static))) -
171 (FF(1) - static_cast<View>(in.get(C::emit_public_log_error))));
172 std::get<18>(evals) += (tmp * scaling_factor);
173 }
174 {
175 using View = typename std::tuple_element_t<19, ContainerOverSubrelations>::View;
176 auto tmp = static_cast<View>(in.get(C::emit_public_log_start)) *
177 ((static_cast<View>(in.get(C::emit_public_log_prev_num_public_log_fields)) +
178 (FF(1) - static_cast<View>(in.get(C::emit_public_log_error))) *
179 CView(emit_public_log_TOTAL_LOG_FIELDS_SIZE)) -
180 static_cast<View>(in.get(C::emit_public_log_next_num_public_log_fields)));
181 std::get<19>(evals) += (tmp * scaling_factor);
182 }
183 { // WRITE_CONTRACT_ADDRESS_AFTER_START
184 using View = typename std::tuple_element_t<20, ContainerOverSubrelations>::View;
185 auto tmp = (static_cast<View>(in.get(C::emit_public_log_is_write_contract_address_shift)) -
186 static_cast<View>(in.get(C::emit_public_log_start)));
187 std::get<20>(evals) += (tmp * scaling_factor);
188 }
189 {
190 using View = typename std::tuple_element_t<21, ContainerOverSubrelations>::View;
191 auto tmp = static_cast<View>(in.get(C::emit_public_log_is_write_memory_value)) *
192 (FF(1) - static_cast<View>(in.get(C::emit_public_log_is_write_memory_value)));
193 std::get<21>(evals) += (tmp * scaling_factor);
194 }
195 {
196 using View = typename std::tuple_element_t<22, ContainerOverSubrelations>::View;
197 auto tmp = static_cast<View>(in.get(C::emit_public_log_start)) *
198 static_cast<View>(in.get(C::emit_public_log_is_write_memory_value));
199 std::get<22>(evals) += (tmp * scaling_factor);
200 }
201 { // SET_AND_PROGATE_VALUE_WRITE
202 using View = typename std::tuple_element_t<23, ContainerOverSubrelations>::View;
203 auto tmp = CView(emit_public_log_NOT_END) *
204 ((static_cast<View>(in.get(C::emit_public_log_is_write_memory_value)) +
205 static_cast<View>(in.get(C::emit_public_log_is_write_contract_address))) -
206 static_cast<View>(in.get(C::emit_public_log_is_write_memory_value_shift)));
207 std::get<23>(evals) += (tmp * scaling_factor);
208 }
209 { // SEL_SHOULD_READ_MEMORY_IS_SEL_AND_WRITE_MEM_AND_NO_ERR
210 using View = typename std::tuple_element_t<24, ContainerOverSubrelations>::View;
211 auto tmp = (static_cast<View>(in.get(C::emit_public_log_sel_read_memory)) -
212 static_cast<View>(in.get(C::emit_public_log_sel)) *
213 static_cast<View>(in.get(C::emit_public_log_is_write_memory_value)) *
214 (FF(1) - static_cast<View>(in.get(C::emit_public_log_error_out_of_bounds))));
215 std::get<24>(evals) += (tmp * scaling_factor);
216 }
217 { // LOG_ADDRESS_INCREMENT
218 using View = typename std::tuple_element_t<25, ContainerOverSubrelations>::View;
219 auto tmp =
220 CView(emit_public_log_NOT_END) * ((static_cast<View>(in.get(C::emit_public_log_log_address)) +
221 static_cast<View>(in.get(C::emit_public_log_is_write_memory_value))) -
222 static_cast<View>(in.get(C::emit_public_log_log_address_shift)));
223 std::get<25>(evals) += (tmp * scaling_factor);
224 }
225 { // EXEC_CLK_CONSISTENCY
226 using View = typename std::tuple_element_t<26, ContainerOverSubrelations>::View;
227 auto tmp = CView(emit_public_log_NOT_END) * (static_cast<View>(in.get(C::emit_public_log_execution_clk)) -
228 static_cast<View>(in.get(C::emit_public_log_execution_clk_shift)));
229 std::get<26>(evals) += (tmp * scaling_factor);
230 }
231 { // SPACE_ID_CONSISTENCY
232 using View = typename std::tuple_element_t<27, ContainerOverSubrelations>::View;
233 auto tmp = CView(emit_public_log_NOT_END) * (static_cast<View>(in.get(C::emit_public_log_space_id)) -
234 static_cast<View>(in.get(C::emit_public_log_space_id_shift)));
235 std::get<27>(evals) += (tmp * scaling_factor);
236 }
237 { // DISABLED_MEM_READ_VALUE_ZERO
238 using View = typename std::tuple_element_t<28, ContainerOverSubrelations>::View;
239 auto tmp = (static_cast<View>(in.get(C::emit_public_log_sel)) -
240 static_cast<View>(in.get(C::emit_public_log_sel_read_memory))) *
241 static_cast<View>(in.get(C::emit_public_log_value));
242 std::get<28>(evals) += (tmp * scaling_factor);
243 }
244 { // DISABLED_MEM_READ_TAG_FF
245 using View = typename std::tuple_element_t<29, ContainerOverSubrelations>::View;
246 auto tmp = (static_cast<View>(in.get(C::emit_public_log_sel)) -
247 static_cast<View>(in.get(C::emit_public_log_sel_read_memory))) *
248 (CView(constants_MEM_TAG_FF) - static_cast<View>(in.get(C::emit_public_log_tag)));
249 std::get<29>(evals) += (tmp * scaling_factor);
250 }
251 {
252 using View = typename std::tuple_element_t<30, ContainerOverSubrelations>::View;
253 auto tmp = static_cast<View>(in.get(C::emit_public_log_correct_tag)) *
254 (FF(1) - static_cast<View>(in.get(C::emit_public_log_correct_tag)));
255 std::get<30>(evals) += (tmp * scaling_factor);
256 }
257 {
258 using View = typename std::tuple_element_t<31, ContainerOverSubrelations>::View;
259 auto tmp = static_cast<View>(in.get(C::emit_public_log_sel)) *
260 ((static_cast<View>(in.get(C::emit_public_log_tag)) *
261 (static_cast<View>(in.get(C::emit_public_log_correct_tag)) *
262 (FF(1) - static_cast<View>(in.get(C::emit_public_log_tag_inv))) +
263 static_cast<View>(in.get(C::emit_public_log_tag_inv))) -
264 FF(1)) +
265 static_cast<View>(in.get(C::emit_public_log_correct_tag)));
266 std::get<31>(evals) += (tmp * scaling_factor);
267 }
268 {
269 using View = typename std::tuple_element_t<32, ContainerOverSubrelations>::View;
270 auto tmp = static_cast<View>(in.get(C::emit_public_log_start)) *
271 ((FF(1) - static_cast<View>(in.get(C::emit_public_log_error))) *
272 (FF(1) - static_cast<View>(in.get(C::emit_public_log_discard))) -
273 static_cast<View>(in.get(C::emit_public_log_sel_write_to_public_inputs)));
274 std::get<32>(evals) += (tmp * scaling_factor);
275 }
276 { // SEL_SHOULD_WRITE_TO_PUBLIC_INPUTS_CONSISTENCY
277 using View = typename std::tuple_element_t<33, ContainerOverSubrelations>::View;
278 auto tmp = CView(emit_public_log_NOT_END) *
279 (static_cast<View>(in.get(C::emit_public_log_sel_write_to_public_inputs_shift)) -
280 static_cast<View>(in.get(C::emit_public_log_sel_write_to_public_inputs)));
281 std::get<33>(evals) += (tmp * scaling_factor);
282 }
283 {
284 using View = typename std::tuple_element_t<34, ContainerOverSubrelations>::View;
285 auto tmp = static_cast<View>(in.get(C::emit_public_log_start)) *
286 (CView(emit_public_log_START_PUBLIC_INDEX) -
287 static_cast<View>(in.get(C::emit_public_log_public_inputs_index)));
288 std::get<34>(evals) += (tmp * scaling_factor);
289 }
290 {
291 using View = typename std::tuple_element_t<35, ContainerOverSubrelations>::View;
292 auto tmp = CView(emit_public_log_NOT_END) *
293 ((static_cast<View>(in.get(C::emit_public_log_public_inputs_index)) + FF(1)) -
294 static_cast<View>(in.get(C::emit_public_log_public_inputs_index_shift)));
295 std::get<35>(evals) += (tmp * scaling_factor);
296 }
297 { // CONTRACT_ADDRESS_CONSISTENCY
298 using View = typename std::tuple_element_t<36, ContainerOverSubrelations>::View;
299 auto tmp =
300 CView(emit_public_log_NOT_END) * (static_cast<View>(in.get(C::emit_public_log_contract_address)) -
301 static_cast<View>(in.get(C::emit_public_log_contract_address_shift)));
302 std::get<36>(evals) += (tmp * scaling_factor);
303 }
304 {
305 using View = typename std::tuple_element_t<37, ContainerOverSubrelations>::View;
306 auto tmp = CView(emit_public_log_IS_WRITE_LOG_LENGTH) *
307 (static_cast<View>(in.get(C::emit_public_log_log_size)) -
308 static_cast<View>(in.get(C::emit_public_log_public_inputs_value)));
309 std::get<37>(evals) += (tmp * scaling_factor);
310 }
311 {
312 using View = typename std::tuple_element_t<38, ContainerOverSubrelations>::View;
313 auto tmp = static_cast<View>(in.get(C::emit_public_log_is_write_contract_address)) *
314 (static_cast<View>(in.get(C::emit_public_log_contract_address)) -
315 static_cast<View>(in.get(C::emit_public_log_public_inputs_value)));
316 std::get<38>(evals) += (tmp * scaling_factor);
317 }
318 {
319 using View = typename std::tuple_element_t<39, ContainerOverSubrelations>::View;
320 auto tmp = static_cast<View>(in.get(C::emit_public_log_is_write_memory_value)) *
321 (static_cast<View>(in.get(C::emit_public_log_value)) -
322 static_cast<View>(in.get(C::emit_public_log_public_inputs_value)));
323 std::get<39>(evals) += (tmp * scaling_factor);
324 }
325}
326
327} // namespace bb::avm2
static void accumulate(ContainerOverSubrelations &evals, const AllEntities &in, const RelationParameters< FF > &, const FF &scaling_factor)
AvmFlavorSettings::FF FF
Definition field.hpp:10
ColumnAndShifts
Definition columns.hpp:34
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.