2011/01/05 by Benjamin Morandi, Morandi, Benjamin, Sebastian Nanz +3
Computer Science · #Action semantics #Artificial intelligence #Compiler #Computer science #Denotational semantics #Distributed #F.3.2 #FOS: Computer and information sciences #Formal Methods in Verification #Formal semantics (linguistics) #Logic, programming, and type systems #Operational semantics #Parallel #Parallel Computing and Optimization Techniques #Programming Languages (cs.PL) #Programming language #SCOOP #Semantics (computer science) #Specification language #Theoretical computer science #Variety (cybernetics) #and Cluster Computing (cs.DC) #cs.DC #cs.PL
paper · pdf · doi:10.48550/arxiv.1101.1038
openalex publication_date 2011/01/05 · arxiv created 2012/04/13 · arxiv updated 2015/03/17 · openalex created_date 2025/10/10 · openalex updated_date 2026/07/28
Operational semantics has established itself as a flexible but rigorous means to describe the meaning of programming languages. Oftentimes, it is felt necessary to keep a semantics small, for example to facilitate its use for model checking by avoiding state space explosion. However, omitting many details in a semantics typically makes results valid for a limited core language only, leaving a wide gap towards any real implementation. In this paper we present a full-fledged semantics of the concurrent object-oriented programming language SCOOP (Simple Concurrent Object-Oriented Programming). The semantics has been found detailed enough to guide an implementation of the SCOOP compiler and runtime system, and to detect and correct a variety of errors and ambiguities in the original informal specification and prototype implementation. In our formal specification, we use abstract data types with preconditions and axioms to describe the state, and introduce a number of special run-time operations to model the runtime system with our inference rules. This approach allows us to make our large formal specification manageable, providing a first step towards reference documents for specifying object-oriented languages based on operational semantics.