1 Overview
Defeasible logic allows you to express rules that “typically” hold but can be overridden. For example:
Birds typically fly
Penguins are birds
Penguins typically don’t fly
The penguin rule is superior to the bird rule
Spindle will correctly conclude that a penguin does not fly, even though it is a bird.
1.1 Key Features
Defeasible reasoning —
Rules can be strict (always apply) or defeasible (can be overridden) Multiple syntaxes —
DFL (textual) and SPL (S-expression) formats Explanations —
Understand why conclusions hold or don’t hold What-if analysis —
Hypothetical reasoning with temporary assumptions Process mining —
Learn rules from event logs
1.2 Quick Example
Using DFL syntax:
# Facts |
>> bird |
>> penguin |
|
# Rules |
r1: bird => flies # Birds typically fly |
r2: penguin => ¬flies # Penguins typically don't fly |
|
# Superiority |
r2 > r1 # Penguin rule beats bird rule |
Using SPL (Spindle LISP) syntax:
(given bird) (given penguin) (normally r1 bird flies) (normally r2 penguin (not flies)) (prefer r2 r1)