A Complete Guide to the Future

  • Frank S. de Boer
  • Dave Clarke
  • Einar Broch Johnsen
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4421)


We present the semantics and proof system for an object-oriented language with active objects, asynchronous method calls, and futures. The language, based on Creol, distinguishes itself in that unlike active object models, it permits more than one thread of control within an object, though, unlike Java, only one thread can be active within an object at a given time and rescheduling occurs only at specific release points. Consequently, reestablishing an object’s monitor invariant is possible at specific well-defined points in the code. The resulting proof system shows that this approach to concurrency is simpler for reasoning than, say, Java’s multithreaded concurrency model. From a methodological perspective, we identify constructs which admit a simple proof system and those which require, for example, interference freedom tests.


Proof System Release Point Method Call Proof Theory Method Invocation 
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.


  1. 1.
    Ábrahám, E., et al.: An assertion-based proof system for multithreaded Java. TCS 331(2-3), 251–290 (2005)CrossRefzbMATHGoogle Scholar
  2. 2.
    Agha, G., Hewitt, C.: Actors: A conceptual foundation for concurrent object-oriented programming. In: Research Directions in Object-Oriented Programming, pp. 49–74. MIT Press, Cambridge (1987)Google Scholar
  3. 3.
    Brinch Hansen, P.: Java’s insecure parallelism. ACM SIGPLAN Notices 34(4), 38–45 (1999)CrossRefGoogle Scholar
  4. 4.
    Caromel, D., Henrio, L., Serpette, B.: Asynchronous and deterministic objects. In: Proceedings of the 31st ACM Symposium on Principles of Programming Languages (POPL’04), pp. 123–134. ACM Press, New York (2004)CrossRefGoogle Scholar
  5. 5.
    Clavel, M., et al.: Maude: Specification and programming in rewriting logic. Theoretical Computer Science 285, 187–243 (2002)CrossRefMathSciNetzbMATHGoogle Scholar
  6. 6.
    de Boer, F.S.: A WP-calculus for OO. In: Thomas, W. (ed.) ETAPS 1999 and FOSSACS 1999. LNCS, vol. 1578, pp. 135–149. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  7. 7.
    Dovland, J., Johnsen, E.B., Owe, O.: Verification of concurrent objects with asynchronous method calls. In: Proceedings of the IEEE International Conference on Software Science, Technology & Engineering (SwSTE’05), Feb. 2005, pp. 141–150. IEEE Computer Society Press, Los Alamitos (2005)CrossRefGoogle Scholar
  8. 8.
    Duarte, C.H.C.: Proof-theoretic foundations for the design of actor systems. Mathematical Structures in Computer Science 9(3), 227–252 (1999)CrossRefMathSciNetzbMATHGoogle Scholar
  9. 9.
    Felleisen, M., Hieb, R.: The revised report on the syntactic theories of sequential control and state. Theoretical Computer Science 103(2), 235–271 (1992)CrossRefMathSciNetzbMATHGoogle Scholar
  10. 10.
    Flanagan, C., Felleisen, M.: The semantics of future and an application. J. Funct. Program. 9(1), 1–31 (1999)CrossRefMathSciNetzbMATHGoogle Scholar
  11. 11.
    Flatt, M., Krishnamurthi, S., Felleisen, M.: A programmer’s reduction semantics for classes and mixins. In: Alves-Foss, J. (ed.) Formal Syntax and Semantics of Java. LNCS, vol. 1523, pp. 241–269. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  12. 12.
    Gerth, R., de Roever, W.P.: A proof system for concurrent ada programs. Sci. Comput. Program. 4(2), 159–204 (1984)CrossRefzbMATHGoogle Scholar
  13. 13.
    Halstead Jr., R.H.: Multilisp: A language for concurrent symbolic computation. ACM Transactions on Programming Languages and Systems 7(4), 501–538 (1985)CrossRefzbMATHGoogle Scholar
  14. 14.
    Baker Jr., H.G., Hewitt, C.: The incremental garbage collection of processes. SIGPLAN Notices (Proceeding of the Symposium on Artificial Intelligence Programming Languages) 12, 11 (1977)CrossRefGoogle Scholar
  15. 15.
    Hoare, C.A.R.: Monitors: An operating system structuring concept. Commun. ACM 17(10), 549–557 (1974)CrossRefzbMATHGoogle Scholar
  16. 16.
    Igarashi, A., Pierce, B.C., Wadler, P.: Featherweight Java: a minimal core calculus for Java and GJ. ACM Transactions on Programming Languages and Systems 23(3), 396–450 (2001)CrossRefGoogle Scholar
  17. 17.
    International Telecommunication Union. Open Distributed Processing — Reference Model parts 1–4. Technical report, ISO/IEC, Geneva (July 1995)Google Scholar
  18. 18.
    Johnsen, E.B., Owe, O., Yu, I.C.: Creol: A type-safe object-oriented model for distributed concurrent systems. Theoretical Computer Science 365(1–2), 23–66 (2006)CrossRefMathSciNetzbMATHGoogle Scholar
  19. 19.
    Lavender, R.G., Schmidt, D.C.: Active object: an object behavioral pattern for concurrent programming. In: Proc. Pattern Languages of Programs (1995)Google Scholar
  20. 20.
    Liskov, B.H., Shrira, L.: Promises: Linguistic support for efficient asynchronous procedure calls in distributed systems. In: Wise, D.S. (ed.) Proceedings of the SIGPLAN Conference on Programming Lanugage Design and Implementation (PLDI’88), Atlanta, GE, USA, June 1988, pp. 260–267. ACM Press, New York (1988)Google Scholar
  21. 21.
    Niehren, J., Schwinghammer, J., Smolka, G.: A concurrent lambda calculus with futures. Theoretical Computer Science 364, 338–356 (2006)CrossRefMathSciNetzbMATHGoogle Scholar
  22. 22.
    Reppy, J.H.: Concurrent Programming in ML. Cambridge University Press, Cambridge (1999)Google Scholar
  23. 23.
    Rossberg, A., et al.: Alice Through the Looking Glass. In: Trends in Functional Programming, vol. 5, pp. 79–96. Intellect Books, Bristol (Fev. 2006)Google Scholar
  24. 24.
    Van Roy, P., Haridi, S.: Concepts, Techniques, and Models of Computer Programming. MIT Press, Cambridge (Mar. 2004)Google Scholar
  25. 25.
    Welc, A., Jagannathan, S., Hosking, A.: Safe futures for Java. In: Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications (OOPSLA’05), pp. 439–453. ACM Press, New York (2005)CrossRefGoogle Scholar
  26. 26.
    Yonezawa, A., Briot, J.-P., Shibayama, E.: Object-oriented concurrent programming in ABCL/1. Sigplan Notices (Conference on Object-Oriented Programming Systems, Languages and Applications, OOPSLA’86) 21(11), 258–268 (1986)CrossRefGoogle Scholar

Copyright information

© Springer Berlin Heidelberg 2007

Authors and Affiliations

  • Frank S. de Boer
    • 1
  • Dave Clarke
    • 1
  • Einar Broch Johnsen
    • 2
  1. 1.CWI, AmsterdamThe Netherlands
  2. 2.Dept. of Informatics, University of OsloNorway

Personalised recommendations