State-of-the-art techniques used in Formal Verification ultimately rely on the expression of properties (of the system to verify) in terms of languages that can be easily understood and processed by automatic tools.
One of the most used languages nowadays is Boolean logic at the propositional level; its associated decision problem, SAT, has been extensively studied in the latest decade. The reason for the success of SAT is twofold: (i) the simplicity and flexibility of propositional logic and (ii) the availability of extremely efficient and robust tools for deciding SAT (SAT-Solvers).
Satisfiability Modulo Theories (SMT for short) is a novel paradigm that supports the encoding of formal properties at a higher level of expressiveness than Booleans. Beside propositional logic, the language (that comes with different flavors) allows for the expression of other useful theories, such as linear arithmetic, arrays and bit-vectors. The language of SMT can be therefore used to replace simple Boolean logic or to express properties that cannot be encoded into SAT.
As for SAT, the need for automatic tools in formal verification led to the development of SMT-Solvers. SMT-Solvers are based on the same engine of SAT-Solvers, and they integrate theory reasoning and Boolean reasoning in an elegant and effective framework.
The first goal of the project consists in the development of new efficient decision procedures for SMT, and in the application of SMT instead of SAT in the domain of Formal Verification.
From the point of view of Formal Verification, the problem of determining if a system respects a certain property can be effectively translated into verifying the satisfiability of a logic formula encoding both the system and the property.
In case the formula under examination does not admit a model, SMT-Solvers can be easily instructed to produce a certificate in the form of a propositional resolution proof of unsatisfiability, by keeping track of the steps performed while looking for such a model.
A remarkable application of resolution proofs within the field of Model Checking is related to the generation of mathematical objects called interpolants. We can think of a system as an encoding into the logic of a graph characterized by a set of initial states, a set of failure states (where the property of interest is violated) and a transition relation, which describes the connections among states. Interpolation can be then used as an alternative to the expensive exact computation, step by step, of the sets of states which are reachable from the initial ones.
State-of-the-art procedures for interpolation in SMT generate interpolants basing on the structure of resolution proofs of unsatisfiability. An important aspect of the project is the investigation of transformation techniques for resolution proofs, aimed at reducing the size and modifying the topology, in order to obtain interpolants of better quality in several theories of interest.
Our current results include papers , , , , and the OpenSMT tool, the SMT-solving framework we use for both research and experimentation.
- Incremental Verification by SMT-based Summary Repair
- Farkas-Based Tree Interpolation
- A Cooperative Parallelization Approach for Property-Directed k-Induction
- Decomposing Farkas Interpolants
- Lookahead-Based SMT Solving
- SMTS: Distributed, Visualized Constraint Solving
- Duality-based interpolation for quantifier-free equalities and uninterpreted functions
- LRA Interpolants from No Man's Land
- Theory Refinement for Program Verification
- HiFrog: SMT-based Function Summarization for Software Verification
- Clause Sharing and Partitioning for Cloud-Based SMT Solving
- PVAIR: Partial Variable Assignment InterpolatoR
- OpenSMT2: An SMT Solver for Multi-core and Cloud Computing
- Symbolic Detection of Assertion Dependencies for Bounded Model Checking
- Flexible Interpolation for Efficient Model Checking
- Search-Space Partitioning for Parallelizing SMT Solvers
- A Proof-Sensitive Approach for Small Propositional Interpolants
- Optimizing Function Summaries Through Interpolation. Validation of Evolving Software 2015
- PeRIPLO: A Framework for Producing Effective Interpolants in SAT-Based Software Verification
- A Scalable Decision Procedure for Fixed-Width Bit-Vectors, , International Conference of Computer Aided Design (ICCAD), San Jose (CA), ACM (2009)
- An Extension of the Davis-Putnam Procedure and its Application to Preprocessing in SMT, , 7th International Workshop on Satisfiability Modulo Theories (SMT), Montreal, Canada, ACM (2009)
- An Efficient and Flexible Approach to Resolution Proof Reduction, , Haifa Verification Conference (HVC), Haifa, Israel, Springer (2010)
- Flexible Interpolation with Local Proof Transformations, , International Conference of Computer Aided Design (ICCAD), San Jose, USA, IEEE Computer Society (2010)