34 std::vector<std::string> special_names;
35 info(
"Saving bug for op ", instruction_name);
51 for (uint i = 0; i < witness.size(); i++) {
65TEST(acir_formal_proofs, uint_terms_add)
67 std::string TESTNAME =
"Binary::Add_Unsigned_127_Unsigned_127";
83TEST(acir_formal_proofs, uint_terms_and)
85 std::string TESTNAME =
"Binary::And_Unsigned_127_Unsigned_127";
101TEST(acir_formal_proofs, uint_terms_and32)
103 std::string TESTNAME =
"Binary::And_Unsigned_32_Unsigned_32";
118TEST(acir_formal_proofs, uint_terms_div)
120 std::string TESTNAME =
"Binary::Div_Unsigned_126_Unsigned_126";
138TEST(acir_formal_proofs, uint_terms_eq)
140 std::string TESTNAME =
"Binary::Eq_Unsigned_127_Unsigned_127";
168TEST(acir_formal_proofs, uint_terms_lt)
170 std::string TESTNAME =
"Binary::Lt_Unsigned_127_Unsigned_127";
175 bool res1 =
verify_lt(&solver1, circuit1);
184 bool res2 =
verify_gt(&solver2, circuit2);
196TEST(acir_formal_proofs, uint_terms_mod)
198 std::string TESTNAME =
"Binary::Mod_Unsigned_126_Unsigned_126";
215TEST(acir_formal_proofs, uint_terms_mul)
217 std::string TESTNAME =
"Binary::Mul_Unsigned_127_Unsigned_127";
232TEST(acir_formal_proofs, uint_terms_or)
234 std::string TESTNAME =
"Binary::Or_Unsigned_127_Unsigned_127";
250TEST(acir_formal_proofs, uint_terms_or32)
252 std::string TESTNAME =
"Binary::Or_Unsigned_32_Unsigned_32";
269TEST(acir_formal_proofs, uint_terms_shl64)
271 std::string TESTNAME =
"Binary::Shl_Unsigned_64_Unsigned_8";
288TEST(acir_formal_proofs, uint_terms_shl32)
290 std::string TESTNAME =
"Binary::Shl_Unsigned_32_Unsigned_8";
307TEST(acir_formal_proofs, uint_terms_shr)
309 std::string TESTNAME =
"Binary::Shr_Unsigned_64_Unsigned_8";
325TEST(acir_formal_proofs, uint_terms_sub)
327 std::string TESTNAME =
"Binary::Sub_Unsigned_127_Unsigned_127";
342TEST(acir_formal_proofs, uint_terms_xor)
344 std::string TESTNAME =
"Binary::Xor_Unsigned_127_Unsigned_127";
359TEST(acir_formal_proofs, uint_terms_xor32)
361 std::string TESTNAME =
"Binary::Xor_Unsigned_32_Unsigned_32";
377TEST(acir_formal_proofs, uint_terms_not)
379 std::string TESTNAME =
"Not_Unsigned_127";
395TEST(acir_formal_proofs, field_terms_add)
397 std::string TESTNAME =
"Binary::Add_Field_0_Field_0";
413TEST(acir_formal_proofs, field_terms_div)
415 std::string TESTNAME =
"Binary::Div_Field_0_Field_0";
433TEST(acir_formal_proofs, field_terms_eq)
435 std::string TESTNAME =
"Binary::Eq_Field_0_Field_0";
461TEST(acir_formal_proofs, field_terms_mul)
463 std::string TESTNAME =
"Binary::Mul_Field_0_Field_0";
479TEST(acir_formal_proofs, integer_terms_div)
481 std::string TESTNAME =
"Binary::Div_Signed_126_Signed_126";
496TEST(acir_formal_proofs, non_uniqueness_for_casts_field_to_u64)
498 std::string TESTNAME =
"Cast_Field_0";
509TEST(acir_formal_proofs, non_uniqueness_for_casts_u64_to_u8)
511 std::string TESTNAME =
"Cast_Unsigned_64";
522TEST(acir_formal_proofs, non_uniqueness_for_casts_u8_to_u64)
524 std::string TESTNAME =
"Cast_Unsigned_8";
bool verify_buggy_witness(std::string instruction_name)
Verifies a previously saved witness file for correctness.
TEST(acir_formal_proofs, uint_terms_add)
Tests 127-bit unsigned addition Verifies that the ACIR implementation of addition is correct Executio...
const std::string ARTIFACTS_PATH
void save_buggy_witness(std::string instruction_name, smt_circuit::UltraCircuit circuit)
Saves witness data when a bug is found during verification.
Class for loading ACIR (Arithmetic Circuit Intermediate Representation) programs and converting them ...
smt_solver::Solver get_smt_solver()
Gets an SMT solver instance.
smt_circuit::UltraCircuit get_field_smt_circuit(smt_solver::Solver *solver)
Creates an SMT circuit for field operations.
bb::UltraCircuitBuilder get_circuit_builder()
Creates a circuit builder for the loaded program.
smt_circuit::UltraCircuit get_bitvec_smt_circuit(smt_solver::Solver *solver)
Creates an SMT circuit for bitvector operations.
smt_circuit::UltraCircuit get_integer_smt_circuit(smt_solver::Solver *solver)
Creates an SMT circuit for integer operations.
std::vector< FF > variables
static bool check(const Builder &circuit)
Check the witness satisifies the circuit.
Symbolic Circuit class for Standard Circuit Builder.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::vector< bb::fr > default_model_single(const std::vector< std::string > &special, smt_circuit::CircuitBase &c, const std::string &fname, bool pack)
Get pretty formatted result of the solver work.
std::vector< bb::fr > import_witness_single(const std::string &fname)
Import witness, obtained by solver, from file.