A Larch shared language handbook
Science of Computer Programming
Encapsulation and inheritance in object-oriented programming languages
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Reasoning about object-oriented programs that use subtypes
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Using category theory to design implicit conversions and generic operators
Semantics-Directed Compiler Generation, Proceedings of a Workshop
TRI-Ada '91 Proceedings of the conference on TRI-Ada '91: today's accomplishments; tomorrow's expectations
Introduction to the literature on object-oriented design, programming, and languages
ACM SIGPLAN OOPS Messenger
Specifications and their use in defining subtypes
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Inheritance of interface specifications (extended abstract)
IDL '94 Proceedings of the workshop on Interface definition languages
Typechecking and modules for multi-methods
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
The Larch/Smalltalk interface specification language
ACM Transactions on Software Engineering and Methodology (TOSEM)
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
Reuse through inheritance: a quantitative study of C++ software
SSR '95 Proceedings of the 1995 Symposium on Software reusability
Typechecking and modules for multimethods
ACM Transactions on Programming Languages and Systems (TOPLAS)
Models and languages for component description and reuse
ACM SIGSOFT Software Engineering Notes
On the Practical Need for Abstraction Relations to Verify Abstract Data Type Representations
IEEE Transactions on Software Engineering
Reliable software and communication: software quality, reliability, and safety
ICSE '93 Proceedings of the 15th international conference on Software Engineering
Formal specification of COTS-based software: a case study
SSR '99 Proceedings of the 1999 symposium on Software reusability
A system for predictable component-based software construction
High integrity software
Objects and classes in Algol-like languages
Information and Computation - FOOL V
Behavioural subtyping using invariants and constraints
Formal methods for distributed processing
Coping with Java Programming Stress
Computer
Using Term Rewriting to Verify Software
IEEE Transactions on Software Engineering
Behavioral Compatibility of Self-Typed Theories
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Semantics and logic of object calculi
Theoretical Computer Science - Logic, semantics and theory of programming
Journal of Functional Programming
A behavioural notion of subtyping for object-oriented programming in SPARK95
Ada-Europe'03 Proceedings of the 8th Ada-Europe international conference on Reliable software technologies
Validity invariants and effects
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Hi-index | 0.00 |
A method for modular specification and verification using the ideas of subtype and normal type is presented. The method corresponds to informal techniques used by object-oriented programmers. The key idea is that objects of a subtype must behave like objects of that type's supertypes. An example program is used to show the reasoning problems that supertype abstraction may cause and how the method resolves them. Subtype polymorphism is addressed, and specification and verification update is discussed. A set of syntactic and semantic constraints on subtype relationships, which formalize the intuition that each object of a subtype must behave like some object of each of its supertypes, is examined. These constraints are the key to the soundness of the method. To state them precisely, a formal model of abstract type specifications is used.