Probabilistic program analysis
We develop weakest precondition calculi for expected runtime analysis of randomised algorithms and exact inference in probabilistic programs. Extensions of separation logic support reasoning about randomised algorithms that manipulate dynamic data structures.
Parameter synthesis
Our tool Prophesy supports parameter synthesis for probabilistic models. Using these techniques, we have synthesised the optimal randomisation bias in Herman’s ring protocol, a self-stabilising distributed algorithm.
Dynamic data structures
Attestor verifies Java programs operating on dynamic data structures. It checks shape and correctness properties, supports reasoning about individual procedures, and provides visual feedback when properties are violated.
C-program verification
In industrial collaborations, we have developed software model checking for C programs in automation and verified automotive software components. Our tool NITWIT independently checks violation witnesses produced by software model checkers.
Safety-critical systems
COMPASS is a toolset for extended AADL, developed with FBK Trento and support from the European Space Agency. It applies formal verification to aerospace systems and has been evaluated on industrial case studies.