VerCors: Verification of Concurrent Data Structures


Funded by: European Research Council
Duration: February 2011 until February 2016
Contact: prof.dr. M. Huisman

Publications:

Summary of the project

Increasing performance demands, application complexity and explicit multi-core parallelism makes concurrency omnipresent in software applications. However, due to the complex interferences between threads in an application, concurrent software is also notoriously hard to get correct. Instead of spending large amounts of money to fix incorrect software, formal techniques are needed to reason about the behaviour of concurrent programs.

In earlier work, we developed a variant of permission-based separation logic that is particularly suited to reason about multithreaded Java programs with dynamic thread creation and termination, and reentrant locks. The VerCors project will extend expressiveness of the logic, to specify and verify concurrent data structures. The verification logic will be parameterised over the locking policy, so that a high-level specification of the behaviour of a data structure can be reused for different implementations. Thus the implementation of a concurrent data structure can be changed, without affecting correctness of the applications using it.

The logic will also be parameterised with concurrency and synchronisation primitives, so that a logic for a different programming language can be defined as an instance of the general logic. It will also be adapted to reason about programs with benign data races, i.e., data races where the same value is written simultaneously by different threads. Also techniques to generate part of the specifications automatically will be developed. Finally, the logic will be adapted to a distributed setting, where data consistency between the different sites has to be maintained.

All results are integrated in a tool set that is available online. The tool generates and proves proof obligations automatically. It will be validated on realistic case studies.

For more general information about the project, see the overview presentation of the project, and a high-level description (in Dutch or in English). For more detailed information about the project, see the original project proposal: part B1 and part B2.

The VerCors project is supported by the European Resource Council        

Additional Resources

  1. High-level description in dutch
  2. High-level description in english
  3. Other documents overview presentation