Eriskay : a programming language based on game semantics

We report on an ongoing project to design a strongly typed, class-based objectoriented language based around ideas from game semantics. Part of our goal is to create a powerful modern programming language whose clean semantic basis renders it amenable to work in program verification; however, we argue that our semantically inspired approach also yields benefits of more immediate relevance to programmers, such as expressive new language constructs and novel type systems for enforcing security properties of the language. We describe a simple-minded game model with a rich mathematical structure, and explain how this model may be used to guide the design of our language. We then focus on three specific areas where our approach appears to offer something new: linear types and continuations; observational equivalence for class types; and static control of the use of higher-order store. In a substantial appendix, we present the formal definition of a fragment of our language which embodies many of the innovative features of the full language.

[1]  Benjamin C. Pierce,et al.  A bisimulation for type abstraction and recursion , 2005, POPL '05.

[2]  Julian Rathke,et al.  A fully abstract may testing semantics for concurrent objects , 2005, Theor. Comput. Sci..

[3]  S. Abramsky Semantics of Interaction: an introduction to Game Semantics , 1997 .

[4]  S. Abramsky Game Semantics , 1999 .

[5]  Samson Abramsky,et al.  Call-by-Value Games , 1997, CSL.

[6]  Frank S. de Boer,et al.  Object Connectivity and Full Abstraction for a Concurrent Calculus of Classes , 2004, ICTAC.

[7]  Philip Wadler,et al.  Linear Types can Change the World! , 1990, Programming Concepts and Methods.

[8]  Andrew Barber,et al.  Dual Intuitionistic Linear Logic , 1996 .

[9]  David K. Gifford,et al.  Polymorphic effect systems , 1988, POPL '88.

[10]  John Longley,et al.  Reasoning About CBV Functional Programs in Isabelle/HOL , 2004, TPHOLs.

[11]  Uday S. Reddy,et al.  Objects as closures: abstract semantics of object-oriented languages , 1988, LISP and Functional Programming.

[12]  Jens Palsberg,et al.  Foundations of object-oriented languages , 1994, SIGP.

[13]  Peter W. O'Hearn,et al.  Linear Continuation-Passing , 2002, High. Order Symb. Comput..

[14]  Vitaly Shmatikov,et al.  A Core Calculus of Classes and Objects , 1999, MFPS.

[15]  Bart Jacobs,et al.  Reasoning about Java classes: preliminary report , 1998, OOPSLA '98.

[16]  Gordon Plotkin,et al.  Logical Full Abstraction and PCF , 2000 .

[17]  Luca Cardelli,et al.  Comparing Object Encodings , 1997, Inf. Comput..

[18]  John Longley,et al.  Universal Types and What They are Good For , 2003 .

[19]  Mitchell Wand Type inference for objects with instance variables and inheritance , 1994 .

[20]  Samson Abramsky,et al.  A fully abstract game semantics for general references , 1998, Proceedings. Thirteenth Annual IEEE Symposium on Logic in Computer Science (Cat. No.98CB36226).