1- #Formal Verification of ACIR Instructions
1+ # Formal Verification of ACIR Instructions
22
33This module provides formal verification capabilities for ACIR (Arithmetic Circuit Intermediate Representation) instructions generated from Noir SSA code.
44
@@ -20,31 +20,31 @@ The verifier uses SMT (Satisfiability Modulo Theories) solving to formally verif
2020
2121| Opcode | Lhs type/size | Rhs type/size | Time/seconds | Memory/GB | Success | SMT Term Type | Reason |
2222| ----------- | ------------- | ------------- | ------------ | --------- | ------- | ---------------- | ------------------------------------------------------------------------------------------------------------- |
23- | Binary::Add | Field | Field | 0.024 | - | &check ;
24- | TermType::FFTerm | | | Binary::Add | Unsigned_127 | Unsigned_127 | 2.8 | - | &check ;
25- | TermType::BVTerm | | | Binary::And | Unsigned_32 | Unsigned_32 | 6.7 | - | &check ;
26- | TermType::BVTerm | | | Binary::And | Unsigned_127 | Unsigned_127 | 7.5 | - | &cross ; | TermType::BVTerm | [ smt solver lookup doesnt support 2bits tables] ( https://github.com/AztecProtocol/aztec-packages/issues/11721 ) |
27- | Binary::Div | Field | Field | 0.024 | - | &check ; | TermType::FFTerm | |
28- | Binary::Div | Unsigned_126 | Unsigned_126 | 402.7 | 3.5 | &cross ; | TermType::BVTerm | [ Field and bitvector logic mixing ] ( https://github.com/AztecProtocol/aztec-packages/issues/11722 ) |
29- | Binary::Div | Signed_126 | Signed_126 | >17 days | 5.1 | &cross ; | TermType::BVTerm | [ Field and bitvector logic mixing ] ( https://github.com/AztecProtocol/aztec-packages/issues/11722 ) |
30- | Binary::Eq | Field | Field | 19.2 | - | &check ; | TermType::FFTerm | |
31- | Binary::Eq | Unsigned_127 | Unsigned_127 | 22.8 | - | &check ; | TermType::BVTerm | |
32- | Binary::Lt | Unsigned_127 | Unsigned_127 | 56.7 | - | &check ; | TermType::BVTerm | |
33- | Binary::Mod | Unsigned_127 | Unsigned_127 | - | 3.2 | &cross ; | TermType::BVTerm | [ Field and bitvector logic mixing ] ( https://github.com/AztecProtocol/aztec-packages/issues/11722 ) |
34- | Binary::Mul | Field | Field | 0.024 | - | &check ; | TermType::FFTerm | |
35- | Binary::Mul | Unsigned_127 | Unsigned_127 | 10.0 | - | &check ; | TermType::BVTerm | |
36- | Binary::Or | Unsigned_32 | Unsigned_32 | 18.0 | - | &check ; | TermType::BVTerm | |
23+ | Binary::Add | Field | Field | 0.024 | - | &check ; | TermType::FFTerm | - |
24+ | Binary::Add | Unsigned_127 | Unsigned_127 | 2.8 | - | &check ; | TermType::BVTerm | - |
25+ | Binary::And | Unsigned_32 | Unsigned_32 | 6.7 | - | &check ; | TermType::BVTerm | - |
26+ | Binary::And | Unsigned_127 | Unsigned_127 | 7.5 | - | &cross ; | TermType::BVTerm | [ smt solver lookup doesnt support 2bits tables] ( https://github.com/AztecProtocol/aztec-packages/issues/11721 ) |
27+ | Binary::Div | Field | Field | 0.024 | - | &check ; | TermType::FFTerm | - |
28+ | Binary::Div | Unsigned_126 | Unsigned_126 | >130 days | 20 | &cross ; | TermType::BVTerm | Test takes too long |
29+ | Binary::Div | Signed_126 | Signed_126 | >130 days | 20 | &cross ; | TermType::BVTerm | Test takes too long |
30+ | Binary::Eq | Field | Field | 19.2 | - | &check ; | TermType::FFTerm | - |
31+ | Binary::Eq | Unsigned_127 | Unsigned_127 | 22.8 | - | &check ; | TermType::BVTerm | - |
32+ | Binary::Lt | Unsigned_127 | Unsigned_127 | 56.7 | - | &check ; | TermType::BVTerm | - |
33+ | Binary::Mod | Unsigned_127 | Unsigned_127 | >130 days | 3.2 | &cross ; | TermType::BVTerm | Test takes too long |
34+ | Binary::Mul | Field | Field | 0.024 | - | &check ; | TermType::FFTerm | - |
35+ | Binary::Mul | Unsigned_127 | Unsigned_127 | 10.0 | - | &check ; | TermType::BVTerm | - |
36+ | Binary::Or | Unsigned_32 | Unsigned_32 | 18.0 | - | &check ; | TermType::BVTerm | - |
3737| Binary::Or | Unsigned_127 | Unsigned_127 | 7.5 | - | &cross ; | TermType::BVTerm | [ smt solver lookup doesnt support 2bits tables] ( https://github.com/AztecProtocol/aztec-packages/issues/11721 ) |
38- | Binary::Shl | Unsigned_64 | Unsigned_8 | 42331.61 | 63.2 | &check ; | TermType::BVTerm | |
39- | Binary::Shl | Unsigned_32 | Unsigned_8 | 4574.0 | 30 | &check ; | TermType::BVTerm | |
40- | Binary::Shr | Unsigned_64 | Unsigned_8 | 3927.88 | 10 | &check ; | TermType::BVTerm | |
41- | Binary::Sub | Unsigned_127 | Unsigned_127 | 3.3 | - | &check ; | TermType::BVTerm | |
42- | Binary::Xor | Unsigned_32 | Unsigned_32 | 14.7 | - | &check ; | TermType::BVTerm | |
38+ | Binary::Shl | Unsigned_64 | Unsigned_8 | 42331.61 | 63.2 | &check ; | TermType::BVTerm | - |
39+ | Binary::Shl | Unsigned_32 | Unsigned_8 | 4574.0 | 30 | &check ; | TermType::BVTerm | - |
40+ | Binary::Shr | Unsigned_64 | Unsigned_8 | 3927.88 | 10 | &check ; | TermType::BVTerm | - |
41+ | Binary::Sub | Unsigned_127 | Unsigned_127 | 3.3 | - | &check ; | TermType::BVTerm | - |
42+ | Binary::Xor | Unsigned_32 | Unsigned_32 | 14.7 | - | &check ; | TermType::BVTerm | - |
4343| Binary::Xor | Unsigned_127 | Unsigned_127 | 7.5 | - | &cross ; | TermType::BVTerm | [ smt solver lookup doesnt support 2bits tables] ( https://github.com/AztecProtocol/aztec-packages/issues/11721 ) |
44- | Not | Unsigned_127 | - | 0.2 | - | &check ; | TermType::BVTerm | |
45- | Cast | Field | Unsigned_64 | 0.05 | - | &check ; | TermType::FFTerm | |
46- | Cast | Unsigned_64 | Unsigned_8 | 0.07 | - | &check ; | TermType::BVTerm | |
47- | Cast | Unsigned_8 | Unsigned_64 | 0.6 | - | &check ; | TermType::BVTerm | |
44+ | Not | Unsigned_127 | - | 0.2 | - | &check ; | TermType::BVTerm | - |
45+ | Cast | Field | Unsigned_64 | 0.05 | - | &check ; | TermType::FFTerm | - |
46+ | Cast | Unsigned_64 | Unsigned_8 | 0.07 | - | &check ; | TermType::BVTerm | - |
47+ | Cast | Unsigned_8 | Unsigned_64 | 0.6 | - | &check ; | TermType::BVTerm | - |
4848
4949Each test attempts to find counterexamples that violate the expected behavior. A passing test indicates the operation is correctly implemented, while a failing test reveals potential issues.
5050
0 commit comments