12 for (
auto const& i : vals) {
13 info(i.first,
" = ", i.second);
19 auto a = circuit[
"a"];
20 auto b = circuit[
"b"];
21 auto c = circuit[
"c"];
24 bool res = solver->
check();
34 auto a = circuit[
"a"];
35 auto b = circuit[
"b"];
36 auto c = circuit[
"c"];
39 bool res = solver->
check();
49 auto a = circuit[
"a"];
50 auto b = circuit[
"b"];
51 auto c = circuit[
"c"];
54 bool res = solver->
check();
64 auto a = circuit[
"a"];
65 auto b = circuit[
"b"];
66 auto c = circuit[
"c"];
69 bool res = solver->
check();
79 auto a = circuit[
"a"];
80 auto b = circuit[
"b"];
81 auto c = circuit[
"c"];
84 bool res = solver->
check();
94 auto a = circuit[
"a"];
95 auto b = circuit[
"b"];
96 auto c = circuit[
"c"];
99 bool res = solver->
check();
109 auto a = circuit[
"a"];
110 auto b = circuit[
"b"];
111 auto c = circuit[
"c"];
114 bool res = solver->
check();
124 auto a = circuit[
"a"];
125 auto b = circuit[
"b"];
126 auto c = circuit[
"c"];
131 bool res = solver->
check();
141 auto a = circuit[
"a"];
142 auto b = circuit[
"b"];
143 auto c = circuit[
"c"];
146 bool res = solver->
check();
156 auto a = circuit[
"a"];
157 auto b = circuit[
"b"];
158 auto c = circuit[
"c"];
161 bool res = solver->
check();
171 auto a = circuit[
"a"];
172 auto b = circuit[
"b"];
173 auto c = circuit[
"c"];
176 bool res = solver->
check();
186 auto a = circuit[
"a"];
187 auto b = circuit[
"b"];
188 auto c = circuit[
"c"];
191 bool res = solver->
check();
201 auto a = circuit[
"a"];
202 auto b = circuit[
"b"];
207 bool res = solver->
check();
218 auto a = circuit[
"a"];
219 auto b = circuit[
"b"];
221 auto mask =
smt_terms::BVConst(
"340282366920938463463374607431768211455", solver, 10);
224 bool res = solver->
check();
234 auto a = circuit[
"a"];
235 auto b = circuit[
"b"];
236 auto c = circuit[
"c"];
239 bool res = solver->
check();
249 auto a = circuit[
"a"];
250 auto b = circuit[
"b"];
251 auto c = circuit[
"c"];
254 bool res = solver->
check();
264 auto a = circuit[
"a"];
265 auto b = circuit[
"b"];
266 auto c = circuit[
"c"];
267 auto cr =
shl8(
a,
b, solver);
269 bool res = solver->
check();
279 auto a = circuit[
"a"];
280 auto b = circuit[
"b"];
281 auto c = circuit[
"c"];
282 auto cr =
shr(
a,
b, solver);
284 bool res = solver->
check();
294 auto a = circuit[
"a"];
295 auto b = circuit[
"b"];
296 auto c = circuit[
"c"];
299 bool res = solver->
check();
309 auto a = circuit[
"a"];
310 auto b = circuit[
"b"];
311 auto c = circuit[
"c"];
314 bool res = solver->
check();
324 auto a = circuit[
"a"];
325 auto b = circuit[
"b"];
326 auto c = circuit[
"c"];
329 bool res = solver->
check();
339 auto a = circuit[
"a"];
340 auto b = circuit[
"b"];
341 auto c = circuit[
"c"];
344 bool res = solver->
check();
354 auto a = circuit[
"a"];
355 auto b = circuit[
"b"];
356 auto c = circuit[
"c"];
357 auto cr =
idiv(
a,
b, bit_size, solver);
359 bool res = solver->
check();
378 bool res = solver->
check();
Class for loading ACIR (Arithmetic Circuit Intermediate Representation) programs and converting them ...
smt_circuit::CircuitSchema get_circuit_schema()
Gets the circuit schema from the loaded ACIR program.
Symbolic Circuit class for Standard Circuit Builder.
static std::pair< UltraCircuit, UltraCircuit > unique_witness_ext(CircuitSchema &circuit_info, Solver *s, TermType type, const std::vector< std::string > &equal={}, const std::vector< std::string > ¬_equal={}, const std::vector< std::string > &equal_at_the_same_time={}, const std::vector< std::string > ¬_equal_at_the_same_time={}, bool enable_optimizations=false)
Check your circuit for witness uniqueness.
std::unordered_map< std::string, std::string > model(std::unordered_map< std::string, cvc5::Term > &terms) const
Symbolic term element class.
smt_circuit::STerm shl8(smt_circuit::STerm v0, smt_circuit::STerm v1, smt_solver::Solver *solver)
Left shift operation with 8-bit truncation.
smt_circuit::STerm sub_signed(smt_circuit::STerm v0, smt_circuit::STerm v1, uint32_t bit_size)
Signed subtraction operation: c = a - b + truncate to bit_size bits.
smt_circuit::STerm shr(smt_circuit::STerm v0, smt_circuit::STerm v1, smt_solver::Solver *solver)
Right shift operation.
smt_circuit::STerm idiv(smt_circuit::STerm v0, smt_circuit::STerm v1, uint32_t bit_size, smt_solver::Solver *solver)
Signed division in noir-style.
smt_circuit::STerm add_signed(smt_circuit::STerm v0, smt_circuit::STerm v1, uint32_t bit_size)
smt_circuit::STerm mul_signed(smt_circuit::STerm v0, smt_circuit::STerm v1, uint32_t bit_size)
Signed multiplication operation: c = a * b + truncate to bit_size bits.
smt_circuit::STerm shl32(smt_circuit::STerm v0, smt_circuit::STerm v1, smt_solver::Solver *solver)
Left shift operation with 32-bit truncation.
smt_circuit::STerm shl64(smt_circuit::STerm v0, smt_circuit::STerm v1, smt_solver::Solver *solver)
Left shift operation with 64-bit truncation.
STerm BVConst(const std::string &val, Solver *slv, uint32_t base)
TermType
Allows to define three types of symbolic terms STerm - Symbolic Variables acting like a Finte Field e...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept