11 for (
auto const& i : vals) {
12 info(i.first,
" = ", i.second);
18 auto a = circuit[
"a"];
19 auto b = circuit[
"b"];
20 auto c = circuit[
"c"];
23 bool res = solver->
check();
33 auto a = circuit[
"a"];
34 auto b = circuit[
"b"];
35 auto c = circuit[
"c"];
38 bool res = solver->
check();
48 auto a = circuit[
"a"];
49 auto b = circuit[
"b"];
50 auto c = circuit[
"c"];
53 bool res = solver->
check();
63 auto a = circuit[
"a"];
64 auto b = circuit[
"b"];
65 auto c = circuit[
"c"];
68 bool res = solver->
check();
78 auto a = circuit[
"a"];
79 auto b = circuit[
"b"];
80 auto c = circuit[
"c"];
85 bool res = solver->
check();
95 auto a = circuit[
"a"];
96 auto b = circuit[
"b"];
97 auto c = circuit[
"c"];
100 bool res = solver->
check();
110 auto a = circuit[
"a"];
111 auto b = circuit[
"b"];
112 auto c = circuit[
"c"];
115 bool res = solver->
check();
125 auto a = circuit[
"a"];
126 auto b = circuit[
"b"];
127 auto c = circuit[
"c"];
130 bool res = solver->
check();
140 auto a = circuit[
"a"];
141 auto b = circuit[
"b"];
142 auto c = circuit[
"c"];
145 bool res = solver->
check();
156 auto a = circuit[
"a"];
157 auto b = circuit[
"b"];
159 auto mask =
smt_terms::BVConst(
"170141183460469231731687303715884105727", solver, 10);
162 bool res = solver->
check();
172 auto a = circuit[
"a"];
173 auto b = circuit[
"b"];
174 auto c = circuit[
"c"];
177 bool res = solver->
check();
187 auto a = circuit[
"a"];
188 auto b = circuit[
"b"];
189 auto c = circuit[
"c"];
192 bool res = solver->
check();
202 auto a = circuit[
"a"];
203 auto b = circuit[
"b"];
204 auto c = circuit[
"c"];
205 auto cr =
shr(
a,
b, solver);
207 bool res = solver->
check();
217 auto a = circuit[
"a"];
218 auto b = circuit[
"b"];
219 auto c = circuit[
"c"];
222 bool res = solver->
check();
232 auto a = circuit[
"a"];
233 auto b = circuit[
"b"];
234 auto c = circuit[
"c"];
237 bool res = solver->
check();
247 auto a = circuit[
"a"];
248 auto b = circuit[
"b"];
249 auto c = circuit[
"c"];
252 bool res = solver->
check();
262 auto a = circuit[
"a"];
263 auto b = circuit[
"b"];
264 auto c = circuit[
"c"];
267 bool res = solver->
check();
277 auto a = circuit[
"a"];
278 auto b = circuit[
"b"];
279 auto c = circuit[
"c"];
280 auto cr =
idiv(
a,
b, bit_size, solver);
282 bool res = solver->
check();
301 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 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 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