Today’s software systems are increasingly complex, with high degree of concurrency and distribution. Given their size and complexity, applying formal verification techniques to guarantee their correctness is often impractical.

At the FORSE lab, we aim to bridge the gap between informal testing and full formal verification of software systems using lightweight formal methods. We develop automated software methods that incorporate the rigorous approaches of formal methods, combinatorics, and verification into practical tools for software analysis. Our methods aim to strike a balance between rigorous mathematical reasoning and practical usability by applying formal methods in a less complete and more flexible way to improve software reliability without the full cost and complexity of formal verification.

Our research develops automated software analysis and testing methods for large-scale software systems, including:

  • Decentralized consensus systems and blockchains
  • Distributed systems with weak consistency and weak isolation
  • Service-oriented, microservices architectures
  • Shared-memory multicore programs

Contact if you are interested in working on lightweight formal methods, automated reasoning, and software testing for analyzing concurrent and distributed software systems.