challenge-uses-outlist-mechanism
IN premise
`challenge` works by creating an IN premise node and adding it to the target's outlist in every justification, reusing the same non-monotonic mechanism as `supersede`.
Summary
When you challenge a belief, the system creates a new node that acts as a blocker — it gets inserted into the "out" slot of every justification supporting the target. This means challenging something uses the exact same underlying machinery as superseding it: both work by making a justification conditional on something being absent, so if the blocker is present (IN), the justification fails. This is elegant because it means challenge isn't a separate mechanism but a reuse of the existing dependency-directed reasoning.
Dependents
These beliefs depend on this one:
- all-defeat-mechanisms-are-reversible — Every outlist-based defeat operation (challenge, kill-switch, supersession) is inherently reversible because outlist semantics flip truth values without deleting nodes
- dialectical-structure-is-recursive-outlist — The entire challenge/defend dialectical system is implemented as recursive outlist injection with no dedicated dialectical machinery
Details
| Source | entries/2026/04/23/reasons_lib-network-challenge.md |