Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Priority Inheritance Protocols: An Approach to Real-Time Synchronization
IEEE Transactions on Computers
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Separation and information hiding
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Transition predicate abstraction and fair termination
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Simplify: a theorem prover for program checking
Journal of the ACM (JACM)
Modular invariants for layered object structures
Science of Computer Programming - Special issue on source code analysis and manipulation (SCAM 2005)
Specification and verification challenges for sequential object-oriented programs
Formal Aspects of Computing
Invariants for Non-Hierarchical Object Structures
Electronic Notes in Theoretical Computer Science (ENTCS)
Regional Logic for Local Reasoning about Global Invariants
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Reasoning about comprehensions with first-order SMT solvers
Proceedings of the 2009 ACM symposium on Applied Computing
The need for flexible object invariants
International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming
Implicit Dynamic Frames: Combining Dynamic Frames and Separation Logic
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Dynamic frames: support for framing, dependencies and sharing without restrictions
FM'06 Proceedings of the 14th international conference on Formal Methods
Local reasoning and dynamic framing for the composite pattern and its clients
VSTTE'10 Proceedings of the Third international conference on Verified software: theories, tools, experiments
Verifying multi-object invariants with relationships
Proceedings of the 25th European conference on Object-oriented programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Separation predicates: a taste of separation logic in first-order logic
ICFEM'12 Proceedings of the 14th international conference on Formal Engineering Methods: formal methods and software engineering
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
The need for capability policies
Proceedings of the 15th Workshop on Formal Techniques for Java-like Programs
Hi-index | 0.00 |
We propose Considerate Reasoning, a novel specification and verification technique based on object invariants. This technique supports succinct specifications of implementations which follow the pattern of breaking properties of other objects and then notifying them appropriately. It allows the specification to be concerned only with the properties directly relevant to the current method call, with no need to explicitly mention the concerns of subcalls. In this way, the specification reflects the division of responsibility present in the implementation, and reflects what we regard as the natural argument behind the design. We specify and prove the well-known Composite design pattern using Considerate Reasoning. We show how to encode our approach in Boogie2. The resulting specification verifies automatically within a few seconds; no manual guidance is required beyond the careful representation of the invariants themselves.