Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
Theories of programming languages
Theories of programming languages
Calculating sharp adaptation rules
Information Processing Letters - Special issue in honor of Edsger W. Dijkstra
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Using data groups to specify and check side effects
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
The Craft of Programming
Refinement Calculus: A Systematic Introduction
Refinement Calculus: A Systematic Introduction
ESOP '86 Proceedings of the European Symposium on Programming
A Programming Logic for Sequential Java
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
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
Local Reasoning about Programs that Alter Data Structures
CSL '01 Proceedings of the 15th International Workshop on Computer Science Logic
Hoare Logics for Recursive Procedures and Unbounded Nondeterminism
CSL '02 Proceedings of the 16th International Workshop and 11th Annual Conference of the EACSL on Computer Science Logic
A complete axiomatic system for proving deductions about recursive programs
STOC '77 Proceedings of the ninth annual ACM symposium on Theory of computing
Separation and information hiding
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Towards Imperative Modules: Reasoning about Invariants and Sharing of Mutable State
LICS '04 Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science
Transition predicate abstraction and fair termination
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Permission accounting in separation logic
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Semantics of Separation-Logic Typing and Higher-Order Frame Rules
LICS '05 Proceedings of the 20th Annual IEEE Symposium on Logic in Computer Science
A logic for information flow in object-oriented programs
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A proof outline logic for object-oriented programming
Theoretical Computer Science - Formal methods for components and objects
Polymorphism and separation in hoare type theory
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
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
Information Hiding and Visibility in Interface Specifications
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Specification and verification challenges for sequential object-oriented programs
Formal Aspects of Computing
Encapsulating objects with confined types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modular typestate checking of aliased objects
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Modular verification of higher-order methods with mandatory calls specified by model programs
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
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
Separation logic, abstraction and inheritance
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Enhancing modular OO verification with separation logic
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Full functional verification of linked data structures
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Decision Procedures: An Algorithmic Point of View
Decision Procedures: An Algorithmic Point of View
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
Design patterns in separation logic
Proceedings of the 4th international workshop on Types in language design and implementation
Separation and information hiding
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hoare type theory, polymorphism and separation1
Journal of Functional Programming
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 Fresh Look at Separation Algebras and Share Accounting
APLAS '09 Proceedings of the 7th Asian Symposium on Programming Languages and Systems
Toward a verified relational database management system
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Structuring the verification of heap-manipulating programs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verifying event-driven programs using ramified frame properties
Proceedings of the 5th ACM SIGPLAN workshop on Types in language design and implementation
Using history invariants to verify observers
ESOP'07 Proceedings of the 16th European conference on Programming
The Why/Krakatoa/Caduceus platform for deductive program verification
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Shape analysis for composite data structures
CAV'07 Proceedings of the 19th international conference on Computer aided verification
An automatic verifier for Java-like programs based on dynamic frames
FASE'08/ETAPS'08 Proceedings of the Theory and practice of software, 11th international conference on Fundamental approaches to software engineering
A realizability model for impredicative Hoare type theory
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Verification of object-oriented software: The KeY approach
Verification of object-oriented software: The KeY approach
Automatic verification of Java programs with dynamic frames
Formal Aspects of Computing
Concurrent abstract predicates
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
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
Abstraction for concurrent objects
Theoretical Computer Science
Proceedings of the 5th ACM workshop on Programming languages meets program verification
Dynamic frames in java dynamic logic
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
Formal Aspects of Computing
Controlling object allocation using creation guards
FM'05 Proceedings of the 2005 international conference on Formal Methods
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
Specification and verification of encapsulation in java programs
FMOODS'05 Proceedings of the 7th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
Verification of object-oriented programs: A transformational approach
Journal of Computer and System Sciences
Dynamic frames: support for framing, dependencies and sharing without restrictions
FM'06 Proceedings of the 14th international conference on Formal Methods
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
A semantic foundation for hidden state
FOSSACS'10 Proceedings of the 13th international conference on Foundations of Software Science and Computational Structures
A verification methodology for model fields
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Local Reasoning for Global Invariants, Part I: Region Logic
Journal of the ACM (JACM)
Local Reasoning for Global Invariants, Part I: Region Logic
Journal of the ACM (JACM)
Hi-index | 0.00 |
Dedicated to the memory of John C. Reynolds (1935--2013). The hiding of internal invariants creates a mismatch between procedure specifications in an interface and proof obligations on the implementations of those procedures. The mismatch is sound if the invariants depend only on encapsulated state, but encapsulation is problematic in contemporary software due to the many uses of shared mutable objects. The mismatch is formalized here in a proof rule that achieves flexibility via explicit restrictions on client effects, expressed using ghost state and ordinary first order assertions. The restrictions amount to a stateful frame condition that must be satisfied by any client; this dynamic encapsulation boundary complements conventional scope-based encapsulation. The technical development is based on a companion article, Part I, that presents Region Logic---a programming logic with stateful frame conditions for commands.