Object Connectivity and Full Abstraction for a Concurrent Calculus of Classes

The concurrent object calculus has been investigated as a core calculus for imperative, object-oriented languages with multithreading and heap-allocated objects. The combination of this form of concurrency with objects corresponds to features known from the popular language Java. One distinctive feature, however, of the concurrent object calculus is that it is object-based, whereas the mainstream of object-oriented languages is class-based. This work explores the semantical consequences of introducing classes to the calculus. Considering classes as part of a component makes instantiation a possible interaction between component and environment. A striking consequence is that to characterize the observable behavior we must take connectivity information into account, i.e., the way objects may have knowledge of each other. In particular, unconnected environment objects can neither determine the absolute order of interaction and furthermore cannot exchange information to compare object identities. We formulate an operational semantics that incorporates the connectivity information into the scoping mechanism of the calculus. As instantiation itself is unobservable, objects are instantiated only when accessed for the first time (“lazy instantiation”). Furthermore we use a corresponding trace semantics for full abstraction wrt. a may-testing based notion of observability.

[1]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[2]  Andrew M. Pitts,et al.  Observable Properties of Higher Order Functions that Dynamically Create Local Names, or What's new? , 1993, MFCS.

[3]  Davide Sangiorgi,et al.  The Pi-Calculus - a theory of mobile processes , 2001 .

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

[5]  Matthew Hennessy,et al.  Algebraic theory of processes , 1988, MIT Press series in the foundations of computing.

[6]  Davide Sangiorgi,et al.  A Fully Abstract Model for the [pi]-calculus , 1996, Inf. Comput..

[7]  D. Walker,et al.  A Calculus of Mobile Processes, Part I , 1989 .

[8]  Ramesh Viswanathan,et al.  Full abstraction for first-order objects with recursive types and subtyping , 1998, Proceedings. Thirteenth Annual IEEE Symposium on Logic in Computer Science (Cat. No.98CB36226).

[9]  Andrew D. Gordon,et al.  A Concurrent Object Calculus: Reduction and Typing , 1998, HLCL.

[10]  Andrew D. Gordon,et al.  Compilation and equivalence of imperative objects , 1997, Journal of Functional Programming.

[11]  Davide Sangiorgi,et al.  A Fully-Abstract Model for the (cid:25) -calculus , 2022 .

[12]  D. Walker,et al.  A Calculus of Mobile Processes, Part Ii , 1989 .

[13]  Nobuko Yoshida,et al.  Graph Types for Monadic Mobile Processes , 1996, FSTTCS.

[14]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[15]  Julian Rathke,et al.  Java Jr: Fully Abstract Trace Semantics for a Core Java Language , 2005, ESOP.

[16]  V. Vinay,et al.  Proceedings of the 16th Conference on Foundations of Software Technology and Theoretical Computer Science , 1996 .

[17]  Robin Milner,et al.  Barbed Bisimulation , 1992, ICALP.

[18]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..