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
5
6namespace bb::avm2 {
7
8template <typename FF_>
9template <typename ContainerOverSubrelations, typename AllEntities>
10void public_data_checkImpl<FF_>::accumulate(ContainerOverSubrelations& evals,
11 const AllEntities& in,
12 [[maybe_unused]] const RelationParameters<FF_>&,
13 [[maybe_unused]] const FF_& scaling_factor)
14{
15 using C = ColumnAndShifts;
16
17 PROFILE_THIS_NAME("accumulate/public_data_check");
18
19 const auto constants_PUBLIC_DATA_TREE_HEIGHT = FF(40);
20 const auto constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_ARRAY_LENGTHS_PUBLIC_DATA_WRITES_ROW_IDX = FF(374);
21 const auto constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_PUBLIC_DATA_WRITES_ROW_IDX = FF(615);
22 const auto constants_GENERATOR_INDEX__PUBLIC_LEAF_INDEX = FF(23);
23 const auto public_data_check_LEAF_EXISTS = (FF(1) - in.get(C::public_data_check_leaf_not_exists));
24 const auto public_data_check_LEAF_SLOT_LOW_LEAF_SLOT_DIFF =
25 (in.get(C::public_data_check_leaf_slot) - in.get(C::public_data_check_low_leaf_slot));
26 const auto public_data_check_NEXT_SLOT_IS_ZERO = (FF(1) - in.get(C::public_data_check_next_slot_is_nonzero));
27 const auto public_data_check_SHOULD_UPDATE = public_data_check_LEAF_EXISTS * in.get(C::public_data_check_write);
29 {
30 using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>;
31 auto tmp = in.get(C::public_data_check_sel) * (FF(1) - in.get(C::public_data_check_sel));
32 tmp *= scaling_factor;
33 std::get<0>(evals) += typename Accumulator::View(tmp);
34 }
35 { // START_CONDITION
36 using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>;
37 auto tmp = in.get(C::public_data_check_sel_shift) * (FF(1) - in.get(C::public_data_check_sel)) *
38 (FF(1) - in.get(C::precomputed_first_row));
39 tmp *= scaling_factor;
40 std::get<1>(evals) += typename Accumulator::View(tmp);
41 }
42 {
43 using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>;
44 auto tmp = (in.get(C::public_data_check_not_end) -
45 in.get(C::public_data_check_sel) * in.get(C::public_data_check_sel_shift));
46 tmp *= scaling_factor;
47 std::get<2>(evals) += typename Accumulator::View(tmp);
48 }
49 {
50 using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>;
51 auto tmp = (in.get(C::public_data_check_end) -
52 in.get(C::public_data_check_sel) * (FF(1) - in.get(C::public_data_check_sel_shift)));
53 tmp *= scaling_factor;
54 std::get<3>(evals) += typename Accumulator::View(tmp);
55 }
56 {
57 using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>;
58 auto tmp = in.get(C::public_data_check_write) * (FF(1) - in.get(C::public_data_check_write));
59 tmp *= scaling_factor;
60 std::get<4>(evals) += typename Accumulator::View(tmp);
61 }
62 {
63 using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>;
64 auto tmp = in.get(C::public_data_check_write) * (FF(1) - in.get(C::public_data_check_sel));
65 tmp *= scaling_factor;
66 std::get<5>(evals) += typename Accumulator::View(tmp);
67 }
68 {
69 using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>;
70 auto tmp = (in.get(C::public_data_check_clk_diff) -
71 in.get(C::public_data_check_not_end) *
72 (in.get(C::public_data_check_clk_shift) - in.get(C::public_data_check_clk)));
73 tmp *= scaling_factor;
74 std::get<6>(evals) += typename Accumulator::View(tmp);
75 }
76 {
77 using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>;
78 auto tmp = in.get(C::public_data_check_sel) * (FF(32) - in.get(C::public_data_check_constant_32));
79 tmp *= scaling_factor;
80 std::get<7>(evals) += typename Accumulator::View(tmp);
81 }
82 {
83 using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>;
84 auto tmp = (FF(1) - in.get(C::public_data_check_write)) * in.get(C::public_data_check_clk);
85 tmp *= scaling_factor;
86 std::get<8>(evals) += typename Accumulator::View(tmp);
87 }
88 {
89 using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>;
90 auto tmp = in.get(C::public_data_check_sel) *
91 (constants_GENERATOR_INDEX__PUBLIC_LEAF_INDEX - in.get(C::public_data_check_siloing_separator));
92 tmp *= scaling_factor;
93 std::get<9>(evals) += typename Accumulator::View(tmp);
94 }
95 {
96 using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>;
97 auto tmp =
98 in.get(C::public_data_check_leaf_not_exists) * (FF(1) - in.get(C::public_data_check_leaf_not_exists));
99 tmp *= scaling_factor;
100 std::get<10>(evals) += typename Accumulator::View(tmp);
101 }
102 { // EXISTS_FLAG_CHECK
103 using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>;
104 auto tmp = in.get(C::public_data_check_sel) *
105 ((public_data_check_LEAF_SLOT_LOW_LEAF_SLOT_DIFF *
106 (public_data_check_LEAF_EXISTS *
107 (FF(1) - in.get(C::public_data_check_leaf_slot_low_leaf_slot_diff_inv)) +
108 in.get(C::public_data_check_leaf_slot_low_leaf_slot_diff_inv)) -
109 FF(1)) +
110 public_data_check_LEAF_EXISTS);
111 tmp *= scaling_factor;
112 std::get<11>(evals) += typename Accumulator::View(tmp);
113 }
114 {
115 using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>;
116 auto tmp = in.get(C::public_data_check_next_slot_is_nonzero) *
117 (FF(1) - in.get(C::public_data_check_next_slot_is_nonzero));
118 tmp *= scaling_factor;
119 std::get<12>(evals) += typename Accumulator::View(tmp);
120 }
121 { // NEXT_SLOT_IS_ZERO_CHECK
122 using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>;
123 auto tmp = in.get(C::public_data_check_leaf_not_exists) *
124 ((in.get(C::public_data_check_low_leaf_next_slot) *
125 (public_data_check_NEXT_SLOT_IS_ZERO * (FF(1) - in.get(C::public_data_check_next_slot_inv)) +
126 in.get(C::public_data_check_next_slot_inv)) -
127 FF(1)) +
128 public_data_check_NEXT_SLOT_IS_ZERO);
129 tmp *= scaling_factor;
130 std::get<13>(evals) += typename Accumulator::View(tmp);
131 }
132 { // LOW_LEAF_VALUE_UPDATE
133 using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>;
134 auto tmp = in.get(C::public_data_check_write) *
135 (((in.get(C::public_data_check_low_leaf_value) - in.get(C::public_data_check_value)) *
136 in.get(C::public_data_check_leaf_not_exists) +
137 in.get(C::public_data_check_value)) -
138 in.get(C::public_data_check_updated_low_leaf_value));
139 tmp *= scaling_factor;
140 std::get<14>(evals) += typename Accumulator::View(tmp);
141 }
142 { // LOW_LEAF_NEXT_INDEX_UPDATE
143 using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>;
144 auto tmp =
145 in.get(C::public_data_check_write) *
146 (((in.get(C::public_data_check_tree_size_before_write) - in.get(C::public_data_check_low_leaf_next_index)) *
147 in.get(C::public_data_check_leaf_not_exists) +
148 in.get(C::public_data_check_low_leaf_next_index)) -
149 in.get(C::public_data_check_updated_low_leaf_next_index));
150 tmp *= scaling_factor;
151 std::get<15>(evals) += typename Accumulator::View(tmp);
152 }
153 { // LOW_LEAF_NEXT_SLOT_UPDATE
154 using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>;
155 auto tmp = in.get(C::public_data_check_write) *
156 (((in.get(C::public_data_check_leaf_slot) - in.get(C::public_data_check_low_leaf_next_slot)) *
157 in.get(C::public_data_check_leaf_not_exists) +
158 in.get(C::public_data_check_low_leaf_next_slot)) -
159 in.get(C::public_data_check_updated_low_leaf_next_slot));
160 tmp *= scaling_factor;
161 std::get<16>(evals) += typename Accumulator::View(tmp);
162 }
163 {
164 using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>;
165 auto tmp = in.get(C::public_data_check_sel) *
166 (in.get(C::public_data_check_tree_height) - constants_PUBLIC_DATA_TREE_HEIGHT);
167 tmp *= scaling_factor;
168 std::get<17>(evals) += typename Accumulator::View(tmp);
169 }
170 { // VALUE_IS_CORRECT
171 using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>;
172 auto tmp = (FF(1) - in.get(C::public_data_check_write)) *
173 (in.get(C::public_data_check_low_leaf_value) * public_data_check_LEAF_EXISTS -
174 in.get(C::public_data_check_value));
175 tmp *= scaling_factor;
176 std::get<18>(evals) += typename Accumulator::View(tmp);
177 }
178 {
179 using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>;
180 auto tmp = (in.get(C::public_data_check_leaf_not_exists) * in.get(C::public_data_check_write) -
181 in.get(C::public_data_check_should_insert));
182 tmp *= scaling_factor;
183 std::get<19>(evals) += typename Accumulator::View(tmp);
184 }
185 { // UPDATE_ROOT_VALIDATION
186 using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>;
187 auto tmp = public_data_check_SHOULD_UPDATE *
188 (in.get(C::public_data_check_write_root) - in.get(C::public_data_check_intermediate_root));
189 tmp *= scaling_factor;
190 std::get<20>(evals) += typename Accumulator::View(tmp);
191 }
192 {
193 using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>;
194 auto tmp = (in.get(C::public_data_check_tree_size_after_write) -
195 (in.get(C::public_data_check_tree_size_before_write) + in.get(C::public_data_check_should_insert)));
196 tmp *= scaling_factor;
197 std::get<21>(evals) += typename Accumulator::View(tmp);
198 }
199 { // WRITE_IDX_INITIAL_VALUE
200 using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>;
201 auto tmp = (FF(1) - in.get(C::public_data_check_sel)) * in.get(C::public_data_check_sel_shift) *
202 (constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_PUBLIC_DATA_WRITES_ROW_IDX -
203 in.get(C::public_data_check_write_idx_shift));
204 tmp *= scaling_factor;
205 std::get<22>(evals) += typename Accumulator::View(tmp);
206 }
207 {
208 using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>;
209 auto tmp = (in.get(C::public_data_check_nondiscaded_write) -
210 in.get(C::public_data_check_write) * (FF(1) - in.get(C::public_data_check_discard)));
211 tmp *= scaling_factor;
212 std::get<23>(evals) += typename Accumulator::View(tmp);
213 }
214 {
215 using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>;
216 auto tmp = (FF(1) - in.get(C::public_data_check_nondiscaded_write)) *
217 in.get(C::public_data_check_should_write_to_public_inputs);
218 tmp *= scaling_factor;
219 std::get<24>(evals) += typename Accumulator::View(tmp);
220 }
221 { // WRITE_IDX_INCREMENT
222 using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>;
223 auto tmp =
224 in.get(C::public_data_check_not_end) *
225 ((in.get(C::public_data_check_write_idx) + in.get(C::public_data_check_should_write_to_public_inputs)) -
226 in.get(C::public_data_check_write_idx_shift));
227 tmp *= scaling_factor;
228 std::get<25>(evals) += typename Accumulator::View(tmp);
229 }
230 {
231 using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>;
232 auto tmp = in.get(C::public_data_check_sel) *
233 (((in.get(C::public_data_check_write_idx) -
234 constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_PUBLIC_DATA_WRITES_ROW_IDX) +
235 in.get(C::public_data_check_should_write_to_public_inputs)) -
236 in.get(C::public_data_check_public_data_writes_length));
237 tmp *= scaling_factor;
238 std::get<26>(evals) += typename Accumulator::View(tmp);
239 }
240 {
241 using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>;
242 auto tmp = in.get(C::public_data_check_sel) *
243 (constants_AVM_PUBLIC_INPUTS_AVM_ACCUMULATED_DATA_ARRAY_LENGTHS_PUBLIC_DATA_WRITES_ROW_IDX -
244 in.get(C::public_data_check_length_pi_idx));
245 tmp *= scaling_factor;
246 std::get<27>(evals) += typename Accumulator::View(tmp);
247 }
248}
249
250} // namespace bb::avm2
static void accumulate(ContainerOverSubrelations &evals, const AllEntities &in, const RelationParameters< FF > &, const FF &scaling_factor)
ColumnAndShifts
Definition columns.hpp:35
AvmFlavorSettings::FF FF
Definition field.hpp:10
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
#define PROFILE_THIS_NAME(name)
Definition op_count.hpp:16
Container for parameters used by the grand product (permutation, lookup) Honk relations.