Abstraction and specification in program development
Abstraction and specification in program development
Eiffel: the language
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
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)
A Programming Logic for Sequential Java
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
An overview of JML tools and applications
International Journal on Software Tools for Technology Transfer (STTT) - Special section on formal methods for industrial critical systems
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
Towards imperative modules: reasoning about invariants and sharing of mutable state
Theoretical Computer Science - Components and objects
Electronic Notes in Theoretical Computer Science (ENTCS)
ISEC '08 Proceedings of the 1st India software engineering conference
Reasoning about Object Structures Using Ownership
Verified Software: Theories, Tools, Experiments
The Spec# Programming System: Challenges and Directions
Verified Software: Theories, Tools, Experiments
Extensible Universes for Object-Oriented Data Models
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
An Extensible Encoding of Object-oriented Data Models in hol
Journal of Automated Reasoning
Specification and Verification of Invariants by Exploiting Layers in OO Designs
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P)
A termination analyzer for Java bytecode based on path-length
ACM Transactions on Programming Languages and Systems (TOPLAS)
Using history invariants to verify observers
ESOP'07 Proceedings of the 16th European conference on Programming
Boogie: a modular reusable verifier for object-oriented programs
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
Context-sensitive multivariant assertion checking in modular programs
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Assertion-based encapsulation, object invariants and simulations
FMCO'04 Proceedings of the Third international conference on Formal Methods for Components and Objects
Controlling object allocation using creation guards
FM'05 Proceedings of the 2005 international conference on Formal Methods
Formal methods for security: lightweight plug-in or new engineering discipline
FM'06 Proceedings of the 14th international conference on Formal Methods
Efficient object querying for java
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Specification and Verification of Invariants by Exploiting Layers in OO Designs
Fundamenta Informaticae - Concurrency Specification and Programming (CS&P)
A relational model of object collaborations and its use in reasoning about relationships
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Hi-index | 0.00 |
Object invariants describe the consistency of object-oriented data structures and are central to reasoning about the correctness of object-oriented software. But object invariants are not the only consistency conditions on which a program may depend. The data in object-oriented programs consists not just of object fields, but also of static fields, which hold data that is shared among objects. The consistency of static fields is described by static class invariants, which are enforced at the class level. Static class invariants can also mention instance fields, describing the consistency of dynamic data structures rooted in static fields. Sometimes there are even consistency conditions that relate the instance fields of many or all objects of a class; static class invariants describe these relations, too, since they cannot be enforced by any one object in isolation. This paper presents a systematic way (a methodology) for specifying and verifying static class invariants in object-oriented programs. The methodology supports the three major uses of static fields and invariants in the Java library. The methodology is amenable to static, modular verification and is sound.