Cerberus

The Cerberus project is developing semantic models for a substantial fragment of C. It has several distinctive features:

Where the ISO C11 standard is clear and corresponds with practice, Cerberus aims to follow that.

Where there are ambiguities or differences, chiefly in the memory layout model (the behaviour of pointers, pointer arithmetic, uninitialised values, etc.), we aim to clarify the de facto standards and understand how the ISO standard could be reconciled with them.

Cerberus precisely defines the range of allowed behaviour, not just that of some specific implementation.

It is executable, to explore either all behaviours or single paths of small test programs.

Its thread-local semantics is factored via an elaboration into a simpler Core language, to make it readable and conceptually and mathematically tractable; the dynamic semantics of Core can be linked with various memory object models

The Cerberus front-end is written from scratch to closely follow the C11 standard, including a parser that follows the C11 standard grammar, and a typechecker.

The Cerberus BMC tool supports bounded model checking (for small examples), combining support for much of the Cerberus thread-local semantics, a modern memory object model, and an arbitrary axiomatic concurrency model.

A previous version of Cerberus supported integration with an operational concurrency model, proved equivalent to the C/C++11 axiomatic concurrency model of Batty et al.

Cerberus Web Interface

Cerberus BMC Web Interface

Papers

The C/C++ Memory Object Models: ISO WG21 papers

WG21 Cologne meeting, July 2019

The C Memory Object Model: ISO WG14 papers

WG14 London meeting, 2019-04

N2311

N2311: Exploring C Semantics and Pointer Provenance. Kayvan Memarian, Victor B. F. Gomes, Brooks Davis, Stephen Kell, Robert N. M. Watson, Peter Sewell. Identical to the above POPL 2019 paper text.

WG14 Pittsburgh meeting 2018-10

WG14 Brno meeting working drafts 2018-04

WG14 Brno pre-meeting mailing, 2018-04

WG14 Pittsburgh meeting, 2016-10

WG14 London meeting, 2016-04

Survey

People

Funding