Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
public_data_check_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 public_data_checkImpl<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_PUBLIC_DATA_TREE_HEIGHT = FF(40);
19 const auto constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_ARRAY_LENGTHS_PUBLIC_DATA_WRITES_ROW_IDX = FF(385);
20 const auto constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_PUBLIC_DATA_WRITES_ROW_IDX = FF(4619);
21 const auto constants_DOM_SEP__PUBLIC_LEAF_SLOT = FF(1247650290);
22 const auto constants_DOM_SEP__PUBLIC_DATA_MERKLE = FF(3756303423UL);
23 const auto public_data_check_CLK_DIFF = in.get(C::public_data_check_not_end) *
24 (in.get(C::public_data_check_clk_shift) - in.get(C::public_data_check_clk));
25 const auto public_data_check_LEAF_EXISTS = (FF(1) - in.get(C::public_data_check_leaf_not_exists));
26 const auto public_data_check_LEAF_SLOT_LOW_LEAF_SLOT_DIFF =
27 (in.get(C::public_data_check_leaf_slot) - in.get(C::public_data_check_low_leaf_slot));
28 const auto public_data_check_NEXT_SLOT_IS_ZERO = (FF(1) - in.get(C::public_data_check_next_slot_is_nonzero));
29 const auto public_data_check_SHOULD_UPDATE = public_data_check_LEAF_EXISTS * in.get(C::public_data_check_write);
30
31 {
32 using View = typename std::tuple_element_t<0, ContainerOverSubrelations>::View;
33 auto tmp = static_cast<View>(in.get(C::public_data_check_sel)) *
34 (FF(1) - static_cast<View>(in.get(C::public_data_check_sel)));
35 std::get<0>(evals) += (tmp * scaling_factor);
36 }
37 { // TRACE_CONTINUITY
38 using View = typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
39 auto tmp = ((FF(1) - static_cast<View>(in.get(C::public_data_check_sel))) -
40 static_cast<View>(in.get(C::precomputed_first_row))) *
41 static_cast<View>(in.get(C::public_data_check_sel_shift));
42 std::get<1>(evals) += (tmp * scaling_factor);
43 }
44 {
45 using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
46 auto tmp = (static_cast<View>(in.get(C::public_data_check_not_end)) -
47 static_cast<View>(in.get(C::public_data_check_sel)) *
48 static_cast<View>(in.get(C::public_data_check_sel_shift)));
49 std::get<2>(evals) += (tmp * scaling_factor);
50 }
51 { // END_CONDITION
52 using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
53 auto tmp = (static_cast<View>(in.get(C::public_data_check_end)) -
54 (static_cast<View>(in.get(C::public_data_check_sel)) -
55 static_cast<View>(in.get(C::public_data_check_not_end))));
56 std::get<3>(evals) += (tmp * scaling_factor);
57 }
58 {
59 using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
60 auto tmp = static_cast<View>(in.get(C::public_data_check_protocol_write)) *
61 (FF(1) - static_cast<View>(in.get(C::public_data_check_protocol_write)));
62 std::get<4>(evals) += (tmp * scaling_factor);
63 }
64 {
65 using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
66 auto tmp = static_cast<View>(in.get(C::public_data_check_non_protocol_write)) *
67 (FF(1) - static_cast<View>(in.get(C::public_data_check_non_protocol_write)));
68 std::get<5>(evals) += (tmp * scaling_factor);
69 }
70 {
71 using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
72 auto tmp = static_cast<View>(in.get(C::public_data_check_write)) *
73 (FF(1) - static_cast<View>(in.get(C::public_data_check_write)));
74 std::get<6>(evals) += (tmp * scaling_factor);
75 }
76 {
77 using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
78 auto tmp = static_cast<View>(in.get(C::public_data_check_write)) *
79 (FF(1) - static_cast<View>(in.get(C::public_data_check_sel)));
80 std::get<7>(evals) += (tmp * scaling_factor);
81 }
82 { // PROTOCOL_WRITE_CHECK
83 using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
84 auto tmp = (static_cast<View>(in.get(C::public_data_check_write)) -
85 (static_cast<View>(in.get(C::public_data_check_protocol_write)) +
86 static_cast<View>(in.get(C::public_data_check_non_protocol_write))));
87 std::get<8>(evals) += (tmp * scaling_factor);
88 }
89 {
90 using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
91 auto tmp = static_cast<View>(in.get(C::public_data_check_discard)) *
92 (FF(1) - static_cast<View>(in.get(C::public_data_check_discard)));
93 std::get<9>(evals) += (tmp * scaling_factor);
94 }
95 { // CLK_DIFF_DECOMP
96 using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
97 auto tmp = (CView(public_data_check_CLK_DIFF) -
98 (static_cast<View>(in.get(C::public_data_check_clk_diff_lo)) +
99 FF(65536) * static_cast<View>(in.get(C::public_data_check_clk_diff_hi))));
100 std::get<10>(evals) += (tmp * scaling_factor);
101 }
102 {
103 using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
104 auto tmp = (FF(1) - static_cast<View>(in.get(C::public_data_check_write))) *
105 static_cast<View>(in.get(C::public_data_check_clk));
106 std::get<11>(evals) += (tmp * scaling_factor);
107 }
108 {
109 using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
110 auto tmp = static_cast<View>(in.get(C::public_data_check_sel)) *
111 (CView(constants_DOM_SEP__PUBLIC_LEAF_SLOT) -
112 static_cast<View>(in.get(C::public_data_check_siloing_separator)));
113 std::get<12>(evals) += (tmp * scaling_factor);
114 }
115 {
116 using View = typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
117 auto tmp = static_cast<View>(in.get(C::public_data_check_sel)) *
118 (static_cast<View>(in.get(C::public_data_check_const_three)) - FF(3));
119 std::get<13>(evals) += (tmp * scaling_factor);
120 }
121 {
122 using View = typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
123 auto tmp = static_cast<View>(in.get(C::public_data_check_sel)) *
124 (static_cast<View>(in.get(C::public_data_check_const_four)) - FF(4));
125 std::get<14>(evals) += (tmp * scaling_factor);
126 }
127 {
128 using View = typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
129 auto tmp = static_cast<View>(in.get(C::public_data_check_sel)) *
130 (static_cast<View>(in.get(C::public_data_check_merkle_hash_separator)) -
131 CView(constants_DOM_SEP__PUBLIC_DATA_MERKLE));
132 std::get<15>(evals) += (tmp * scaling_factor);
133 }
134 {
135 using View = typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
136 auto tmp = static_cast<View>(in.get(C::public_data_check_leaf_not_exists)) *
137 (FF(1) - static_cast<View>(in.get(C::public_data_check_leaf_not_exists)));
138 std::get<16>(evals) += (tmp * scaling_factor);
139 }
140 { // EXISTS_FLAG_CHECK
141 using View = typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
142 auto tmp =
143 static_cast<View>(in.get(C::public_data_check_sel)) *
144 ((CView(public_data_check_LEAF_SLOT_LOW_LEAF_SLOT_DIFF) *
145 (CView(public_data_check_LEAF_EXISTS) *
146 (FF(1) - static_cast<View>(in.get(C::public_data_check_leaf_slot_low_leaf_slot_diff_inv))) +
147 static_cast<View>(in.get(C::public_data_check_leaf_slot_low_leaf_slot_diff_inv))) -
148 FF(1)) +
149 CView(public_data_check_LEAF_EXISTS));
150 std::get<17>(evals) += (tmp * scaling_factor);
151 }
152 {
153 using View = typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
154 auto tmp = static_cast<View>(in.get(C::public_data_check_next_slot_is_nonzero)) *
155 (FF(1) - static_cast<View>(in.get(C::public_data_check_next_slot_is_nonzero)));
156 std::get<18>(evals) += (tmp * scaling_factor);
157 }
158 { // NEXT_SLOT_IS_ZERO_CHECK
159 using View = typename std::tuple_element_t<19, ContainerOverSubrelations>::View;
160 auto tmp = static_cast<View>(in.get(C::public_data_check_leaf_not_exists)) *
161 ((static_cast<View>(in.get(C::public_data_check_low_leaf_next_slot)) *
162 (CView(public_data_check_NEXT_SLOT_IS_ZERO) *
163 (FF(1) - static_cast<View>(in.get(C::public_data_check_next_slot_inv))) +
164 static_cast<View>(in.get(C::public_data_check_next_slot_inv))) -
165 FF(1)) +
166 CView(public_data_check_NEXT_SLOT_IS_ZERO));
167 std::get<19>(evals) += (tmp * scaling_factor);
168 }
169 { // LOW_LEAF_VALUE_UPDATE
170 using View = typename std::tuple_element_t<20, ContainerOverSubrelations>::View;
171 auto tmp = static_cast<View>(in.get(C::public_data_check_write)) *
172 (((static_cast<View>(in.get(C::public_data_check_low_leaf_value)) -
173 static_cast<View>(in.get(C::public_data_check_value))) *
174 static_cast<View>(in.get(C::public_data_check_leaf_not_exists)) +
175 static_cast<View>(in.get(C::public_data_check_value))) -
176 static_cast<View>(in.get(C::public_data_check_updated_low_leaf_value)));
177 std::get<20>(evals) += (tmp * scaling_factor);
178 }
179 { // LOW_LEAF_NEXT_INDEX_UPDATE
180 using View = typename std::tuple_element_t<21, ContainerOverSubrelations>::View;
181 auto tmp = static_cast<View>(in.get(C::public_data_check_write)) *
182 (((static_cast<View>(in.get(C::public_data_check_tree_size_before_write)) -
183 static_cast<View>(in.get(C::public_data_check_low_leaf_next_index))) *
184 static_cast<View>(in.get(C::public_data_check_leaf_not_exists)) +
185 static_cast<View>(in.get(C::public_data_check_low_leaf_next_index))) -
186 static_cast<View>(in.get(C::public_data_check_updated_low_leaf_next_index)));
187 std::get<21>(evals) += (tmp * scaling_factor);
188 }
189 { // LOW_LEAF_NEXT_SLOT_UPDATE
190 using View = typename std::tuple_element_t<22, ContainerOverSubrelations>::View;
191 auto tmp = static_cast<View>(in.get(C::public_data_check_write)) *
192 (((static_cast<View>(in.get(C::public_data_check_leaf_slot)) -
193 static_cast<View>(in.get(C::public_data_check_low_leaf_next_slot))) *
194 static_cast<View>(in.get(C::public_data_check_leaf_not_exists)) +
195 static_cast<View>(in.get(C::public_data_check_low_leaf_next_slot))) -
196 static_cast<View>(in.get(C::public_data_check_updated_low_leaf_next_slot)));
197 std::get<22>(evals) += (tmp * scaling_factor);
198 }
199 {
200 using View = typename std::tuple_element_t<23, ContainerOverSubrelations>::View;
201 auto tmp =
202 static_cast<View>(in.get(C::public_data_check_sel)) *
203 (static_cast<View>(in.get(C::public_data_check_tree_height)) - CView(constants_PUBLIC_DATA_TREE_HEIGHT));
204 std::get<23>(evals) += (tmp * scaling_factor);
205 }
206 { // VALUE_IS_CORRECT
207 using View = typename std::tuple_element_t<24, ContainerOverSubrelations>::View;
208 auto tmp =
209 (FF(1) - static_cast<View>(in.get(C::public_data_check_write))) *
210 (static_cast<View>(in.get(C::public_data_check_low_leaf_value)) * CView(public_data_check_LEAF_EXISTS) -
211 static_cast<View>(in.get(C::public_data_check_value)));
212 std::get<24>(evals) += (tmp * scaling_factor);
213 }
214 {
215 using View = typename std::tuple_element_t<25, ContainerOverSubrelations>::View;
216 auto tmp = (static_cast<View>(in.get(C::public_data_check_should_insert)) -
217 static_cast<View>(in.get(C::public_data_check_leaf_not_exists)) *
218 static_cast<View>(in.get(C::public_data_check_write)));
219 std::get<25>(evals) += (tmp * scaling_factor);
220 }
221 { // UPDATE_ROOT_VALIDATION
222 using View = typename std::tuple_element_t<26, ContainerOverSubrelations>::View;
223 auto tmp = CView(public_data_check_SHOULD_UPDATE) *
224 (static_cast<View>(in.get(C::public_data_check_write_root)) -
225 static_cast<View>(in.get(C::public_data_check_intermediate_root)));
226 std::get<26>(evals) += (tmp * scaling_factor);
227 }
228 {
229 using View = typename std::tuple_element_t<27, ContainerOverSubrelations>::View;
230 auto tmp = (static_cast<View>(in.get(C::public_data_check_tree_size_after_write)) -
231 (static_cast<View>(in.get(C::public_data_check_tree_size_before_write)) +
232 static_cast<View>(in.get(C::public_data_check_should_insert))));
233 std::get<27>(evals) += (tmp * scaling_factor);
234 }
235 { // WRITE_IDX_INITIAL_VALUE
236 using View = typename std::tuple_element_t<28, ContainerOverSubrelations>::View;
237 auto tmp = static_cast<View>(in.get(C::public_data_check_sel_shift)) *
238 (FF(1) - static_cast<View>(in.get(C::public_data_check_sel))) *
239 (CView(constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_PUBLIC_DATA_WRITES_ROW_IDX) -
240 static_cast<View>(in.get(C::public_data_check_write_idx_shift)));
241 std::get<28>(evals) += (tmp * scaling_factor);
242 }
243 {
244 using View = typename std::tuple_element_t<29, ContainerOverSubrelations>::View;
245 auto tmp = (static_cast<View>(in.get(C::public_data_check_non_discarded_write)) -
246 static_cast<View>(in.get(C::public_data_check_write)) *
247 (FF(1) - static_cast<View>(in.get(C::public_data_check_discard))));
248 std::get<29>(evals) += (tmp * scaling_factor);
249 }
250 {
251 using View = typename std::tuple_element_t<30, ContainerOverSubrelations>::View;
252 auto tmp = (FF(1) - static_cast<View>(in.get(C::public_data_check_non_discarded_write))) *
253 static_cast<View>(in.get(C::public_data_check_sel_write_to_public_inputs));
254 std::get<30>(evals) += (tmp * scaling_factor);
255 }
256 { // WRITE_IDX_INCREMENT
257 using View = typename std::tuple_element_t<31, ContainerOverSubrelations>::View;
258 auto tmp = static_cast<View>(in.get(C::public_data_check_not_end)) *
259 ((static_cast<View>(in.get(C::public_data_check_write_idx)) +
260 static_cast<View>(in.get(C::public_data_check_sel_write_to_public_inputs))) -
261 static_cast<View>(in.get(C::public_data_check_write_idx_shift)));
262 std::get<31>(evals) += (tmp * scaling_factor);
263 }
264 {
265 using View = typename std::tuple_element_t<32, ContainerOverSubrelations>::View;
266 auto tmp = static_cast<View>(in.get(C::public_data_check_sel)) *
267 (((static_cast<View>(in.get(C::public_data_check_write_idx)) -
268 CView(constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_PUBLIC_DATA_WRITES_ROW_IDX)) +
269 static_cast<View>(in.get(C::public_data_check_sel_write_to_public_inputs))) -
270 static_cast<View>(in.get(C::public_data_check_public_data_writes_length)));
271 std::get<32>(evals) += (tmp * scaling_factor);
272 }
273 {
274 using View = typename std::tuple_element_t<33, ContainerOverSubrelations>::View;
275 auto tmp = static_cast<View>(in.get(C::public_data_check_sel)) *
276 (CView(constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_ARRAY_LENGTHS_PUBLIC_DATA_WRITES_ROW_IDX) -
277 static_cast<View>(in.get(C::public_data_check_length_pi_idx)));
278 std::get<33>(evals) += (tmp * scaling_factor);
279 }
280}
281
282} // 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.