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