defeasible arguments
on this page
definition
a defeasible argument provides rational support for a conclusion that can be overturned (defeated) by additional information. unlike deductive arguments, which maintain their validity regardless of new premises, defeasible arguments are inherently non-monotonic - adding new information can invalidate previously reasonable conclusions.
defeasible reasoning captures how we naturally reason with generalizations, defaults, and presumptions that admit exceptions in specific circumstances.
key characteristics
non-monotonic reasoning
the hallmark of defeasible arguments is non-monotonicity - conclusions can be withdrawn when new information emerges:
original reasoning:
birds typically fly
tweety is a bird
โด tweety probably flies
after learning new information:
birds typically fly
tweety is a bird
tweety is a penguin
โด tweety probably does not fly (conclusion defeated) adding the premise โtweety is a penguinโ defeats the original conclusion.
presumptive conclusions
defeasible arguments establish presumptions rather than certainties:
it's 3:00 pm and mail usually arrives by 2:00 pm
โด the mail has probably already arrived
this conclusion is reasonable given normal circumstances
but can be defeated by learning today is a postal holiday based on generalizations
most defeasible reasoning relies on general rules with exceptions:
generalization: students who attend class regularly tend to perform better
application: maria attends class regularly
presumption: maria will probably perform well
potential defeaters:
- maria has severe test anxiety
- maria doesn't understand the material despite attendance
- maria is dealing with personal crises affecting concentration types of defeaters
rebutting defeaters
provide evidence directly contradicting the conclusion:
default argument:
academic conferences are usually valuable for research
this is an academic conference
โด this conference is probably valuable
rebutting defeater:
this conference has been identified as predatory
โด this conference is probably not valuable
the defeater directly opposes the original conclusion undercutting defeaters
attack the inferential link between premises and conclusion:
default argument:
the witness identified the suspect
โด the suspect is probably guilty
undercutting defeater:
the identification occurred under poor lighting conditions
โด the identification is unreliable (breaks inference link)
the defeater doesn't claim innocence directly,
but undermines the reliability of the identification exceptional circumstances
situations where normal patterns donโt apply:
default reasoning:
restaurants are typically open during dinner hours
it's 7:00 pm (dinner time)
โด the restaurant is probably open
exceptional defeater:
today is christmas day
โด normal operating hours may not apply
the exception doesn't contradict the general rule,
but identifies a context where it doesn't hold formal approaches
default logic (reiter)
represents defeasible reasoning using default rules:
general form: P(x) : M Q(x) / Q(x)
reads as: "if P(x) is known and Q(x) is consistent
with current beliefs, then conclude Q(x)"
example:
Bird(x) : M Flies(x) / Flies(x)
"if x is a bird and it's consistent to believe x flies,
then conclude x flies" argumentation frameworks (dung)
model defeasible reasoning as abstract argumentation:
class Argument:
def __init__(self, premises, conclusion):
self.premises = premises
self.conclusion = conclusion
class ArgumentationFramework:
def __init__(self):
self.arguments = []
self.attack_relations = [] # (attacker, attacked)
def add_attack(self, attacker, attacked):
self.attack_relations.append((attacker, attacked))
def compute_extensions(self):
# find sets of arguments that can stand together
# considering attack relations
pass probabilistic defeasibility
use probability updates to model defeat:
P(conclusion | evidence) = high initially
new evidence arrives:
P(conclusion | evidence, defeater) = low
bayesian updating naturally handles defeasibility
through conditional probability revision nonmonotonic logics
circumscription, autoepistemic logic, and other formal systems:
circumscription example:
minimize abnormal cases
Flies(x) โ Bird(x) โง ยฌAbnormal(x)
Abnormal(x) โ Penguin(x)
Bird(tweety)
Penguin(tweety)
conclusion: ยฌFlies(tweety) practical examples
legal reasoning
burden of proof and presumptions:
legal presumption: defendants are innocent until proven guilty
evidence: defendant had motive and opportunity
presumption: defendant is probably innocent (default)
prosecution evidence:
- dna at crime scene
- witness testimony
- incriminating communications
result: presumption of innocence defeated
defense evidence:
- alibi witnesses
- evidence tampering claims
- alternative suspect theory
result: attempt to defeat prosecution case medical reasoning
diagnostic defaults and exceptions:
default rule: chest pain in older adults suggests cardiac cause
patient: 65-year-old with chest pain
presumption: probably cardiac-related
additional information:
- pain occurs only when lying down
- relieved by antacids
- no cardiac risk factors
result: cardiac presumption defeated, gerd more likely
further information:
- abnormal ekg discovered
- elevated cardiac enzymes
result: gerd explanation defeated, back to cardiac cause everyday reasoning
social expectations and norms:
default: people keep their appointments
expectation: friend will meet me at arranged time
presumption: friend will probably show up
potential defeaters:
- friend calls to cancel โ direct cancellation
- severe weather conditions โ exceptional circumstances
- friend has history of unreliability โ undermines trust
- emergency situation โ exceptional circumstances software engineering
system behavior and error handling:
default assumption: network requests succeed
program logic: send request, process response
presumption: response will arrive successfully
exception handling:
try:
response = send_request()
process_response(response)
except NetworkError:
# default assumption defeated
handle_failure()
except TimeoutError:
# another type of defeat
retry_or_fail() evaluation criteria
reasonableness
is the conclusion rational given current information?
reasoning: most meetings scheduled for today will occur as planned
conclusion: 10 am meeting will probably happen
evaluation: reasonable given normal circumstances
new information: building evacuation due to fire alarm
revised evaluation: conclusion no longer reasonable defeasibility conditions
what evidence would overturn the conclusion?
argument: this medication usually helps with anxiety
conclusion: patient will probably benefit from medication
defeat conditions:
- patient has allergy to medication (safety defeater)
- patient has condition contraindicated for drug (medical defeater)
- patient already taking incompatible medication (interaction defeater)
- patient prefers non-pharmaceutical treatment (preference defeater) strength of presumption
how robust is the default against potential defeaters?
strong presumption:
gravity causes objects to fall downward
very few potential defeaters (magnetic forces, etc.)
weak presumption:
traffic will be light during rush hour
many potential defeaters (accidents, weather, events, etc.) contextual appropriateness
does the reasoning fit the domain and circumstances?
appropriate context:
default: restaurants serve food
application: planning dinner at restaurant
context match: fits normal dining expectations
inappropriate context:
default: restaurants serve food
application: expecting food at restaurant museum exhibit
context mismatch: museum context changes expectations implementation patterns
rule-based systems with exceptions
class DefeasibleRule:
def __init__(self, condition, conclusion, exceptions):
self.condition = condition
self.conclusion = conclusion
self.exceptions = exceptions
def applies(self, facts, beliefs):
# check if condition holds
if not self.condition.satisfied(facts):
return False
# check for exceptions (defeaters)
for exception in self.exceptions:
if exception.satisfied(facts, beliefs):
return False
return True
# example usage
bird_flies_rule = DefeasibleRule(
condition=lambda facts: 'bird' in facts,
conclusion='flies',
exceptions=[
lambda facts, beliefs: 'penguin' in facts,
lambda facts, beliefs: 'injured_wing' in facts,
lambda facts, beliefs: 'in_cage' in facts
]
) priority-based reasoning
class PrioritizedArgument:
def __init__(self, premises, conclusion, priority):
self.premises = premises
self.conclusion = conclusion
self.priority = priority
def resolve_conflicts(arguments):
# when arguments conflict, use priority to decide
active_args = []
for arg in arguments:
defeated = False
for other_arg in arguments:
if (conflicts(arg, other_arg) and
other_arg.priority > arg.priority):
defeated = True
break
if not defeated:
active_args.append(arg)
return active_args probabilistic defeat
import numpy as np
from scipy.stats import beta
class ProbabilisticDefeasibleReasoning:
def __init__(self):
self.beliefs = {} # conclusion -> probability
def add_evidence(self, evidence, conclusion, strength):
# update beliefs using bayesian updating
prior = self.beliefs.get(conclusion, 0.5)
# simple beta-binomial updating
# (real implementations would be more sophisticated)
likelihood = strength if evidence else 1 - strength
posterior = (prior * likelihood) / (
prior * likelihood + (1 - prior) * (1 - likelihood)
)
self.beliefs[conclusion] = posterior
def is_defeated(self, conclusion, threshold=0.5):
return self.beliefs.get(conclusion, 0.5) < threshold argumentation frameworks
class ArgumentationSystem:
def __init__(self):
self.arguments = {}
self.attacks = []
def add_argument(self, arg_id, premises, conclusion):
self.arguments[arg_id] = {
'premises': premises,
'conclusion': conclusion,
'status': 'undecided'
}
def add_attack(self, attacker_id, attacked_id):
self.attacks.append((attacker_id, attacked_id))
def compute_grounded_extension(self):
# compute grounded extension (unique minimal fixed point)
in_set = set()
out_set = set()
changed = True
while changed:
changed = False
# add unattacked arguments
for arg_id in self.arguments:
if arg_id not in in_set and arg_id not in out_set:
attackers = [att for att, def_ in self.attacks if def_ == arg_id]
if all(att in out_set for att in attackers):
in_set.add(arg_id)
changed = True
# remove arguments attacked by accepted arguments
for arg_id in self.arguments:
if arg_id not in out_set:
attackers = [att for att, def_ in self.attacks if def_ == arg_id]
if any(att in in_set for att in attackers):
out_set.add(arg_id)
changed = True
return in_set applications in ai
expert systems
rule-based reasoning with exceptions:
medical expert system:
rule: if patient has fever and cough, then probably viral infection
exception: if white blood cell count is very high, then probably bacterial
implementation handles conflicting evidence through
defeasible reasoning rather than absolute rules natural language understanding
default interpretations with contextual override:
sentence: "the bank is closed"
default interpretation: financial institution
context: "we're going fishing" โ riverbank interpretation
contextual defeat: fishing context overrides financial default robotic planning
default assumptions about environment:
default: doors are unlocked during business hours
plan: walk through door to reach destination
assumption: door will open when pushed
exception handling:
if door doesn't open:
- try pulling instead of pushing
- check if door is locked
- find alternative route
- ask for assistance machine learning
default predictions with uncertainty:
class DefeasibleClassifier:
def __init__(self, base_model, confidence_threshold=0.7):
self.model = base_model
self.threshold = confidence_threshold
self.exceptions = []
def predict_defeasible(self, x):
prediction = self.model.predict(x)
confidence = self.model.predict_proba(x).max()
# check for known exceptions
for exception_pattern, override in self.exceptions:
if exception_pattern.matches(x):
return override, "exception"
if confidence < self.threshold:
return prediction, "uncertain"
else:
return prediction, "confident" advantages and limitations
advantages
natural reasoning: captures how humans actually reason with generalizations and exceptions
flexible: can handle incomplete information and update conclusions as new evidence arrives
practical: works well for real-world domains where strict rules have exceptions
robust: graceful degradation when assumptions are violated
expressive: can represent nuanced reasoning patterns not captured by monotonic logic
limitations
computational complexity: determining what to believe can be intractable
non-deterministic: multiple reasonable conclusions may be possible
context-dependent: same information may lead to different conclusions in different contexts
defeat propagation: changes can have cascading effects throughout the reasoning system
validation challenges: difficult to verify correctness of defeasible reasoning systems
comparison with other argument types
| aspect | defeasible | deductive | inductive | abductive |
|---|---|---|---|---|
| certainty | presumptive | necessary | probable | plausible |
| monotonicity | non-monotonic | monotonic | monotonic | non-monotonic |
| defeat | explicitly handled | not applicable | rare | built-in |
| exceptions | central feature | not allowed | statistical | expected |
| revision | frequent | never | gradual | common |
| applications | practical reasoning | formal proofs | empirical science | explanation |
common errors
treating defaults as absolutes
incorrectly applying generalizations without considering exceptions:
problematic reasoning:
birds fly
penguins are birds
โด penguins fly (ignores exceptions)
better defeasible reasoning:
birds typically fly
penguins are birds
but penguins are a known exception
โด penguins probably do not fly ignoring defeat conditions
failing to update conclusions when defeaters emerge:
initial reasoning: meeting is scheduled for 2 pm, so it will probably occur
new information: building fire alarm requires evacuation
error: continuing to believe meeting will occur as scheduled
correction: meeting presumption is defeated by emergency circumstances inappropriate defeat
allowing irrelevant information to defeat reasonable conclusions:
reasonable conclusion: this medication helps with depression
irrelevant defeater: some people don't like taking pills
error: letting preference defeat medical effectiveness
correction: distinguish between efficacy and acceptability circular defeat
creating self-defeating reasoning patterns:
problematic:
rule a: if p then q, unless r
rule b: if q then r, unless p
result: neither conclusion can be established
better: establish priority or context for rule application further study
foundational texts
- reiter: โa logic for default reasoningโ (default logic formalization)
- dung: โon the acceptability of arguments and its fundamental role in nonmonotonic reasoningโ (argumentation frameworks)
- pollock: โcognitive carpentryโ (philosophical foundations)
- nute: โdefeasible logicโ (practical implementations)
computational approaches
- brewka, dix & konolige: โnonmonotonic reasoning: an overviewโ
- antoniou, billington & maher: โon the analysis of regulations using defeasible rulesโ
- prakken & vreeswijk: โlogics for defeasible argumentationโ
philosophical perspectives
- pollock: โdefeasible reasoningโ (epistemological foundations)
- nute & cross: โconditional logicโ (logical foundations)
- horty: โreasons as defaultsโ (practical reasoning applications)
ai implementations
- antoniou & bikakis: โdr-prolog: a system for defeasible reasoning with rules and ontologiesโ
- governatori: โrepresenting business contracts in rulemlโ
- bench-capon & dunne: โargumentation in artificial intelligenceโ
practice exercises
- identify defeasible reasoning patterns in everyday situations
- implement simple default logic systems
- analyze legal reasoning for presumptions and defeaters
- design exception handling in software systems
- study medical diagnostic reasoning as defeasible inference