Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Communicating sequential processes
Communicating sequential processes
A semantics of multiple inheritance
Information and Computation - Semantics of Data Types
Communication and concurrency
Science of Computer Programming
Two semantic models of object-oriented languages
Theoretical aspects of object-oriented programming
A denotational semantics of inheritance and its correctness
Information and Computation
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Calculating with pointer structures
Proceedings of the IFIP TC 2 WG 2.1 international workshop on Algorithmic languages and calculi
Analysis of pointer “rotation”
Communications of the ACM
Correspondence between ALGOL 60 and Church's Lambda-notation: part I
Communications of the ACM
SIMULA: an ALGOL-based simulation language
Communications of the ACM
A Theory of Objects
Verifying reachability invariants of linked structures
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
MPC '95 Mathematics of Program Construction
A Theory of Pointers for the UTP
Proceedings of the 5th international colloquium on Theoretical Aspects of Computing
The safety-critical Java memory model: a formal account
FM'11 Proceedings of the 17th international conference on Formal methods
Pointers and records in the unifying theories of programming
UTP'06 Proceedings of the First international conference on Unifying Theories of Programming
Hi-index | 0.00 |
Object-oriented programs [5, 6, 10] are notoriously prone to the following kinds of error, which could lead to increasingly severe problems in the presence of tasking: 1. Following a null pointer; 2. Deletion of an accessible object; 3. Failure to delete an inaccessible object; 4. Interference due to equality of pointers; and 5. Inhibition of optimisation due to fear of (4). Type disciplines and object classes are a great help in avoiding these errors. Stronger protection may be obtainable with the help of assertions, particularly invariants, which are intended to be true before and after each call of a method that updates the structure of the heap. This note introduces a mathematical model and language for the formulation of assertions about objects and pointers, and suggests that a graphical calculus [4] may help in reasoning about program correctness. It deals with both garbage-collected heaps and the other kind. The theory is based on a trace model of graphs, using ideas from process algebra; and our development seeks to exploit this analogy as a unifying principle.