Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Ownership types for flexible alias protection
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Software—Practice & Experience - Special issue on aliasing in object-oriented systems
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
Representation independence and data abstraction
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Ownership types for safe programming: preventing data races and deadlocks
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Ownership, encapsulation and the disjointness of type and effect
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Ownership types for object encapsulation
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Capabilities for Sharing: A Generalisation of Uniqueness and Read-Only
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Forward Simulation for Data Refinement of Classes
FME '02 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods - Getting IT Right
Local Reasoning about Programs that Alter Data Structures
CSL '01 Proceedings of the 15th International Workshop on Computer Science Logic
Transition predicate abstraction and fair termination
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Recursive Polymorphic Types and Parametricity in an Operational Framework
LICS '05 Proceedings of the 20th Annual IEEE Symposium on Logic in Computer Science
Ownership confinement ensures representation independence for object-oriented programs
Journal of the ACM (JACM)
Small bisimulations for reasoning about higher-order imperative programs
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modular invariants for layered object structures
Science of Computer Programming - Special issue on source code analysis and manipulation (SCAM 2005)
Towards imperative modules: reasoning about invariants and sharing of mutable state
Theoretical Computer Science - Components and objects
Syntactic Logical Relations for Polymorphic and Recursive Types
Electronic Notes in Theoretical Computer Science (ENTCS)
A bisimulation for type abstraction and recursion
Journal of the ACM (JACM)
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Ownership transfer in universe types
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Regional Logic for Local Reasoning about Global Invariants
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
A Unified Framework for Verification Techniques for Object Invariants
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
jStar: towards practical verification for java
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
State-dependent representation independence
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Separation and information hiding
ACM Transactions on Programming Languages and Systems (TOPLAS)
VCC: A Practical System for Verifying Concurrent C
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Verification of Sequential and Concurrent Programs
Verification of Sequential and Concurrent Programs
A relational modal logic for higher-order stateful ADTs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Blaming the client: on data refinement in the presence of pointers
Formal Aspects of Computing
Dafny: an automatic program verifier for functional correctness
LPAR'10 Proceedings of the 16th international conference on Logic for programming, artificial intelligence, and reasoning
Formal Aspects of Computing
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Local verification of global invariants in concurrent programs
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
State based ownership, reentrance, and encapsulation
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Verifying a secure information flow analyzer
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Step-Indexed syntactic logical relations for recursive and quantified types
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Refactoring and representation independence for class hierarchies
Theoretical Computer Science
Hi-index | 0.00 |
A properly encapsulated data representation can be revised for refactoring or other purposes without affecting the correctness of client programs and extensions of a class. But encapsulation is difficult to achieve in object-oriented programs owing to heap based structures and reentrant callbacks. This chapter shows that it is achieved by a discipline using assertions and auxiliary fields to manage invariants and transferrable ownership. The main result is representation independence: a rule for modular proof of equivalence of class implementations.