ACM Transactions on Programming Languages and Systems (TOPLAS)
An axiomatic basis for computer programming
Communications of the ACM
A Programming Logic for Sequential Java
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
A Trace Model for Pointers and Objects
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Semantics and Proof Theory of Pascal Procedures
Proceedings of the Fourth Colloquium on Automata, Languages and Programming
Hoare Logic for NanoJava: Auxiliary Variables, Side Effects, and Virtual Methods Revisited
FME '02 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods - Getting IT Right
Transition predicate abstraction and fair termination
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
rCOS: a refinement calculus of object systems
Theoretical Computer Science - Components and objects
Refinement and verification in component-based model-driven design
Science of Computer Programming
Graph transformations for object-oriented refinement
Formal Aspects of Computing
A Graph-Based Operational Semantics of OO Programs
ICFEM '09 Proceedings of the 11th International Conference on Formal Engineering Methods: Formal Methods and Software Engineering
rCOS: theory and tool for component-based model driven development
FSEN'09 Proceedings of the Third IPM international conference on Fundamentals of Software Engineering
Defining object-oriented execution semantics using graph transformations
FMOODS'06 Proceedings of the 8th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
Hi-index | 0.00 |
We are happy to contribute to this volume of essays in honor of He Jifeng on the occasion of his 70th birthday. This work combines and extends two recent pieces of work that He Jifeng has made significant contributions: the rCOS Relational Semantics of Object-Oriented Programs [4] and the Trace Model for Pointers and Objects [7]. It presents a graph-based Hoare Logic that deals with most general constructs of object-oriented (oo) programs such as assignment, object creation, local variable declaration and (possibly recursive) method invocation. The logic is built on a graph-based operational semantics of oo programs so that assertions are formalized as properties on graphs of execution states. We believe the logic is simple because 1) the use of graphs provides an intuitive visualization of states and executions of oo programs and thus it is helpful in thinking of and formulating clear specifications, 2) the logic follows almost the whole traditional Hoare Logic and the only exception is the backward substitution law which is not valid for oo programs, and 3) the mechanical implementation of the logic would not be much more difficult than traditional Hoare Logic. Despite the simplicity, the logic is powerful enough to reason about important oo properties such as aliasing and reachability.