A Formal Reference for SCOOP

  • Benjamin Morandi
  • Sebastian Nanz
  • Bertrand Meyer
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7007)


Operational semantics is a flexible but rigorous means to describe the meaning of programming languages. Small semantics are often preferred, for example to facilitate model checking. However, omitting too many details in a semantics limits results to a core language only, leaving a wide gap towards real implementations. In this paper we present a comprehensive semantics of the concurrent programming model 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 operations to model the runtime system with our inference rules. This approach makes our large formal specification manageable, providing a first step towards reference documents for specifying concurrent object-oriented languages based on operational semantics.


Inference Rule Operational Semantic Current Object Formal Reference Actual Argument 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Ábrahám, E., de Boer, F.S., de Roever, W.-P., Steffen, M.: A compositional operational semantics for JavaMT. In: Dershowitz, N. (ed.) Verification: Theory and Practice. LNCS, vol. 2772, pp. 290–303. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  2. 2.
    Allen, E., Chase, D., Luchangco, V., Maessen, J.W., Steele Jr., G.L.: Object-oriented units of measurement. In: Conference on Object Oriented Programming Systems Languages and Applications, pp. 384–403 (2004)Google Scholar
  3. 3.
    Benton, N., Cardelli, L., Fournet, C.: Modern concurrency abstractions for C#. ACM Transactions on Programming Languages and Systems 26(5), 269–804 (2004)CrossRefzbMATHGoogle Scholar
  4. 4.
    Blumofe, R.D., Joerg, C.F., Kuszmaul, B.C., Leiserson, C.E., Randall, K.H., Zhou, Y.: Cilk: An efficient multithreaded runtime system. ACM SIGPLAN Notices 30(8), 207–216 (1995)CrossRefGoogle Scholar
  5. 5.
    Brooke, P.J., Paige, R.F., Jacob, J.L.: A CSP model of Eiffel’s SCOOP. Formal Aspects of Computing 19(4), 487–512 (2007)CrossRefzbMATHGoogle Scholar
  6. 6.
    Cenciarelli, P., Knapp, A., Reus, B., Wirsing, M.: An Event-Based Structural Operational Semantics of Multi-threaded Java. In: Alves-Foss, J. (ed.) Formal Syntax and Semantics of Java. LNCS, vol. 1523, pp. 157–200. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  7. 7.
    Charles, P., Grothoff, C., Saraswat, V., Donawa, C., Kielstra, A., Ebcioglu, K., von Praun, C., Sarkar, V.: X10: An object-oriented approach to non-uniform cluster computing. In: Conference on Object Oriented Programming Systems Languages and Applications, pp. 519–538 (2005)Google Scholar
  8. 8.
    Coffman, E.G., Elphick, M.J., Shoshani, A.: System deadlocks. ACM Computing Surveys 3(2), 67–78 (1971)CrossRefzbMATHGoogle Scholar
  9. 9.
    ECMA: ECMA-367 Eiffel: Analysis, design and programming language 2nd edn. Tech. rep., ECMA International (2006)Google Scholar
  10. 10.
    Ericsson Erlang website (2011),
  11. 11.
    Fournet, C., Gonthier, G.: The reflexive CHAM and the join-calculus. In: ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 372–385 (1996)Google Scholar
  12. 12.
    Gelernter, D., Carriero, N., Chandran, S., Chang, S.: Parallel programming in Linda. In: International Conference on Parallel Processing, pp. 255–263 (1985)Google Scholar
  13. 13.
    Hoare, C.A.R.: Communicating Sequential Processes. Prentice Hall (1985)Google Scholar
  14. 14.
    International Organization for Standardization: ISO/IEC 8652:1995 Ada. Tech. rep., International Organization for Standardization (1995)Google Scholar
  15. 15.
    Joyner, M., Chamberlain, B.L., Deitz, S.J.: Iterators in Chapel. In: International Parallel and Distributed Processing Symposium/International Parallel Processing Symposium (2006)Google Scholar
  16. 16.
    Khoshafian, S., Copeland, G.P.: Object identity. In: Conference on Object Oriented Programming Systems Languages and Applications. pp. 406–416 (1986)Google Scholar
  17. 17.
    Klein, G., Nipkow, T.: A machine-checked model for a Java-like language, virtual machine and compiler. ACM Transactions on Programming Languages and Systems 28(4), 619–695 (2006)CrossRefGoogle Scholar
  18. 18.
    Liskov, B., Zilles, S.: Programming with abstract data types. ACM SIGPLAN Notices 9(4), 50–59 (1974)CrossRefGoogle Scholar
  19. 19.
    Lochbihler, A.: Type safe nondeterminism – A formal semantics of Java threads. In: International Workshop on Foundations of Object-Oriented Languages (2008)Google Scholar
  20. 20.
    Meyer, B.: A three-level approach to data structure description, and notational framework. In: ACM-NBS Workshop on Data Abstraction, Databases and Conceptual Modelling, pp. 164–166 (1981)Google Scholar
  21. 21.
    Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice-Hall (1997)Google Scholar
  22. 22.
  23. 23.
    Milner, R.: Communicating and mobile systems: the π-calculus. Cambridge University Press (1999)Google Scholar
  24. 24.
    Morandi, B., Nanz, S., Meyer, B.: A comprehensive operational semantics of the SCOOP programming model (2011),
  25. 25.
    Nienaltowski, P.: Practical framework for contract-based concurrent object-oriented programming. Ph.D. thesis, ETH Zurich (2007)Google Scholar
  26. 26.
    Nordio, M., Calcagno, C., Müller, P., Meyer, B.: A Sound and Complete Program Logic for Eiffel. In: Oriol, M., Meyer, B. (eds.) TOOLS EUROPE 2009. LNBIP, vol. 33, pp. 195–214. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  27. 27.
    Odersky, M.: The Scala language specification version 2.8. Tech. rep., Swiss Federal Institute of Technology Lausanne (2010)Google Scholar
  28. 28.
    Ostroff, J.S., Torshizi, F.A., Huang, H.F., Schoeller, B.: Beyond contracts for concurrency. Formal Aspects of Computing 21(4), 319–346 (2008)CrossRefzbMATHGoogle Scholar
  29. 29.
    Plotkin, G.D.: A structural approach to operational semantics. The Journal of Logic and Algebraic Programming 60–61, 17–139 (2004)MathSciNetzbMATHGoogle Scholar
  30. 30.
    Schmidt, H.W., Chen, J.: Reasoning about concurrent objects. In: Asia-Pacific Software Engineering Conference, p. 86 (1995)Google Scholar
  31. 31.
    SCOOP website (2011),
  32. 32.
    SGS-THOMSON Microelectronics Limited: occam 2.1 reference manual. Tech. rep., SGS-THOMSON Microelectronics Limited (1995)Google Scholar
  33. 33.
    Torshizi, F., Ostroff, J.S., Paige, R.F., Chechik, M.: The SCOOP concurrency model in Java-like languages. In: Communicating Process Architectures, pp. 155–178. IOS (2009)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Benjamin Morandi
    • 1
  • Sebastian Nanz
    • 1
  • Bertrand Meyer
    • 1
  1. 1.Software EngineeringETH ZurichSwitzerland

Personalised recommendations