# Barbara Liskov

> 1939– · Computer Scientist
>
> **Recorded contribution:** Liskov Substitution Principle; CLU language; data abstraction; Argus distributed language

## How to use this dossier

Read for a causal chain, not a hero story: inherited problem → contribution → mechanism → downstream capability → limit. Then close the page and complete the reconstruction exercise from memory.

## 1. Historical orientation

Barbara Liskov (born 1939) transformed programming-language and distributed-system design through data abstraction. Her CLU language separated an abstract type's public operations from its hidden representation and introduced iterators, exception mechanisms, and parameterized abstractions. With Jeannette Wing she later formulated a behavioral account of subtype substitutability now called the Liskov substitution principle. At MIT, Liskov also led Argus and Byzantine-fault-tolerance work. The principle is often reduced to 'subclasses should work,' but its real mechanism concerns behavioral contracts: a subtype must preserve what clients can rely on, not merely share method names.

## 2. The problem inherited

Programs depended directly on data representation, so representation changes spread through clients and nominal inheritance could produce subtypes that violated expected behavior.

## 3. The central contribution

Liskov made abstraction boundaries and behavioral substitutability explicit, enabling modules whose implementations change independently while client reasoning remains valid.

## 4. Reconstruct the mechanism

1. Define an abstract data type through operations, preconditions, postconditions, and invariants visible to clients.
2. Hide the concrete representation inside the implementation and maintain a representation invariant after every operation.
3. Allow a subtype only if it requires no stronger preconditions and guarantees no weaker postconditions than the supertype contract.
4. Preserve history and invariant properties so replacing a supertype value with a subtype cannot invalidate client proofs.

## 5. What changed downstream

- CLU influenced language support for abstract types, iterators, exceptions, generics, and object-oriented design.
- Behavioral subtyping became central to API design, verification, and interface contracts.
- Argus and later BFT work advanced reliable distributed programming.

## 6. Attribution, limits, and uncertainty

- Wing is co-author of the formal behavioral-subtyping formulation, and CLU and Argus were team projects.
- Real interfaces include performance, concurrency, timing, and side-channel expectations that simple contracts may omit.
- Some useful abstractions deliberately do not form subtype hierarchies; composition can be safer than inheritance.

## 7. Reconstruction lab

Specify a mutable Set contract and propose a LoggedSet subtype. Then test a tempting BoundedSet subtype against precondition and history rules, construct the client it breaks, and redesign it using composition.

## 8. Evidence trail

- [Barbara Liskov](https://www.csail.mit.edu/person/barbara-liskov) — MIT CSAIL
- [A Behavioral Notion of Subtyping](https://doi.org/10.1145/197320.197383) — ACM Transactions on Programming Languages and Systems

---

*Research checked 2026-08-09. Dates, roles, and claims about living people are historical snapshots. Linked sources remain the authority; this dossier is original instructional synthesis.*
