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
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Data abstraction and information hiding
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Model variables: cleanly supporting abstraction in design by contract: Research Articles
Software—Practice & Experience
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
ESC/Java2: uniting ESC/Java and JML
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Modular invariants for layered object structures
Science of Computer Programming - Special issue on source code analysis and manipulation (SCAM 2005)
Information Hiding and Visibility in Interface Specifications
ICSE '07 Proceedings of the 29th international conference on Software Engineering
BI-hyperdoctrines, higher-order separation logic, and abstraction
ACM Transactions on Programming Languages and Systems (TOPLAS) - Special Issue ESOP'05
Separation logic, abstraction and inheritance
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scalable Specification and Reasoning: Challenges for Program Logic
Verified Software: Theories, Tools, Experiments
The Spec# Programming System: Challenges and Directions
Verified Software: Theories, Tools, Experiments
Proving Consistency of Pure Methods and Model Fields
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Comprehending annotations on object-oriented programs using fractional permissions
International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming
Practical reasoning about invocations and implementations of pure methods
FASE'07 Proceedings of the 10th international conference on Fundamental approaches to software engineering
Modular shape analysis for dynamically encapsulated programs
ESOP'07 Proceedings of the 16th European conference on Programming
Using first-order theorem provers in the Jahob data structure verification system
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Structural abstraction of software verification conditions
CAV'07 Proceedings of the 19th international conference on Computer aided verification
An abstract domain for analyzing heap-manipulating low-level software
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Exploiting shared structure in software verification conditions
HVC'07 Proceedings of the 3rd international Haifa verification conference on Hardware and software: verification and testing
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 refinement methodology for object-oriented programs
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
Beyond assertions: advanced specification and verification with JML and ESC/Java2
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
JML’s rich, inherited specifications for behavioral subtypes
ICFEM'06 Proceedings of the 8th international conference on Formal Methods and Software Engineering
Dynamic frames: support for framing, dependencies and sharing without restrictions
FM'06 Proceedings of the 14th international conference on Formal Methods
Using the spec# language, methodology, and tools to write bug-free programs
Advanced Lectures on Software Engineering
Relaxing restrictions on invariant composition in the B method by ownership control a la SPEC#
Rigorous Methods for Software Construction and Analysis
Making specifications complete through models
Proceedings of the 2004 international conference on Architecting Systems with Trustworthy Components
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
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 II: Dynamic Boundaries
Journal of the ACM (JACM)
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 |
Model fields are specification-only fields that encode abstractions of the concrete state of a data structure. They allow specifications to describe the behavior of object-oriented programs without exposing implementation details. This paper presents a sound verification methodology for model fields that handles object-oriented features, supports data abstraction, and can be applied to a variety of realistic programs. The key innovation of the methodology is a novel encoding of model fields, where updates of the concrete state do not automatically change the values of model fields. Model fields are updated only by a special pack statement. The methodology guarantees that the specified relation between a model field and the concrete state of an object holds whenever the object is valid, that is, is known to satisfy its invariant. The methodology also improves on previous work in three significant ways: First, the formalization of model fields prevents unsoundness, even if an interface specification is inconsistent. Second, the methodology fully supports inheritance. Third, the methodology enables modular reasoning about frame properties without using explicit dependencies, which are not handled well by automatic theorem provers.