Skip to content

Commit 264c3cc

Browse files
authored
chore(acir_formal_proofs): fix and re-run shl/shr (#21938)
Resolves #21845
2 parents fa49d9f + 9eac21d commit 264c3cc

2 files changed

Lines changed: 39 additions & 5 deletions

File tree

barretenberg/cpp/src/barretenberg/acir_formal_proofs/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ The verifier uses SMT (Satisfiability Modulo Theories) solving to formally verif
4141
| Binary::Or | Unsigned_32 | Unsigned_32 | 5.3 | 0.25 | ✓ | TermType::BVTerm | - | 20.03.2026 |
4242
| Binary::Or | Unsigned_128 | Unsigned_128 | 124 | 0.88 | ✓ | TermType::BVTerm | - | 20.03.2026 |
4343
| Binary::Or | Signed_64 | Signed_64 | 20.7 | - | ✓ | TermType::BVTerm | - | 20.03.2026 |
44-
| Binary::Shl | Unsigned_64 | Unsigned_8 | 43.9 | 2.53 | ✓ | TermType::BVTerm | - | 20.03.2026 |
45-
| Binary::Shl | Unsigned_32 | Unsigned_8 | FAILED | - | ✗ | TermType::BVTerm | ACIR changed in noir, see [#21845](https://github.com/AztecProtocol/aztec-packages/issues/21845) | 20.03.2026 |
44+
| Binary::Shl | Unsigned_64 | Unsigned_64 | 5000 | 12 | ✓ | TermType::BVTerm | - | 20.03.2026 |
45+
| Binary::Shl | Signed_64 | Signed_64 | 1116 | 6 | ✗ | TermType::BVTerm | - | 20.03.2026 |
4646
| Binary::Shl | Signed_8 | Signed_8 | 49.6 | 2.54 | ✓ | TermType::BVTerm | - | 20.03.2026 |
47-
| Binary::Shr | Unsigned_64 | Unsigned_8 | FAILED | - | ✗ | TermType::BVTerm | ACIR changed in noir, see [#21845](https://github.com/AztecProtocol/aztec-packages/issues/21845) | 20.03.2026 |
47+
| Binary::Shr | Unsigned_64 | Unsigned_64 | 4981 | ~10 | ✓ | TermType::BVTerm | - | 20.03.2026 |
4848
| Binary::Shr | Signed_8 | Signed_8 | 235 | - | ✓ | TermType::BVTerm | - | 20.03.2026 |
4949
| Binary::Sub | Unsigned_128 | Unsigned_128 | 4.1 | 0.23 | ✓ | TermType::BVTerm | - | 20.03.2026 |
5050
| Binary::Sub | Signed_64 | Signed_64 | 81.6 | 2.86 | ✓ | TermType::BVTerm | - | 20.03.2026 |

barretenberg/cpp/src/barretenberg/acir_formal_proofs/acir_loader.test.cpp

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ TEST(acir_formal_proofs, uint_terms_shl8)
287287
*/
288288
TEST(acir_formal_proofs, uint_terms_shl32)
289289
{
290-
std::string TESTNAME = "Binary::Shl_Unsigned_32_Unsigned_8";
290+
std::string TESTNAME = "Binary::Shl_Unsigned_32_Unsigned_32";
291291
AcirToSmtLoader loader = AcirToSmtLoader(ARTIFACTS_PATH + TESTNAME + ".acir");
292292
smt_solver::Solver solver = loader.get_smt_solver();
293293
smt_circuit::UltraCircuit circuit = loader.get_bitvec_smt_circuit(&solver);
@@ -306,7 +306,7 @@ TEST(acir_formal_proofs, uint_terms_shl32)
306306
*/
307307
TEST(acir_formal_proofs, uint_terms_shr)
308308
{
309-
std::string TESTNAME = "Binary::Shr_Unsigned_64_Unsigned_8";
309+
std::string TESTNAME = "Binary::Shr_Unsigned_64_Unsigned_64";
310310
AcirToSmtLoader loader = AcirToSmtLoader(ARTIFACTS_PATH + TESTNAME + ".acir");
311311
smt_solver::Solver solver = loader.get_smt_solver();
312312
smt_circuit::UltraCircuit circuit = loader.get_bitvec_smt_circuit(&solver);
@@ -652,6 +652,23 @@ TEST(AcirFormalProofs, SignedShl)
652652
}
653653
}
654654

655+
/**
656+
* @brief Test for i64 << i64
657+
*
658+
*/
659+
TEST(AcirFormalProofs, SignedShl64)
660+
{
661+
std::string TESTNAME = "Binary::Shl_Signed_64_Signed_64";
662+
AcirToSmtLoader loader = AcirToSmtLoader(ARTIFACTS_PATH + TESTNAME + ".acir");
663+
smt_solver::Solver solver = loader.get_smt_solver();
664+
smt_circuit::UltraCircuit circuit = loader.get_bitvec_smt_circuit(&solver);
665+
bool res = verify_shl64(&solver, circuit);
666+
EXPECT_FALSE(res);
667+
if (res) {
668+
save_buggy_witness(TESTNAME, circuit);
669+
}
670+
}
671+
655672
/**
656673
* @brief Test for i8 >> i8
657674
*
@@ -669,6 +686,23 @@ TEST(AcirFormalProofs, SignedShr)
669686
}
670687
}
671688

689+
/**
690+
* @brief Test for i64 >> i64
691+
*
692+
*/
693+
TEST(AcirFormalProofs, SignedShr64)
694+
{
695+
std::string TESTNAME = "Binary::Shr_Signed_64_Signed_64";
696+
AcirToSmtLoader loader = AcirToSmtLoader(ARTIFACTS_PATH + TESTNAME + ".acir");
697+
smt_solver::Solver solver = loader.get_smt_solver();
698+
smt_circuit::UltraCircuit circuit = loader.get_bitvec_smt_circuit(&solver);
699+
bool res = verify_shr(&solver, circuit);
700+
EXPECT_FALSE(res);
701+
if (res) {
702+
save_buggy_witness(TESTNAME, circuit);
703+
}
704+
}
705+
672706
/**
673707
* @brief Test for i64 - i64
674708
*

0 commit comments

Comments
 (0)