A Fully Abstract Semantics and a Proof System for an ALGOL-Like Language with Sharing

In this paper we discuss the semantics of a simple block-structured programming language which allows sharing or aliasing. Sharing, which arises naturally in procedural languages which permit certain forms of parameter passing, has typically been regarded as problematical for the semantic treatment of a language. Difficulties have been encountered in both denotational and axiomatic treatments of sharing in the literature. Nevertheless, we find that it is possible to define a clean and elegant formal semantics for sharing. The key to our success is the choice of semantic model; we show that conventional approaches based on locations are less than satisfactory for the purposes of reasoning about partial correctness, and that in a well defined sense locations are unnecessary.

[1]  Joseph Y. Halpern A good Hoare axiom system for an ALGOL-like language , 1984, POPL '84.

[2]  Joseph Y. Halpern,et al.  The semantics of local storage, or what makes the free-list free?(Preliminary Report) , 1984, POPL '84.

[3]  C. A. R. Hoare,et al.  Procedures and parameters: An axiomatic approach , 1971, Symposium on Semantics of Algorithmic Languages.

[4]  G.D. Plotkin,et al.  LCF Considered as a Programming Language , 1977, Theor. Comput. Sci..

[5]  J. W. de Bakker,et al.  Mathematical theory of program correctness , 1980, Prentice-Hall international series in computer science.

[6]  P. J. Landin,et al.  Correspondence between ALGOL 60 and Church's Lambda-notation , 1965, Commun. ACM.

[7]  Joseph Y. Halpern,et al.  From Denotational to Operational and Axiomatic Semantics for ALGOL-like Languages: an Overview , 1983, Logic of Programs.

[8]  Robert Cartwright,et al.  Unrestricted procedure calls in Hoare's logic , 1978, POPL '78.

[9]  Robert D. Tennent Semantics of Interference Control , 1983, Theor. Comput. Sci..

[10]  Michael J. C. Gordon,et al.  The Denotational Description of Programming Languages , 1979, Springer New York.

[11]  Ernst-Rüdiger Olderog,et al.  Correctnes of Programs with Pascal-Like Procedures without Global Variables , 1984, Theor. Comput. Sci..

[12]  Robin Milner,et al.  Fully Abstract Models of Typed lambda-Calculi , 1977, Theor. Comput. Sci..

[13]  David Gries,et al.  The Multiple Assignment Statement , 1978, IEEE Transactions on Software Engineering.

[14]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

[15]  Stephen A. Cook,et al.  Soundness and Completeness of an Axiom System for Program Verification , 1978, SIAM J. Comput..

[16]  Matthew Hennessy,et al.  Full Abstraction for a Simple Parallel Programming Language , 1979, MFCS.

[17]  Krzysztof R. Apt,et al.  Ten Years of Hoare's Logic: A Survey—Part I , 1981, TOPL.

[18]  David Gries,et al.  Assignment and Procedure Call Proof Rules , 1980, TOPL.

[19]  Joe Stoy,et al.  Denotational Semantics , 1977 .

[20]  Edmund M. Clarke,et al.  Programming Language Constructs for Which It Is Impossible To Obtain Good Hoare Axiom Systems , 1979, JACM.

[21]  John C. Reynolds,et al.  The craft of programming , 1981, Prentice Hall International series in computer science.

[22]  Christopher Strachey,et al.  A theory of programming language semantics , 1976 .