Systems programming with Modula-3
Systems programming with Modula-3
ACM Transactions on Programming Languages and Systems (TOPLAS)
Object-oriented specification case studies
Object-oriented specification case studies
Toward reliable modular programs
Toward reliable modular programs
An axiomatic basis for computer programming
Communications of the ACM
A Theory of Objects
A Discipline of Programming
The Java Language Specification
The Java Language Specification
Verifying reachability invariants of linked structures
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A Logic of Object-Oriented Programs
TAPSOFT '97 Proceedings of the 7th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
Logical foundations for typed object-oriented languages
PROCOMET '98 Proceedings of the IFIP TC2/WG2.2,2.3 International Conference on Programming Concepts and Methods
Data abstraction and information hiding
ACM Transactions on Programming Languages and Systems (TOPLAS)
Programming methodology
Semantics and logic of object calculi
Theoretical Computer Science - Logic, semantics and theory of programming
Theoretical Computer Science
Specifying subtypes in SCJ programs
Proceedings of the 9th International Workshop on Java Technologies for Real-Time and Embedded Systems
CADE' 20 Proceedings of the 20th international conference on Automated Deduction
Hi-index | 0.00 |
This paper formalizes a small object-oriented programming notation. The notation features imperative commands where objects can be shared (aliased), and is rich enough to allow subtypes and recursive object types. The syntax, type checking rules, axiomatic semantics, and operational semantics of the notation are given. A soundness theorem showing the consistency between the axiomatic and operational semantics is stated and proved. A simple corollary of the soundness theorem demonstrates the soundness of the type system. Because of the way types, fields, and methods are declared, no extra effort is required to handle recursive object types.