The intuitive idea of a subtype is one whose objects provide all the behavior of objects of another type (the supertype) plus something extra. What is wanted here is something like the following substitution property: If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is substituted for o2, then S is a subtype of T. (直感的な考えでは、「サブタイプ」のオブジェクトは別の型(「スーパータイプ」)のオブジェクトのすべての振る舞いと、更に別の何かを備えたものである。 ここで必要とされるものは、以下に示す置換の性質のようなものだろう:型 S の各オブジェクト o1 に対し、型 T のオブジェクト o2 が存在し、T に関して定義されたすべてのプログラム P が o1 を o2 で置き換えても動作を変えない場合、S は T のサブタイプである。)
—B. Liskov、Data Abstraction and Hierarchy、Liskov 1988, p. 25, 3.3. Type Hierarchy
Let φ(x) be a property provable about objects x of type T. Then φ(y) should be true for objects y of type S where S is a subtype of T. (φ(x) を型 T のオブジェクト x に関して証明可能な性質とする。このとき、φ(y) は型 T のサブタイプ S のオブジェクト y について真でなければならない。)
—B. Liskov and J. Wing、A Behavioral Notion of Subtyping、Liskov & Wing 1994, p. 1812, 1. INTRODUCTION, Subtype Requirement
Liskov, Barbara (1988-05). “Data abstraction and hierarchy”. ACM SIGPLAN Notices23 (5): 17–34. doi:10.1145/62139.62141.
Liskov, Barbara; Wing, Jeannette (1994-11-01). “A behavioral notion of subtyping”. ACM Transactions on Programming Languages and Systems16 (6): 1811–1841. doi:10.1145/197320.197383.