Skip to content
Snippets Groups Projects
Forked from Verified Software / psvg.doc.ic.ac.uk
1372 commits behind the upstream repository.
index.md 1.71 KiB
title: Home
menu: true
menu_order: 1

Concurrent programs and libraries are ubiquitous in today's world of multi-core processor architectures. Reasoning about concurrent programs and verifying their correctness is increasingly important. However, reasoning about concurrent programs is a difficult problem. We have to take shared state that is being changed by multiple threads into account.

Our research agenda is to develop formal reasoning methods about concurrency with a focus on concurrent program logics. Recently, there have been various logics based on separation logic to verify functional correctness of fine-grained concurrent programs. We have played a significant role introducing {% cite_details Dinsdale-Young2010Concurrent --text Concurrent Abstract Predicates %}, the {% cite_details Dinsdale-Young2013Views --text Views framework %}, {% cite_details RochaPinto2014TaDA --text TaDA %}, {% cite_details Raad2015CoLoSL --text CoLoSL %}, {% cite_details Ntzik2015Fault --text Fault-tolerant Concurrent Separation Logic %} and {% cite_details RochaPinto2016Modular --text Total-TaDA %}. These logics have tackled a range of problems, ranging data abstraction, atomicity abstraction, fault-tolerance, terminal, as well as introducing more modular and compositional ways to reason about concurrent programs. We have applied these logics to verify large problems, such as data structures used in databases and java.util.concurrent, as well as specifying file systems.

We aim to continue improving the state-of-the-art with a focus on progress properties, specifying concurrency in POSIX filesystems, continuing improving our logics to tackle more advanced algorithms, and develop automated reasoning tools based on these logics.