Reasoning about object-oriented programs that use subtypes

Programmers informally reason about object-oriented programs by using subtype relationships to classify the behavior of objects of different types and by letting supertypes stand for all their subtypes. We describe formal specification and verification techniques for such programs that mimic these informal ideas. Our techniques are modular and extend standard techniques for reasoning about programs that use abstract data types. Semantic restrictions on subtype relationships guarantee the soundness of these techniques.

[1]  W. Bowen,et al.  Philadelphia , 1892 .

[2]  Verzekeren Naar Sparen,et al.  Cambridge , 1969, Humphrey Burton: In My Own Time.

[3]  John V. Guttag,et al.  Notes on Type Abstraction (Version 2) , 1980, IEEE Transactions on Software Engineering.

[4]  John C. Reynolds,et al.  Using category theory to design implicit conversions and generic operators , 1980, Semantics-Directed Compiler Generation.

[5]  Dines Bjørner,et al.  Formal specification and software development , 1982 .

[6]  Jeannette M. Wing A TWO-TIERED APPROACH TO SPECIFYING PROGRAMS , 1983 .

[7]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[8]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[9]  Joseph A. Goguen,et al.  Parameterized Programming , 1984, IEEE Transactions on Software Engineering.

[10]  Richard Statman,et al.  Logical Relations and the Typed lambda-Calculus , 1985, Inf. Control..

[11]  John C. Reynolds,et al.  Three Approaches to Type Structure , 1985, TAPSOFT, Vol.1.

[12]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[13]  Gerald J. Sussman,et al.  Structure and interpretation of computer programs , 1985, Proceedings of the IEEE.

[14]  Alan Snyder Encapsulation and inheritance in object-oriented programming languages , 1986, OOPSLA 1986.

[15]  John C. Mitchell,et al.  Representation independence and data abstraction , 1986, POPL '86.

[16]  Andrew P. Black,et al.  Object structure in the Emerald system , 1986, OOPLSA '86.

[17]  James J. Horning,et al.  A Larch Shared Language Handbook , 1986, Sci. Comput. Program..

[18]  James J. Horning,et al.  Report on the Larch Shared Language , 1986, Sci. Comput. Program..

[19]  Jeannette M. Wing Writing Larch interface language specifications , 1987, TOPL.

[20]  J. Meseguer,et al.  Order-Sorted Algebra Solves the Constructor-Selector, Multiple Representation, and Coercion Problems , 1993, Inf. Comput..

[21]  Harald Ganzinger,et al.  Smalltalk-80 , 1987, it Inf. Technol..

[22]  Kim B. Bruce,et al.  An Algebraic Model of Subtype and Inheritance , 1990, DBPL.

[23]  S. E. Keene,et al.  A programmer's guide to object-oriented programming in Common LISP , 1988 .

[24]  Todd Leavens Gary Verifying object-oriented programs that use subtypes , 1989 .

[25]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[26]  Philip Wadler,et al.  How to make ad-hoc polymorphism less ad hoc , 1989, POPL '89.

[27]  Gary T. Leavens,et al.  Modular Verification of Object-Oriented Programs with Subtypes , 1990 .

[28]  P. America,et al.  A behavioural approach to subtyping in object-oriented programming languages , 1991 .