128 for (
const auto& opcode : circuit.
opcodes) {
130 std::vector<uint32_t> witnesses;
131 collect_expression_witnesses(witnesses, assert_zero.value);
137 std::vector<uint32_t> witnesses;
138 collect_function_input_witness(witnesses, call.lhs);
139 collect_function_input_witness(witnesses, call.rhs);
140 witnesses.push_back(call.output.value);
144 std::vector<uint32_t> witnesses;
145 collect_function_input_witness(witnesses, call.lhs);
146 collect_function_input_witness(witnesses, call.rhs);
147 witnesses.push_back(call.output.value);
151 std::vector<uint32_t> witnesses;
152 collect_function_input_witness(witnesses, call.input);
156 std::vector<uint32_t> witnesses;
157 collect_function_inputs(witnesses, call.inputs);
158 collect_function_inputs(witnesses, *call.iv);
159 collect_function_inputs(witnesses, *call.key);
160 collect_witnesses(witnesses, call.outputs);
164 std::vector<uint32_t> witnesses;
165 collect_function_inputs(witnesses, *call.inputs);
166 collect_function_inputs(witnesses, *call.hash_values);
167 collect_witnesses(witnesses, *call.outputs);
171 std::vector<uint32_t> witnesses;
172 collect_function_inputs(witnesses, call.inputs);
173 collect_witnesses(witnesses, *call.outputs);
177 std::vector<uint32_t> witnesses;
178 collect_function_inputs(witnesses, call.inputs);
179 collect_witnesses(witnesses, *call.outputs);
183 std::vector<uint32_t> witnesses;
184 collect_function_inputs(witnesses, *call.hashed_message);
185 collect_function_inputs(witnesses, *call.signature);
186 collect_function_inputs(witnesses, *call.public_key_x);
187 collect_function_inputs(witnesses, *call.public_key_y);
188 collect_function_input_witness(witnesses, call.predicate);
189 witnesses.push_back(call.output.value);
193 std::vector<uint32_t> witnesses;
194 collect_function_inputs(witnesses, *call.hashed_message);
195 collect_function_inputs(witnesses, *call.signature);
196 collect_function_inputs(witnesses, *call.public_key_x);
197 collect_function_inputs(witnesses, *call.public_key_y);
198 collect_function_input_witness(witnesses, call.predicate);
199 witnesses.push_back(call.output.value);
203 std::vector<uint32_t> witnesses;
204 for (
size_t i = 0; i + 1 < call.points.size(); i += 3) {
205 collect_function_input_witness(witnesses, call.points[i]);
206 collect_function_input_witness(witnesses, call.points[i + 1]);
208 collect_function_inputs(witnesses, call.scalars);
209 collect_function_input_witness(witnesses, call.predicate);
211 witnesses.push_back((*call.outputs)[0].value);
212 witnesses.push_back((*call.outputs)[1].value);
216 std::vector<uint32_t> witnesses;
217 collect_function_input_witness(witnesses, (*call.input1)[0]);
218 collect_function_input_witness(witnesses, (*call.input1)[1]);
219 collect_function_input_witness(witnesses, (*call.input2)[0]);
220 collect_function_input_witness(witnesses, (*call.input2)[1]);
221 collect_function_input_witness(witnesses, call.predicate);
223 witnesses.push_back((*call.outputs)[0].value);
224 witnesses.push_back((*call.outputs)[1].value);
228 std::vector<uint32_t> witnesses;
229 collect_function_inputs(witnesses, *call.inputs);
230 collect_witnesses(witnesses, *call.outputs);
234 if (is_disabled_recursive_aggregation(call)) {
238 std::vector<uint32_t> witnesses;
239 collect_function_inputs(witnesses, call.verification_key);
240 collect_function_inputs(witnesses, call.proof);
241 collect_function_inputs(witnesses, call.public_inputs);
242 collect_function_input_witness(witnesses, call.key_hash);
243 collect_function_input_witness(witnesses, call.predicate);
247 std::vector<uint32_t> witnesses;
248 collect_function_inputs(witnesses, call.inputs);
249 collect_witnesses(witnesses, call.outputs);
252 black_box.value.value);
255 auto& witnesses = block_witnesses[memory_init.block_id.value];
256 collect_witnesses(witnesses, memory_init.init);
259 auto& witnesses = block_witnesses[memory_op.block_id.value];
260 witnesses.push_back(memory_op.op.index.value);
261 witnesses.push_back(memory_op.op.value.value);
268 for (
const auto& [_, witnesses] : block_witnesses) {