The Liskov substitution principle is one possible definition of subtype, a relation between datatypes. The name is commonly used in the field of object-oriented computer programming for the definition of subtype introduced by Barbara Liskov and Jeannette Wing in a 1993 paper titled Family Values: A Behavioral Notion of Subtyping. It was formulated in a subsequent paper (http://reports-archive.adm.cs.cmu.edu/anon/1999/CMU-CS-99-156.ps) as follows:
Let q(x) be a property provable about objects x of type T. Then q(y) should be true for objects y of type S where S is a subtype of T.
Thus, the notion of "subtype" is based on the notion of substitutability; that is, if S is a subtype of T, then objects of type T in a program may be replaced with objects of type S without altering any of the desirable properties of that program (e.g., correctness).
External links
Citeseer page for the original paper: http://citeseer.nj.nec.com/liskov94family.html
In object-oriented programming, the Liskov substitution principle is a particular definition of subtype that was introduced by Barbara Liskov and Jeannette Wing in a 1993 paper entitled Family Values: A Behavioral Notion of Subtyping.
Thus, Liskov and Wing's notion of "subtype" is based on the notion of substitutability; that is, if S is a subtype of T, then objects of type T in a program may be replaced with objects of type S without altering any of the desirable properties of that program (e.g., correctness).
A function using a class hierarchy violating the principle uses a reference to a base class but must know about all the derivatives of that base class.