An operational and axiomatic semantics for non-determinism and sequence points in C

  • Authors:
  • Robbert Krebbers

  • Affiliations:
  • ICIS, Radboud University Nijmegen, Nijmegen, Netherlands

  • Venue:
  • Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
  • Year:
  • 2014

Quantified Score

Hi-index 0.00

Visualization

Abstract

The C11 standard of the C programming language does not specify the execution order of expressions. Besides, to make more effective optimizations possible (eg. delaying of side-effects and interleaving), it gives compilers in certain cases the freedom to use even more behaviors than just those of all execution orders. Widely used C compilers actually exploit this freedom given by the C standard for optimizations, so it should be taken seriously in formal verification. This paper presents an operational and axiomatic semantics (based on separation logic) for non-determinism and sequence points in C. We prove soundness of our axiomatic semantics with respect to our operational semantics. This proof has been fully formalized using the Coq proof assistant.