Title: Exploiting the SAT/SMT Revolution for Automated Software Verification
When: Tuesday, 02 November 2021 at 1900 hrs (IST)
Abstract:
In the last three decades, Boolean Satisfiability (SAT)
solvers, used as the backend of various verification engines,
experienced a dramatic performance revolution. SAT solvers can
now check formulas that contain millions of propositional
variables. In Satisfiability Modulo Theories (SMT) solvers,
predicates from various theories are not encoded using
propositional variables as in SAT but remain in the problem
formulation. Thus, SMT solvers can be used as backends for
solving the generated verification conditions to cope with
increasing software complexity. This talk will overview
automated software verification techniques that rely on
sophisticated SMT solvers built over efficient SAT solvers. I
will discuss challenges, problems, and recent advances to
ensure safety and security in embedded systems. I will describe
novel algorithms that exploit explicit-state and symbolic model
checking for verifying single- and multi-threaded software
using SMT solvers. These algorithms were the first to verify
multi-threaded C/Posix software based on shared-memory
synchronization and communication symbolically. These
algorithms are implemented in software verification tools, now
considered state-of-the-art in the software testing and
verification community, receiving 28 medals at SV-COMP and
Test-COMP. This achievement enabled industrial research
collaborations with Intel and Nokia. Software engineers applied
these tools to find real security vulnerabilities in
large-scale software systems (e.g., memory safety in firmware
for Intel and arithmetic overflow in telecommunication software
for Nokia, neither of which had been found before). Both were
fixed after being confirmed business-critical.