Verifying Concurrent Systems Code
Concurrent software is notoriously difficult to write correctly, so to increase confidence in it, it is often desirable to apply formal verification techniques. One technique that is especially promising for verifying concurrent software is concurrent separation logic (CSL), which uses reasoning principles based on resource ownership. However, even with CSL, verifying complex systems at scale (e.g., those with 1000s of lines of code) remains challenging. The reasons it remains challenging include,
- The manual proof effort required by many existing CSL frameworks.
- The inherent complexity of the target systems. Sophisticated systems may have custom, low-level synchronization logic, which may be deeply intertwined with domain logic, in the interest of performance.
We posit that a promising way to overcome (1) is, rather than using CSL directly, to use an ownership type system such as Rust’s, taking advantage of its sophisticated but efficient type-checking algorithms. To demonstrate this, we develop a full methodology, from theory to implementation, based around this core idea, showing that we can recover the rich reasoning principles of CSL in this setting. In particular, we show that this methodology is rich enough to support the verification of inherently complex systems as in (2).
Funding
SDI-CSCS: EP3: A Clean-Slate Software-Defined Approach for Enabling Elastic Security
Directorate for Computer & Information Science & Engineering
Find out more...Collaborative Research: FMitF: Track I: Simplifying End-to-End Verification of High-Performance Distributed Systems
Directorate for Computer & Information Science & Engineering
Find out more...History
Date
2024-08-16Degree Type
- Dissertation
Department
- Computer Science
Degree Name
- Doctor of Philosophy (PhD)