Programming in MODULA-2 (3rd corrected ed.)
Programming in MODULA-2 (3rd corrected ed.)
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Abstraction and specification in program development
Abstraction and specification in program development
Systematic software development using VDM
Systematic software development using VDM
The programming language Oberon
Software—Practice & Experience
Acta Informatica
The annotated C++ reference manual
The annotated C++ reference manual
Islands: aliasing protection in object-oriented languages
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Systems programming with Modula-3
Systems programming with Modula-3
Aspect: detecting bugs with abstract dependences
ACM Transactions on Software Engineering and Methodology (TOSEM)
Toward reliable modular programs
Toward reliable modular programs
Data groups: specifying the modification of extended state
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Virginity: a contribution to the specification of object-oriented software
Information Processing Letters
Constraints: a uniform approach to aliasing and typing
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Modular specification and verification techniques for object-oriented software components
Foundations of component-based systems
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Alias burying: unique variables without destructive reads
Software—Practice & Experience - Special issue on aliasing in object-oriented systems
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
Modular Verification of Data Abstractions with Shared Realizations
IEEE Transactions on Software Engineering
Recursive object types in a logic of object-oriented programs
Nordic Journal of Computing
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Upgrading the Pre- and Postcondition Technique
VDM '91 Proceedings of the 4th International Symposium of VDM Europe on Formal Software Development-Volume I: Conference Contributions - Volume I
SLIPE '85 Proceedings of the ACM SIGPLAN 85 symposium on Language issues in programming environments
An algebraic definition of simulation between programs
An algebraic definition of simulation between programs
Representation independence, confinement and access control [extended abstract]
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Stack-based access control and secure information flow
Journal of Functional Programming
Model variables: cleanly supporting abstraction in design by contract: Research Articles
Software—Practice & Experience
Ownership confinement ensures representation independence for object-oriented programs
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)
Towards imperative modules: reasoning about invariants and sharing of mutable state
Theoretical Computer Science - Components and objects
Observational purity and encapsulation
Theoretical Computer Science
Information Hiding and Visibility in Interface Specifications
ICSE '07 Proceedings of the 29th international conference on Software Engineering
A logical analysis of aliasing in imperative higher-order functions
Journal of Functional Programming
Ynot: dependent types for imperative programs
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Reasoning about Object Structures Using Ownership
Verified Software: Theories, Tools, Experiments
Verified Software: Theories, Tools, Experiments
The Spec# Programming System: Challenges and Directions
Verified Software: Theories, Tools, Experiments
A Hoare Logic for Call-by-Value Functional Programs
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Regional Logic for Local Reasoning about Global Invariants
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Separation and information hiding
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hoare type theory, polymorphism and separation1
Journal of Functional Programming
Traditional assignment considered harmful
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Dafny: an automatic program verifier for functional correctness
LPAR'10 Proceedings of the 16th international conference on Logic for programming, artificial intelligence, and reasoning
A refinement methodology for object-oriented programs
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
NFM'11 Proceedings of the Third international conference on NASA Formal methods
Enforcing structural invariants using dynamic frames
TACAS'11/ETAPS'11 Proceedings of the 17th international conference on Tools and algorithms for the construction and analysis of systems: part of the joint European conferences on theory and practice of software
Modular specification of encapsulated object-oriented components
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
Boogie: a modular reusable verifier for object-oriented programs
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
Data refinement with low-level pointer operations
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Symbolic execution with separation logic
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Modular verification of static class invariants
FM'05 Proceedings of the 2005 international conference on Formal Methods
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
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dynamic frames: support for framing, dependencies and sharing without restrictions
FM'06 Proceedings of the 14th international conference on Formal Methods
A verification methodology for model fields
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
Modeling the growth of complex software function dependency networks
Information Systems Frontiers
Formal semantics of model fields in annotation-based specifications
KI'12 Proceedings of the 35th Annual German conference on Advances in Artificial Intelligence
Local Reasoning for Global Invariants, Part I: Region Logic
Journal of the ACM (JACM)
Object ownership in program verification
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
This article describes an approach for verifying programs in the presence of data abstraction and information hiding, which are key features of modern programming languages with objects and modules. This article draws on our experience building and using an automatic program checker, and focuses on the property of modular soundness: that is, the property that the separate verifications of the individual modules of a program suffice to ensure the correctness of the composite program. We found this desirable property surprisingly difficult to achieve. A key feature of our methodology for modular soundness is a new specification construct: the abstraction dependency, which reveals which concrete variables appear in the representation of a given abstract variable, without revealing the abstraction function itself. This article discusses in detail two varieties of abstraction dependencies: static and dynamic. The article also presents a new technical definition of modular soundness as a monotonicity property of verifiability with respect to scope and uses this technical definition to formally prove the modular soundness of a programming discipline for static dependencies.