Verifying C11 Programs Operationally

11/22/2018
by   Simon Doherty, et al.
0

This paper develops an operational semantics for a release-acquire fragment of the C11 memory model with relaxed accesses. We show that the semantics is both sound and complete with respect to the axiomatic model. The semantics relies on a per-thread notion of observability, which allows one to reason about a weak memory C11 program in program order. On top of this, we develop a proof calculus for invariant-based reasoning, which we use to verify the release-acquire version of Peterson's mutual exclusion algorithm.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/30/2022

Implementing and Verifying Release-Acquire Transactional Memory (Extended Version)

Transactional memory (TM) is an intensively studied synchronisation para...
research
04/11/2018

A denotational account of C11-style memory

We introduce a denotational semantic framework for shared-memory concurr...
research
09/08/2021

SecRSL: Security Separation Logic for C11 Release-Acquire Concurrency (Extended version with technical appendices)

We present Security Relaxed Separation Logic (SecRSL), a separation logi...
research
07/20/2020

The Decidability of Verification under Promising 2.0

In PLDI'20, Lee et al. introduced the promising semantics PS 2.0 of the...
research
06/14/2022

Aeneas: Rust Verification by Functional Translation

We present Aeneas, a new verification toolchain for Rust programs based ...
research
11/02/2017

A Denotational Semantics for SPARC TSO

The SPARC TSO weak memory model is defined axiomatically, with a non-com...
research
01/15/2022

View-Based Owicki-Gries Reasoning for Persistent x86-TSO (Extended Version)

The rise of persistent memory is disrupting computing to its core. Our w...

Please sign up or login with your details

Forgot password? Click here to reset