Dependency¶
Core Idea¶
Dependency is the directed relation in which one element relies on another being present, prior, compatible, or supplied — a structural asymmetry where A cannot proceed, function, be interpreted, or retain its value unless some condition on B is met, a relation Parnas (1972) made foundational to modular decomposition by treating "module A depends on module B" as the operational criterion governing which design changes propagate. [1] The relation has been formalized independently in five distinct intellectual traditions: graph-theoretic dependency analysis in compiler design (Aho, Lam, Sethi, and Ullman 2006), task-precedence modeling in operations research (Kelley and Walker 1959, who introduced the Critical Path Method), logical entailment in formal logic (Tarski 1936), semantic presupposition in philosophy of language (Strawson 1950), and obligate dependency in ecology (Janzen 1980). [2][3][4][5][6] The fact that these traditions converged on essentially the same structural notion — a directed reliance relation with a specifiable failure mode — without borrowing from each other is the strongest evidence that dependency is a substrate-independent prime rather than a domain-specific construct.
Dependencies can be material (downstream production needs upstream parts, the configuration Lee, Padmanabhan, and Whang (1997) showed amplifies demand variation through the bullwhip effect), informational (a downstream calculation needs an upstream input), temporal (a later event needs an earlier one to have occurred), logical (a theorem needs a lemma), semantic (a referring expression needs a referent, the relation Karttunen (1973) formalized in his account of presupposition projection), or institutional (a contractual obligation needs a triggering condition). [7][8] What unifies these is not the content of the relation but its shape: A depends on B, where some specifiable condition on B must hold, and where the violation of that condition impairs A in a documented failure mode. Without the failure-mode commitment, the relation degenerates into mere correlation or co-occurrence — both of which are symmetric and carry no asymmetric reliance.
Dependencies compose. A chain of dependencies — A depends on B depends on C — produces transitive reliance: A also depends on C, even though no direct relation was named. A graph of dependencies produces architecture: layered, modular, hierarchical, or cyclic, with topological sort — formalized in Cormen, Leiserson, Rivest, and Stein's (2009) treatment of directed acyclic graphs — providing the canonical algorithm for linearizing the compositional structure. [9] The compositional behavior is what lets analysts walk a dependency structure to compute critical paths, identify bottlenecks, detect cycles, and locate single points of failure — operations that recur in software build systems, project schedules, supply chains, biological pathways, legal-treaty ratification, and proof trees, all instances of the layered-dependency discipline Dijkstra (1968) introduced in his account of the THE-multiprogramming system. [10] The directed reliance is the atom; everything downstream is topology.
How would you explain it like I'm…
Needs Something Else
Relies On
Directed Reliance
Structural Signature¶
Dependency encodes the structural pattern: dependent element → dependency condition → relied-on element → direction → failure mode, the five-role schema that maps directly onto the directed-edge formalism Cormen, Leiserson, Rivest, and Stein (2009) use for dependency-graph algorithms. [9] Five named roles must be present for a relation to be a dependency rather than something looser. The dependent element is the thing that needs something. The relied-on element is the thing being needed. The dependency condition specifies what the relied-on element must satisfy (be present, be prior, be compatible, be true, be supplied). The direction is asymmetric: removing the relied-on impairs the dependent, but removing the dependent does not impair the relied-on. The failure mode names how the dependent breaks, stalls, or becomes ambiguous when the condition fails — and this is the commitment that separates a real dependency from a correlation, an association, or a co-occurrence.
Recurring features:
- Directed reliance of one element on another
- Asymmetric prerequisite or precondition relation
- Specifiable failure mode when the condition is unmet
- Transitive composition into chains and graphs
- Five-role structure: dependent, relied-on, condition, direction, failure mode
- Substrate-neutral relation populating dependency networks
The structural insight is robust across substrates: a software import statement, a task waiting on its predecessor, a proof citing a lemma, a referring expression presupposing a referent, an obligate symbiont and its host, a contract clause and its triggering signature — all instantiate the same five-role shape, an isomorphism Dijkstra (1968) anticipated when he argued that the same hierarchical dependency reasoning that organizes an operating system organizes any system whose layers can be reasoned about in isolation. [10] Naming the relation gives the analyst something concrete to walk: from any A, ask what does A depend on? and traverse to the prerequisites, then their prerequisites, recursively. This converts an opaque tangle into a navigable directed structure. The topology then yields the familiar derived phenomena: chains become transitive reliance, many-to-one becomes a bottleneck, mutual reliance becomes a cycle (usually a modeling error), and layered DAGs become architecture.
What It Is Not¶
Dependency is not a graph. A graph is the data structure — the set of nodes and edges — within which dependency relations can be represented. A network can contain many kinds of edges (correlations, similarities, symmetric ties, undirected affiliations), only some of which are dependencies. The graph is the container; the dependency is one kind of contents. Conflating the two leads analysts to assume that any node-and-edge representation captures the asymmetric reliance they care about, which it does not.
Dependency is also not a constraint. A constraint restricts the space of permissible states or actions; a dependency requires that a specific other element be supplied. A budget cap is a constraint; needing parts from a supplier is a dependency. The two can interact — a dependency can create a constraint downstream (B must hold, narrowing the option space) — but they foreground different things. Constraints answer "what is forbidden?"; dependencies answer "what is required?", a grammatical separation Holmes (1881) traced through contract doctrine, where consideration is a required precondition for enforceability rather than a constraint on the bargain's content. [11] A system can be heavily constrained yet have few dependencies (a regulated industry with autonomous firms), and heavily dependent yet face few constraints (a long supply chain operating in open markets).
Dependency is not causality, though the boundary is the one most worth careful attention. Causality is the productive, mechanism-mediated, time-asymmetric subtype of directed reliance — B's occurrence produces A's occurrence through a transmission of force, energy, information, or influence across time. Dependency is broader: it includes causality but also covers logical, contractual, and semantic reliance where no productive mechanism is in play. A proof depending on Lemma 2 involves no causal process — the lemma does not make the proof valid in any time-extended productive sense; the dependency is atemporal and constitutive. This is the substrate-furthest test case for the prime, and it is the case that establishes dependency as the umbrella and causality as one specific instance.
Dependency is not a mere correlation or co-occurrence. Two variables can co-occur reliably without one depending on the other (both may depend on a common cause). The directed-reliance commitment requires a specifiable failure mode: there must be a documented way A breaks when B fails. Without that, you have at most a statistical association.
Dependency does not imply tight coupling or fragility. A dependency can be loose (the dependent element degrades gracefully when the condition is unmet), redundant (multiple relied-on elements satisfy the same condition), or substitutable (the dependency condition can be satisfied by any of a class of suppliers). Tight coupling is a property a dependency can have; it is not the dependency itself.
Broad Use¶
- Software engineering: import graphs, build systems, transitive dependency resolution, package managers, dependency injection, version-conflict resolution, semantic versioning, and "dependency hell" — vocabulary whose modular-decomposition grounding traces to Parnas (1972). [1] The dependency vocabulary is so pervasive in software that practitioners sometimes assume it originated there; in fact, the operations-research formalism (PERT, CPM) predates the software usage by roughly a decade (Malcolm, Roseboom, Clark, and Fazar 1959).[12]
- Project management and operations: task interdependence, critical-path analysis, PERT networks, the theory of constraints (Goldratt 1984), bottleneck identification, Gantt-chart predecessor relations.[13]
- Supply chains and manufacturing: upstream component availability gates downstream production; just-in-time inventory amplifies dependency exposure; the bullwhip effect propagates demand variation through dependency chains.
- Logic and formal language: logical entailment (A ⊨ B means B depends on A for its truth in any model where A holds), sequent calculus, natural-deduction proofs as dependency trees from premises to conclusion.
- Linguistics and philosophy of language: semantic presupposition (a referring expression depends on the existence of its referent), implicature, anaphora resolution, scope dependency.
- Biology and ecology: obligate mutualism (one species cannot survive without another), biochemical pathway precursors, host-parasite reliance, trophic cascades when an upstream species in a food web is removed.
- Law and institutions: legal consideration (a contractual obligation depends on consideration having been exchanged), regulatory preconditions, treaty ratification chains, the doctrine of severability.
- Economics: factor-input dependency in production functions, complementary goods, network goods whose value depends on the installed base.
Clarity¶
A core function of "dependency" is to name the asymmetric reliance relation itself, separated cleanly from the things it is regularly confused with — a separation Parnas (1972) sharpened when he argued that a module's dependencies, not its size or its function, are what determine how design changes propagate. [1] It is not the graph of relations (that is network); it is not the productive mechanism that links cause to effect (that is causality); it is not a limit on what is permissible (that is constraint); it is not the historical accumulation shaping which relations exist now (that is path_dependence); it is not a prior assumption that a proposition takes for granted (that is presupposition, which is itself one kind of dependency). What dependency adds is the directed arrow A→B together with the failure-mode commitment — there is a specifiable way A breaks, stalls, or becomes ambiguous when B is unmet. That commitment is what separates a real dependency from a mere correlation, association, or co-occurrence.
The clarity move is to refuse the operator the temptation to use "depends on" loosely. When a stakeholder says "the rollout depends on stakeholder buy-in," the dependency-aware analyst presses: what specifically does the rollout require buy-in to supply, and what is the documented failure mode if buy-in is absent? If no failure mode can be named, the relation is not a dependency but an association — and treating it as a dependency leads to over-engineering (building escape valves for a relation that does not actually fail in a specifiable way) or to false reassurance (assuming the relation is captured when it is not).
Manages Complexity¶
Dependency gives a system a structure to walk. From any element A, the analyst asks what does A depend on? and traverses to its prerequisites, then their prerequisites, recursively — the same downward-walking discipline Dijkstra (1968) used to argue that each layer of the THE system could be understood by reference only to the layer immediately below. [10] This converts an opaque tangle of elements into a navigable directed graph with five named roles, and once those roles are present, downstream phenomena fall out by topology: chains become transitive reliance, cycles become circular dependencies (almost always a modeling error worth fixing), many-to-one fan-in becomes a bottleneck whose failure cascades widely, and layered DAGs become architecture. Naming the relation lets the analyst see the topology rather than only the elements.
The complexity-management payoff is concrete. A software team confronted with a build that takes two hours can ask "which targets depend on which?" and identify parallelizable subgraphs. A project manager confronted with a slipping deadline can compute the critical path and locate the one task whose delay propagates to the end date. A supply-chain analyst can identify the single supplier whose failure would halt the most downstream production. A logician can compute the minimal set of lemmas needed to prove a theorem. The same operation — walk the dependency structure, compute the closure, find the bottleneck — recurs across all of these, and it is the asymmetric directed reliance that makes the walk meaningful.
Abstract Reasoning¶
Dependency supports the counterfactual "if B were removed or violated, A would fail in this specific way." That is the move that lets engineers compute critical paths, lawyers identify contract preconditions, biologists predict cascading extinctions, and logicians track entailment. Across substrates, the same abstract operations apply: take the transitive closure (everything A indirectly depends on), find roots (elements with no upward dependencies, often the foundational primitives or the supplied inputs), find bottlenecks (single nodes many things depend on, whose failure has wide blast radius), and detect cycles (mutual reliance, which usually indicates either a modeling error or a genuine fixed-point structure that needs special handling). These operations are substrate-independent precisely because the relation itself is.
The counterfactual lift is what makes dependency reasoning powerful even when the actual failure has not yet occurred, an analytical leverage that Cormen, Leiserson, Rivest, and Stein (2009) make algorithmic in their treatment of graph-traversal techniques for closure and reachability. [9] A reliability engineer running fault-tree analysis is not waiting for the system to fail; she is enumerating the dependencies and computing which subsets of failures would propagate to system-level failure. A legal scholar reviewing a contract is not waiting for a breach; she is identifying which preconditions, if unmet, would unwind the obligations. A biologist modeling an ecosystem is not waiting for extinction; she is identifying which species, if removed, would cascade through the trophic dependency graph. The dependency vocabulary makes these otherwise-disparate exercises recognizable as instances of a single structural operation.
Knowledge Transfer¶
The vocabulary travels intact across domains, and this is the empirical case for treating dependency as a prime rather than a domain-specialist term. A software engineer reading about supply-chain disruption recognizes a build-graph problem. A biologist reading about technology lock-in recognizes the structural shape of obligate mutualism. A lawyer reading about logical entailment recognizes contractual consideration. The transfer is structural rather than metaphorical — these are all instances of directed reliance with a specifiable failure mode, and the operations that work in one substrate (walk the closure, find the bottleneck, detect the cycle) work in the others because the relation is the same.
The cleanest cross-substrate case is the logical/semantic dependency, because it contains no productive causal mechanism at all. A proof depends on its premises; a referring expression depends on the existence of its referent; a theorem depends on the lemmas it cites. There is no time-extended energetic process; the reliance is constitutive and atemporal, as Karttunen (1973) made precise for the linguistic case in showing that the presuppositions of a compound sentence are computed from its parts by a context-update procedure that has nothing to do with physical causation. [8] If the prime survives this case — if the same five-role structure applies and the same operations remain meaningful — then dependency genuinely extends beyond physics into the formal sciences, which is the test that distinguishes structural primes from domain-bound vocabulary. It does survive. A logician asked "what does this proof depend on?" produces a dependency graph whose nodes are propositions and whose edges represent the reliance of one proposition on another for its derivability; the graph supports the same operations (transitive closure, root-finding, cycle detection) as a software build graph. The substrate-furthest case strengthens rather than weakens the prime.
Examples¶
Formal/abstract¶
Logical entailment (Tarski 1936; Gentzen 1935). Consider a research paper whose main theorem depends on Lemma 2. Lemma 2 is the relied-on element; the main theorem is the dependent element; the dependency condition is that Lemma 2 be true (i.e., have a valid proof from accepted axioms); the direction is asymmetric (the theorem needs the lemma, not vice versa, and overturning the theorem leaves the lemma untouched); the failure mode is specifiable — if Lemma 2 is shown to have a counterexample, the main theorem's proof is invalidated in a documented way (Tarski's model-theoretic account of entailment makes the failure mode precise: any model that falsifies the lemma also falsifies any derivation that uses the lemma as a premise).[4][14] This is a dependency without any causal mechanism: nothing physical causes anything; the reliance is logical and constitutive. Mapped back: the five-role pattern is intact even when stripped of any productive causal substrate. This is the substrate-furthest test case for the prime, and it passes — the operations that work on software dependency graphs (transitive closure, bottleneck identification, cycle detection as modeling error) also work on proof trees. The graph-theoretic abstraction that compiler designers use to schedule instructions (Aho, Lam, Sethi, and Ullman 2006) is the same abstraction logicians use to track which lemmas a theorem rests on. The substrate is different; the structural relation is identical.
Critical-path analysis (Kelley and Walker 1959; Malcolm, Roseboom, Clark, and Fazar 1959). A construction project consists of 200 tasks; each task has predecessor tasks it cannot start until they finish. The dependent element is the downstream task; the relied-on elements are its predecessors; the dependency condition is that predecessors be completed; the direction is asymmetric (a delayed predecessor delays the downstream task, but a delayed downstream task does not delay its predecessor); the failure mode is specifiable — a one-day slip on the critical-path task propagates one-for-one to the project end date.[3][12] The critical path is the longest chain of dependencies through the project graph, and its length determines the minimum project duration. The Critical Path Method (CPM) and Program Evaluation and Review Technique (PERT), developed independently in 1957–1959 for the DuPont Nemours plant maintenance program and the U.S. Navy's Polaris missile program respectively, both formalized this dependency-graph reasoning roughly a decade before the software-engineering "dependency" usage became common. Mapped back: the operations-research formalism makes the five-role structure rigorous (tasks as nodes, finish-to-start precedence as edges, slack as the buffer between condition-satisfaction time and dependent-element-start time) and demonstrates that the dependency-walking algorithms (transitive closure, longest path, slack computation) are substrate-independent. The same algorithms applied to software build graphs, scientific workflow DAGs, and proof trees yield the analogous quantities.
Applied/industry¶
Software build systems (Aho, Lam, Sethi, and Ullman 2006; Lattner and Adve 2004). A modern build system like Bazel, Make, or Ninja represents a project as a directed acyclic graph of build targets, where each target depends on input files and other targets.[2][15] The dependent element is the build target; the relied-on elements are its inputs and prerequisite targets; the dependency condition is that the inputs exist and the prerequisite targets be up-to-date; the direction is asymmetric (changing an input invalidates the target, but rebuilding the target does not change the input); the failure mode is specifiable — if an input is missing or a prerequisite is stale, the build either fails or produces an incorrect artifact. The build system computes the transitive closure of dependencies, identifies which targets need rebuilding (incremental builds), parallelizes independent subgraphs (multi-core builds), and rejects cycles as malformed specifications. Package managers (npm, pip, cargo, maven) extend the same structure to versioned dependencies with constraint-satisfaction on version ranges. Mapped back: the build-system case is the contemporary canonical instance — it makes the five-role structure operationally visible and demonstrates that the same algorithms (transitive closure, bottleneck identification, cycle detection) recur in industrial practice. "Dependency hell" — the cascade of conflicting version constraints when transitive dependencies disagree — is itself a dependency-graph phenomenon that only makes sense within the prime's vocabulary.
Obligate ecological mutualism (Janzen 1980; Bronstein 1994). The yucca moth (genus Tegeticula) and the yucca plant exhibit obligate mutualism: the moth's larvae feed only on yucca seeds, and the yucca is pollinated only by the moth.[6][16] The dependent element is each species' reproductive success; the relied-on element is the partner species; the dependency condition is the partner's presence and viable population; the failure modes propagate (extinction of the moth causes the yucca to fail to reproduce, and vice versa); the dependency is so tight that local extinction of one partner reliably precedes local extinction of the other. The case is structurally clean because it contains no human institutions, ruling out the suspicion that "dependency" is a software-engineering specialty smuggled into ecology — biologists who never read a compiler textbook arrived at the same five-role relation through field observation. Mapped back: the biological case validates the prime as substrate-independent in the direction opposite to the logical case. The logical case shows the prime extends upward from physics into formal sciences (no productive mechanism needed); the biological case shows it extends across substrates without requiring human institutions. Both preserve the five-role structure and both support the same dependency-walking operations (transitive closure across a food web, bottleneck identification of keystone species, cycle detection of mutually obligate pairs).
Structural Tensions¶
T1: Dependency-tracking can become expensive enough to swamp the system it serves. The transitive closure of dependencies in a large software project, a global supply chain, or a long proof can grow combinatorially. Tooling that promises to make every dependency visible (full dependency graphs in package managers, full predecessor relations in project-management software, full citation graphs in academic publishing) can produce so much information that practitioners ignore the output and revert to local heuristics. The prime's analytical power scales with the willingness to traverse the structure, and that willingness is bounded by attention.
T2: Naming a dependency formalizes it and can ossify what was previously informal. A team that has worked together for years has tacit dependencies — knowledge about who consults whom on which questions — that are flexible and renegotiated continuously. When the same dependencies are formalized into a RACI matrix or an org-chart reporting line, the relations become inspectable and accountable, but also more rigid. The act of making dependencies explicit can convert a fluid working arrangement into a brittle contractual one. The same tension appears in software: explicit dependency declarations in a manifest file enable reliable resolution but also commit the project to specific versions and break the implicit flexibility of "use whatever is on the system."
T3: A dependency can be a bug or a feature depending on whose perspective is taken. From an architect's perspective, a tight dependency between two modules is technical debt: it constrains future change, propagates failure, and makes the system harder to reason about. From a domain expert's perspective, the same dependency may be a faithful encoding of a real constraint (these things genuinely cannot be separated without losing meaning). The "should we decouple this?" question often has no general answer — it depends on whether the dependency is a leakage from poor decomposition or a faithful representation of an actual reliance in the domain.
T4: Cycles in a dependency graph are usually treated as errors, but some real systems contain genuine fixed-point reliance. Tooling almost universally treats dependency cycles as malformed: build systems refuse to compile, package managers refuse to install, proof checkers refuse to verify, project schedulers refuse to compute critical paths. This rule works because most cycles are modeling errors. But some domains contain real mutual reliance that resists acyclic representation: monetary systems where trust depends on use which depends on trust; ecosystems where two species are mutually obligate; recursive definitions in mathematics; co-evolving software components. Forcing these into a DAG either loses information or creates artificial asymmetries. The tension is between the algorithmic convenience of acyclicity and the structural honesty of cyclic reliance.
T5: The dependency relation invites the failure-mode question, which can entrench worst-case thinking. Once an analyst is trained to identify dependencies and ask "what is the failure mode if this relied-on element fails?", the natural extension is to add buffers, redundancies, and contingencies for each failure mode. This is the structural source of much defensive engineering. The cost is real: redundant supply lines, duplicate code paths, belt-and-braces legal clauses, exception handlers for cases that never occur in practice. Without dependency reasoning, the system is fragile; with relentless dependency reasoning, the system is over-engineered. The right level of preparation requires judgment that the prime itself does not supply.
T6: Dependency analysis is most reliable in stable substrates, but the value of the analysis is highest in volatile ones. In a stable substrate (a mature software library, an established legal code, a well-characterized biochemical pathway), the dependency structure is known and the analysis is reliable but the payoff is marginal — nothing surprising is likely to be found. In a volatile substrate (a novel system being rapidly built, a startup pivoting, a contested legal frontier, an emerging ecosystem), the dependency structure is partially unknown and may be changing under the analyst's feet; the payoff would be high but the analysis is unreliable. The prime's analytical leverage is concentrated where its inputs are weakest. Practitioners often respond by demanding more documentation upstream, which raises friction and may be resisted; the alternative is iterative dependency discovery, which is slower but tracks the moving substrate.
Structural–Framed Character¶
Dependency sits at the structural end of the structural–framed spectrum: the directed relation of one element relying on another being present, prior, compatible, or supplied is as bare a structural commitment as the catalog contains. The same notion was formalized independently in compiler design, operations research, formal logic, philosophy of language, and ecology without any of those traditions borrowing from each other — the strongest evidence of substrate-independence the corpus offers.
No domain vocabulary needs to come along; "A depends on B in such a way that violating a condition on B impairs A in a specifiable failure mode" is statable in any field's terms. The prime carries no evaluative weight — dependencies can be load-bearing or fragile, exploited or designed around, but the relation itself is not normatively loaded. Institutional origin reads zero: a theorem depends on a lemma, a downstream chemical reaction depends on an upstream concentration, and an ecological obligate depends on its host with no institution required. Human-practice-bound also reads zero: biological pathways and proof trees are dependencies in exactly the same structural sense as project schedules. Import-vs-recognize is recognition: a software engineer mapping module dependencies, an ecologist mapping obligate-mutualist dependencies, and a logician mapping entailment dependencies are each reading directed-reliance structure already present, not importing a framing. On the spectrum, the verdict is canonical-structural.
Substrate Independence¶
Dependency is about as substrate-independent as a prime can be — composite 5 / 5 on the substrate-independence scale. The pattern is one substrate-neutral relation: a directed reliance in which the state, action, availability, meaning, or success of one element relies on another being present, prior, compatible, or supplied. Every diagnostic lands at the ceiling. Domain breadth is maximal because directed reliance recurs unchanged across software dependency graphs, project task networks, supply chains, biological obligate relationships, contract law (consideration, precondition), logical entailment, and semantic presupposition. Structural abstraction is at the top because directed reliance is a pure relational property of an ordered pair, expressible without any substantive vocabulary. Transfer evidence is unusually strong: the same relation has been independently formalized in at least five intellectual traditions (graph-theoretic dependency analysis in compilers, task-precedence in operations research, logical entailment, semantic presupposition, and obligate dependency in ecology), and the convergence across those independent formalizations is itself the most direct evidence of substrate independence. The verdict is that dependency is one of the catalog's paradigm structural primes, a clean 5 recognized wherever one element's standing requires that of another.
- Composite substrate independence — 5 / 5
- Domain breadth — 5 / 5
- Structural abstraction — 5 / 5
- Transfer evidence — 5 / 5
Relationships to Other Primes¶
Foundational — no parent edges in the catalog.
Children (11) — more specific cases that build on this
-
Causality is a kind of Dependency
Causality is a specialization of dependency. The general dependency pattern is the directed asymmetric relation in which one element cannot proceed, function, or be interpreted unless a condition on another is met. Causality specializes by adding two commitments: a productive mechanism linking cause to effect (not merely correlation or precedence) and counterfactual modal robustness (had the cause not occurred, the effect would have differed). The same directed-asymmetric-reliance logic of dependency applies, with productive connection and counterfactual support as the specific gates distinguishing causation from looser dependence.
-
Entanglement is a kind of Dependency
Entanglement is the quantum-mechanical condition in which subsystems are described by a single joint state that cannot be factored into independent subsystem states, so the value of measurements on one is correlated with measurements on another in ways no local description supports. That irreducible reliance of one subsystem's specification on another is the structure of Dependency — one element cannot be characterized or acted on independently of another. Entanglement specializes dependency to joint quantum states.
-
Infinite Regress is a kind of Dependency
An infinite regress is a specialization of dependency where the directed relation "A relies on B being prior, present, or supplied" iterates without natural stopping point: each justifier, explainer, or ground itself requires another of the same kind. It inherits dependency's core asymmetry but adds the structural feature that the chain is non-terminating unless exited via foundationalism, circularity, or explicit endorsement of the unbounded series. The pathology is precisely a dependency relation that fails to reach a base case.
- Task Interdependence is a kind of Dependency
Task interdependence is a kind of dependency specialized to work-system tasks: the directed reliance is between activities whose completion, quality, or timing requires inputs, outputs, resources, or decisions from other tasks. It inherits dependency's general commitment that one element relies on another being present, prior, compatible, or supplied, and supplies the specific case where the elements are tasks and the typology of reliance — pooled, sequential, reciprocal — sets coordination requirements proportional to the coupling intensity that the underlying dependency relation creates.
- Teleconnection is a kind of Dependency
A teleconnection is a specialization of dependency: distant regions, populations, or systems are not autonomous because the state at one location is conditional on a shared mechanism that couples it to another. It inherits dependency's directed-asymmetric relation — A's condition affects B's behavior — particularized to the non-local case where the dependency travels via a global process rather than direct contact. The El Niño–monsoon link is precisely a dependency edge in the climate network.
- Bottleneck presupposes Dependency
A bottleneck presupposes dependency because the binding-local-constraint-governs-global-rate signature only obtains where operations are linked by directed reliance into chains or networks. Without dependency's structure — one stage cannot proceed unless its upstream input is supplied — there is no chain whose throughput could be capped by its slowest link, and improving non-bottleneck elements would not be wasted. Dependency supplies the coupling that makes throughput a system property rather than a sum of independent rates; the bottleneck is then the specific node where that coupling becomes the binding constraint.
- Coordination presupposes Dependency
Coordination presupposes dependency because the active alignment of independently controlled actors only becomes a problem when one actor's progress, output, or interpretation depends on another's. Without dependency's directed reliance — A cannot proceed unless a condition on B is met — there is nothing to synchronize: independent actors with no coupling can act in parallel without any coordination machinery. Dependency supplies the structural couplings that make coordination necessary; coordination then supplies the protocols, signals, and shared frames that resolve those couplings into coherent collective outcomes.
- Legacy Integration presupposes Dependency
Legacy integration presupposes dependency because maintaining practice continuity, institutional knowledge, or cultural identity across discontinuous shifts requires that the new structure be linked to and rely on elements of the prior one. Without dependency's directed reliance relation, the post-rupture system could simply discard the legacy without consequence; legacy integration arises precisely because functions, data, or commitments in the new structure remain bound to artifacts from the old. Dependency supplies the structural couplings that make integration — rather than clean replacement — the operative engineering or organizational choice.
- Path Dependence presupposes Dependency
Path dependence presupposes dependency because the claim that present options depend constitutively on the historical trajectory of choices requires the directed reliance relation between later and earlier states. Without dependency's structure — A cannot proceed, function, or retain value unless conditions on prior B are met — the present state would be fully determined by current conditions plus exogenous shock, and history would drop out. Dependency supplies the temporal reliance that makes the sequence of past decisions load-bearing for present and future possibilities.
- Sequencing presupposes Dependency
Sequencing presupposes dependency because the deliberate arrangement of steps over time is constrained by directed relations: step B cannot proceed until step A is supplied. It inherits dependency's structural asymmetry — A relies on B being prior — and uses it as the binding constraint that determines admissible orderings. The active design choice of sequencing operates on a dependency graph, and without that graph there would be no precedence to satisfy and no value in the order itself.
- Systemic Risk presupposes Dependency
Systemic risk emerges from dense interdependence in which one component's failure propagates through interconnections to threaten the whole. This presupposes dependency: the directed relation in which one element cannot proceed, function, or retain value unless a condition on another is met. The cascade structure of systemic risk is precisely the dependency graph being traversed by failure: when A depends on B and B fails, A's continued functioning is no longer supported. Without dependency's directed asymmetric relation, failures would not propagate along predictable paths and the systemic topology would have no failure dimension.
Neighborhood in Abstraction Space¶
Dependency sits in a sparse region of abstraction space (62nd percentile for distinctiveness): few abstractions share its structure, so a faithful description tends to retrieve it precisely rather than landing on a neighbor.
Family — Partition, Contrast & Structural Difference (24 primes)
Nearest neighbors
- Decomposition — 0.79
- Correlation — 0.78
- Substitutability — 0.78
- Role — 0.77
- Asymmetry — 0.77
Computed from structural-signature embeddings · 2026-05-29
Not to Be Confused With¶
Dependency must be distinguished from Causality, and this is the boundary where the prime has to hold up to scrutiny. Project-06's R21 round closed unanimously on causality → dependency as subsumption, treating causality as the time-asymmetric, mechanism-mediated subtype of directed reliance and dependency as the umbrella. The decisive case is logical entailment, where a proof depends on a lemma with no productive causal mechanism whatsoever — the reliance is atemporal, constitutive, and substrate-formal. Nothing causes the proof to depend on the lemma; the dependency is a feature of the logical relation itself. The same applies to semantic presupposition (a referring expression's reliance on the existence of its referent), contractual consideration (an obligation's reliance on a triggering exchange), and definitional reliance (a term's reliance on the meanings of its constituents). All of these are dependencies; none are causal in the productive-mechanism sense. Causality additionally requires time-asymmetry and the transmission of force, energy, or information across a temporal interval — features that dependency does not require. Every causal relation is a dependency, but not every dependency is causal: the dependency between premise and conclusion is timeless; the causal relation between rain and wet ground is not. Collapsing them would force the catalog either to deny the logical case (damaging formal-sciences coverage) or to stretch causality to cover atemporal constitutive reliance (eroding its commitment to productive mechanism).
Dependency must be distinguished from Network. A network is the graph data structure — nodes and edges. Dependency is a kind of edge that can appear in a graph. The network is the container; the dependency is one possible relation populating it. Networks can carry many edge types: symmetric ties (friendship, similarity, co-occurrence), asymmetric ties (citation, dominance, dependency), weighted ties (correlation strength, flow volume). Collapsing the two would force the false choice between treating every network edge as a dependency (which fails for correlation networks) or requiring every dependency to come with a full graph context (which fails for the two-node case). The clean separation: dependencies populate networks, and operations on dependency-typed networks (topological sort, critical-path computation, transitive closure) work only when the edges carry the asymmetric reliance commitment.
Dependency must be distinguished from Constraint. A constraint restricts what is permissible; a dependency requires that a specific other element be supplied. The grammatical mood differs: constraints forbid ("you cannot exceed this budget," "no two queens may share a row"); dependencies require ("you need this input," "this lemma must be true"). A dependency can create a constraint downstream — if A depends on B, any solution must supply B — but the two foreground different things. Constraints describe the boundary of the feasible region; dependencies describe the directed reliance edges among elements. Some dependency-resolution algorithms encode dependencies as constraints over a version space, but the encoding is a translation between two different structural notions, not an identity.
Dependency must be distinguished from Presupposition. Presupposition is a specific kind of dependency in language or logic — one proposition takes another for granted (the king of France is bald presupposes that France has a king; the dependent assertion fails or becomes ambiguous if the presupposition fails). Dependency is the broader umbrella. Collapsing them would either lift presupposition out of its linguistic-semantic home (where projection behavior, accommodation, and presupposition failure are precisely characterized) or shrink dependency to a linguistic notion that no longer covers software builds, supply chains, or proof trees.
Dependency must be distinguished from Path Dependence. Path dependence is the historical-accumulation mechanism explaining how the current set of dependencies came to exist as it does — early choices, increasing returns, lock-in, and irreversibility produce a present configuration that reflects history rather than current optimality. Dependency is the current relation itself, and it need not be path-dependent: a fresh logical entailment depends on its premises with no history of accumulation, and a newly designed system can have engineered dependencies that were chosen rather than accreted. Path dependence usually presupposes some dependency structure, but the explanatory directions are opposite: path dependence asks "why are the current dependencies these and not others?"; dependency asks "what are the current dependencies and what do they imply?" Path dependence is a mechanism for the origin of certain dependency configurations; dependency is the relation whose origin path dependence sometimes explains.
Solution Archetypes¶
No catalogued solution archetypes reference this prime yet.
Notes¶
Surfaced by ChatGPT Pro's R16 one-shot pass — a genuinely novel contribution to Claude's gap list. task_interdependence, bottleneck, interface, coordination, path_dependence, and many software-architecture nodes use "dependency" as their structural vocabulary, but no umbrella prime existed in the catalog. The decisive case for the prime's distinct work is the logical/semantic/institutional dependency where no productive causal mechanism is in play — those are dependencies but not causation. Load-bearing piece (anti-drift anchor for v2): "directed reliance with a specifiable failure mode" is the framing that must survive — losing it lets v2 narrow toward causality (productive mechanism) or constraint (option-space limit), both less general than dependency itself. R21 closed causality → dependency as subsumption (unanimous), confirming the root-altitude positioning.
The five-role structure (dependent / relied-on / condition / direction / failure mode) is the operational test for whether a candidate relation is actually a dependency. The failure-mode role is the one most often skipped in casual usage, and skipping it is the source of the loose "depends on" talk that the prime is designed to discipline. When no failure mode can be named, the relation is at most an association.
Dependency reasoning has scale limits. The transitive closure of a real-world dependency graph quickly exceeds human capacity for direct inspection; the compensating moves are summarization (identify the few bottlenecks), tooling (let the machine compute the closure), and modularization (treat sealed-off subgraphs as single nodes).
The prime is intentionally agnostic about whether dependencies are good or bad. A dependency can be load-bearing structural reliance (the lemma the proof needs) or harmful coupling (the legacy module that propagates failure). The structural diagnosis is the same; the normative evaluation depends on whether the dependency is faithful to the underlying domain or an artifact of poor decomposition.
References¶
[1] Parnas, D. L. (1972). "On the criteria to be used in decomposing systems into modules." Communications of the ACM, 15(12), 1053–1058. ↩
[2] Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. (2006). Compilers: Principles, Techniques, and Tools (2nd ed.). Pearson/Addison-Wesley. The "Dragon Book": canonical reference on systematic source-to-target program transformation, including AST rewrites, intermediate representations, and optimization passes. ↩
[3] Kelley, J. E., Jr., & Walker, M. R. (1959). Critical-path planning and scheduling. In Proceedings of the Eastern Joint Computer Conference (IRE-AIEE-ACM), Boston, MA, December 1–3, 1959, pp. 160–173. Original formulation of the critical-path method: formalizes the order of dependent activities as the determinant of project duration, providing the canonical instance of sequencing as a discrete-step ordering problem. ↩
[4] Tarski, A. (1936). On the concept of logical consequence. In Logic, Semantics, Metamathematics (J. H. Woodger, Trans., 1956, pp. 409–420). Oxford University Press. Foundational model-theoretic account of logical consequence (entailment); makes the dependency of a conclusion on its premises precise in terms of truth-preservation across all models. ↩
[5] Strawson, P. F. (1950). On referring. Mind, 59(235), 320–344. Foundational paper on semantic presupposition; argues that referring expressions depend on the existence of their referents and that presupposition failure produces neither truth nor falsity but a third status. ↩
[6] Janzen, D. H. (1980). When is it coevolution? Evolution, 34(3), 611–612. Restricts "coevolution" to genuine reciprocal causation — an evolutionary change in one population in response to another, followed by a reciprocal response — which fixes the closed-feedback signature distinguishing coevolution from correlated change. ↩
[7] Lee, H. L., Padmanabhan, V., & Whang, S. (1997). Information distortion in a supply chain: The bullwhip effect. Management Science, 43(4), 546–558. Seminal analysis of supply-chain bullwhip: decomposes amplification of demand variability into four temporal mechanisms (demand-signal processing, rationing-game dynamics, order batching, price variation) driven by lead-time lags and feedback delays. ↩
[8] Karttunen, L. (1973). Presuppositions of compound sentences. Linguistic Inquiry, 4(2), 169–193. Foundational presupposition-projection paper; formalizes the dependency of a complex sentence's presuppositions on its parts through a context-update procedure, establishing the atemporal, non-causal character of semantic dependency. ↩
[9] Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms (3rd ed.). MIT Press. Canonical algorithms textbook; chapter 22 develops topological sort, depth-first search, and reachability over directed acyclic graphs as the algorithmic vocabulary for dependency-graph analysis (transitive closure, cycle detection, critical-path computation). ↩
[10] Dijkstra, E. W. (1968). The structure of the "THE"-multiprogramming system. Communications of the ACM, 11(5), 341–346. Foundational layered-architecture paper; argues that constraining higher layers to depend only on lower layers makes hierarchical reasoning tractable, establishing the layered-dependency discipline that recurs across operating systems, software architecture, and protocol stacks. ↩
[11] Holmes, O. W., Jr. (1881). The Common Law. Boston: Little, Brown. Foundational text of American legal realism: separates the "logic" of legal rules from the "life of the law" (experience, policy, equity), grounding the distinction between consistency as a property and precedent as a mechanism that can enforce it across disagreement. ↩
[12] Malcolm, D. G., Roseboom, J. H., Clark, C. E., & Fazar, W. (1959). Application of a technique for research and development program evaluation. Operations Research, 7(5), 646–669. Original PERT paper from the U.S. Navy's Polaris missile program; developed independently of CPM and formalizes probabilistic dependency-graph scheduling. ↩
[13] Goldratt, Eliyahu M., and Jeff Cox. The Goal: A Process of Ongoing Improvement. Great Barrington, MA: North River Press, 1984 (4th anniversary ed., 2014). Theory-of-Constraints methodology consolidated in Goldratt, What Is This Thing Called Theory of Constraints and How Should It Be Implemented? (North River Press, 1990). Methodological consolidation: Dettmer, Goldratt's Theory of Constraints (ASQ Quality Press, 1997). ↩
[14] Gentzen, G. (1935). Untersuchungen über das logische Schließen [Investigations into Logical Deduction]. Mathematische Zeitschrift, 39, 176–210, 405–431. Foundational paper on natural deduction and sequent calculus; represents proofs as trees whose nodes depend on parent nodes for derivability. ↩
[15] Lattner, C., & Adve, V. (2004). LLVM: A compilation framework for lifelong program analysis & transformation. Proceedings of the International Symposium on Code Generation and Optimization, 75–86. Foundational LLVM paper; develops dependency-graph data structures for use across compilation stages. ↩
[16] Bronstein, J. L. (1994). Our current understanding of mutualism. The Quarterly Review of Biology, 69(1), 31–51. Review article on mutualism in ecology; treats obligate mutualism as a tightly coupled bidirectional dependency relation with cascading failure modes. ↩
[17] Baldwin, C. Y., & Clark, K. B. (2000). Design Rules: The Power of Modularity (Vol. 1). MIT Press.
[18] Simon, H. A. (1962). "The architecture of complexity." Proceedings of the American Philosophical Society, 106(6), 467–482.
[19] Ulrich, K. T. (1995). "The role of product architecture in the manufacturing firm." Research Policy, 24(3), 419–440.
[20] Sánchez, R., & Mahoney, J. T. (1996). "Modularity, flexibility, and knowledge management in product and organization design." Strategic Management Journal, 17(S2), 63–76.
[21] MacCormack, A., Baldwin, C., & Rusnak, J. (2012). "Exploring the duality between product and organizational architecture: A test of the 'mirroring hypothesis'." Research Policy, 41(8), 1309–1324.
[22] Meyer, B. (2014). "Agile!: The Good, the Hype, and the Ugly." Springer.
[23] Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.
[24] McIlroy, M. D. (1968). "Mass produced software components." In Software Engineering: Report of a Conference Sponsored by the NATO Science Committee (pp. 138–155). NATO Science Committee.
[25] Sommerville, I. (2010). Software Engineering (9th ed.). Addison-Wesley.