dependency-tracking-is-complete-for-all-reference-types

IN derived (depth 2)

The dependents index fully tracks all relationship types — both antecedent references and outlist references — enabling complete incremental propagation for every truth value change without requiring periodic full recompute as a fallback

Summary

When any node's truth value changes, the system can figure out exactly which other nodes might be affected and update only those, without ever needing to rescan the entire network from scratch. This works because every way nodes can reference each other — both standard dependencies and negation-style outlist references — is tracked in the same index, and that index stays correct through every possible mutation.

Justifications

SL — Mutations maintain dependents and outlist semantics are fully specified, so if outlist nodes were tracked in the dependents index, incremental propagation would reach all affected nodes — the gap is the sole obstacle to complete incremental consistency

Antecedents (all must be IN):

  • every-network-mutation-maintains-dependents — After any public mutation method on `Network` (`add_node`, `retract`, `assert_node`, `add_justification`, `supersede`, `challenge`, `defend`, `convert_to_premise`, `add_nogood`, `summarize`), `verify_dependents()` returns an empty list.
  • outlist-semantics-are-fully-specified — The outlist primitive has complete, well-defined semantics: multiple entries form a conjunction (all must be OUT), absent nodes are treated as OUT (permissive default), and outlist relationships survive persistence through JSON serialization with rebuilt dependent indexes.

Unless (any of these IN defeats this justification):

  • outlist-nodes-not-in-dependents-index — Outlist nodes are not tracked in the `dependents` index, so when an outlist node is retracted (goes OUT), dependent GATE beliefs are not enqueued for re-evaluation by `_propagate` — requiring manual `reasons assert` as a workaround.

Dependents

These beliefs depend on this one:

Details