The Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called strong behavioral subtyping, that was initially introduced by Barbara Liskov in a 1987 conference keynote address titled Data abstraction and hierarchy.
Barbara Liskov and Jeannette Wing described the principle succinctly in a 1994 paper as follows:[1] Subtype Requirement: Let
Liskov substitution principle imposes some standard requirements on signatures that have been adopted in newer object-oriented programming languages (usually at the level of classes rather than types; see nominal vs. structural subtyping for the distinction): In addition to the signature requirements, the subtype must meet a number of behavioural conditions.
Both Meyer, and later Pierre America, who was the first to use the term behavioral subtyping, gave proof-theoretic definitions of some behavioral subtyping notions, but their definitions did not take into account aliasing that may occur in programming languages that support references or pointers.
Taking aliasing into account was the major improvement made by Liskov and Wing (1994), and a key ingredient is the history constraint.