Locally Abstract, Globally Concrete Semantics of Concurrent Programming Languages

Language semantics that is formal and mathematically precise, is the essential prerequisite for the design of logics and calculi that permit automated reasoning about programs. The most popular approach to programming language semantics—small step operational semantics (SOS)—is not modular in the sense that it does not separate conceptual layers in the target language. SOS is also hard to relate formally to program logics and calculi. Minimalist semantic formalisms, such as automata, Petri nets, or \(\pi \)-calculus are inadequate for rich programming languages. We propose a new formal trace semantics for a concurrent, active objects language. It is designed with the explicit aim of being compatible with a sequent calculus for a program logic and has a strong model theoretic flavor. Our semantics separates sequential and object-local from concurrent computation: the former yields abstract traces which in a second stage are combined into global system behavior.

[1]  Stephen Brookes A semantics for concurrent separation logic , 2007, Theor. Comput. Sci..

[2]  Ludovic Henrio,et al.  Behavioural semantics for asynchronous components , 2017, J. Log. Algebraic Methods Program..

[3]  K. Rustan M. Leino,et al.  Dafny: An Automatic Program Verifier for Functional Correctness , 2010, LPAR.

[4]  Robbert Krebbers,et al.  A Typed C11 Semantics for Interactive Theorem Proving , 2015, CPP.

[5]  Johan Dovland,et al.  Observable behavior of distributed systems: Component reasoning for concurrent objects , 2012, J. Log. Algebraic Methods Program..

[6]  Filippo Bonchi,et al.  Bialgebraic Semantics for Logic Programming , 2015, Log. Methods Comput. Sci..

[7]  Sophia Drossopoulou,et al.  Describing the Semantics of Java and Proving Type Soundness , 1999, Formal Syntax and Semantics of Java.

[8]  Reiner Hähnle,et al.  KeY-ABS: A Deductive Verification Tool for the Concurrent Modelling Language ABS , 2015, CADE.

[9]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[10]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[11]  Reiner Hähnle,et al.  ABS: A Core Language for Abstract Behavioral Specification , 2010, FMCO.

[12]  Reiner Hähnle,et al.  A Dynamic Logic with Traces and Coinduction , 2015, TABLEAUX.

[13]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[14]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.

[15]  Frank S. de Boer,et al.  A Complete Guide to the Future , 2007, ESOP.

[16]  Olaf Owe,et al.  Compositional reasoning about active objects with shared futures , 2014, Formal Aspects of Computing.

[17]  Bernhard Beckert,et al.  Dynamic Logic for Java , 2016, Deductive Software Verification.

[18]  Reiner Hähnle,et al.  Visualizing Unbounded Symbolic Execution , 2014, TAP@STAF.

[19]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

[20]  Bernhard Beckert,et al.  Deductive Software Verification – The KeY Book , 2016, Lecture Notes in Computer Science.

[21]  Stephen D. Brookes,et al.  Traces, Pomsets, Fairness and Full Abstraction for Communicating Processes , 2002, CONCUR.

[22]  Claude Marché,et al.  The Why/Krakatoa/Caduceus Platform for Deductive Program Verification , 2007, CAV.

[23]  Tarmo Uustalu,et al.  A Hoare Logic for the Coinductive Trace-Based Big-Step Semantics of While , 2010, ESOP.