Mandatory service dependency (source code)

= Mandatory service dependency
{title2=$u\to v$}

Fix the operation being considered and the conditions under which it must complete. A <mandatory service dependency> $u\to v$ means that completing the designated operation of $u$ requires $v$ to supply its designated service. Dependencies can be represented by a <directed graph>. The operation and conditions matter: an operation that can use an already retained result need not require a new response from its original source.

A <directed path> of mandatory dependencies propagates necessity. This follows by <mathematical induction> on the path length: one edge is the definition, and composing one further necessary condition gives the induction step. Consequently, if every replica requires the same component, losing that component can block the operation at every replica. Keeping copies of other components does not remove the shared requirement. Conversely, the availability of every dependency is not by itself a proof that an operation will complete.