Defeasible Reasoning

Defeasible reasoning is a form of logic where conclusions can be drawn tentatively and later retracted when stronger evidence appears. This is how most real-world reasoning works — we act on the best information available, knowing new facts might change our minds.

(given defeasible-reasoning-documented)

Why it fits knowledge management

Decision documents, architecture records, and project plans all contain reasoning that is provisional. A conclusion like “use Redis” might be well-supported now but defeated by a future license audit. concepts/Spindle Lisp lets you express this directly in your notes, and zetl’s Reasoning Engine computes what follows.

Rule types

TypeSyntaxMeaning
Fact(given X)X is unconditionally true
Strict(always label body head)If body, then head — no exceptions
Defeasible(normally label body head)If body, normally head — can be defeated
Defeater(except label body head)If body, block head — but don’t assert the opposite

Superiority

When two rules conflict, a superiority relation resolves the tie:

(prefer stronger-rule weaker-rule)

Without a declared preference, the conflict remains unresolved — zetl reason conflicts will flag it. See Reason Commands.

Conclusion tags

TagMeaning
+DDefinitely provable — strict derivation, no defeating possible
-DDefinitely not provable
+dDefeasibly provable — inferred, no active defeaters
-dDefeasibly not provable — blocked or no derivation path

In zetl

The Reasoning Engine implements defeasible reasoning via spindle-core. See Reason Commands for the CLI interface, concepts/Provenance for how conclusions trace back to source files, and concepts/Spindle Lisp for the language reference.

See also: concepts/Spindle Lisp, Reasoning Engine, Reason Commands

Backlinks