CMP.14:2 - Problem
How can separately useful computations be connected so that their possible interactions produce the required behavior, and what must change when one component’s assumptions fail?
Two correct increments can lose an update. Retrying a request can repeat its effect. Individually finite operations can wait forever for one another. A replacement that returns the same final value can expose a different intermediate state to its neighbors. These failures concern the composition, so executing each component alone does not expose them.