formal fallacies
on this page
overview
formal fallacies are errors in the logical structure of arguments. they make arguments invalid - even if all premises are true, the conclusion doesnโt necessarily follow. these are โformalโ because the error lies in the form or pattern of reasoning, not the content.
understanding formal fallacies is crucial for constructing valid arguments, building sound reasoning systems, and identifying structural errors in automated logical reasoning.
characteristics
structural errors
formal fallacies violate rules of valid inference:
valid form (modus ponens):
P โ Q (if P then Q)
P (P is true)
โด Q (therefore Q)
invalid form (affirming the consequent):
P โ Q (if P then Q)
Q (Q is true)
โด P (therefore P) (INVALID) content independence
the same formal structure is invalid regardless of content:
example 1:
if it rains, the ground is wet
the ground is wet
โด it's raining (INVALID)
example 2:
if socrates is human, he is mortal
socrates is mortal
โด socrates is human (INVALID) both use the invalid โaffirming the consequentโ form.
detectability
formal fallacies can be identified through:
- logical analysis: examining argument structure
- truth tables: showing invalidity
- counterexamples: finding cases where premises are true but conclusion false
- automated checking: using logical proof systems
common formal fallacies
affirming the consequent
pattern: (INVALID)
example:
if john studied hard, he passed the exam
john passed the exam
โด john studied hard why invalid: john might have passed through luck, prior knowledge, or cheating.
counterexample method: find case where premises are true but conclusion false:
- premise 1 (true): โif john studied hard, he passedโ
- premise 2 (true): โjohn passedโ
- conclusion (false): โjohn studied hardโ (he actually got lucky)
denying the antecedent
pattern: (INVALID)
example:
if it rains, the ground gets wet
it's not raining
โด the ground is not wet why invalid: sprinklers, flooding, or spilled water could wet the ground.
valid alternative: contrapositive reasoning
if it rains, the ground gets wet
the ground is not wet
โด it's not raining โ (modus tollens) undistributed middle
pattern (in syllogisms): when the middle term isnโt distributed in either premise
example:
all cats are mammals
all dogs are mammals
โด all cats are dogs why invalid: sharing a common property doesnโt make things identical.
formal analysis:
- middle term: โmammalsโ
- not distributed in either premise (doesnโt refer to all mammals)
- conclusion doesnโt follow
illicit major term
pattern: major term distributed in conclusion but not in major premise
example:
all politicians are public figures
some public figures are corrupt
โด all politicians are corrupt why invalid: the major term โcorruptโ is distributed in conclusion (refers to all corrupt things) but not in the premise.
illicit minor term
pattern: minor term distributed in conclusion but not in minor premise
example:
no saints are sinners
some humans are not saints
โด no humans are sinners why invalid: โhumansโ is distributed in conclusion but not in the minor premise.
detection methods
structural analysis
-
identify argument form
premise 1: P โ Q premise 2: Q conclusion: P form: affirming the consequent (invalid) -
check against valid inference rules
- does the pattern match modus ponens, modus tollens, etc.?
- if not, likely a formal fallacy
-
apply logical transformations
- convert to standard logical notation
- use proof methods to test validity
truth table method
construct truth table to show invalidity:
affirming the consequent: P โ Q, Q โข P
| P | Q | PโQ | premises true? | conclusion P |
|---|---|-----|----------------|-------------|
| T | T | T | โ | T |
| T | F | F | (INVALID) | T |
| F | T | T | โ | F (INVALID) |
| F | F | T | (INVALID) | F | row 3 shows premises can be true while conclusion is false โ invalid.
counterexample method
find concrete case where:
- all premises are true
- conclusion is false
- if possible, argument is invalid
claim: "all good students study hard; mary studies hard; therefore mary is a good student"
counterexample:
- mary studies hard (true)
- if good students study hard, then mary studying means she's good (premise true)
- but mary might study hard yet perform poorly due to learning disabilities
- so mary could study hard but not be a good student
- therefore: premises true, conclusion false โ invalid formal systems and validity
propositional logic
uses truth tables and natural deduction:
# pseudocode for validity checking
def is_valid_propositional(premises, conclusion):
for assignment in all_truth_assignments():
if all_premises_true(premises, assignment):
if not conclusion_true(conclusion, assignment):
return False # counterexample found
return True # valid predicate logic
uses proof methods and model theory:
valid syllogism:
โx(P(x) โ Q(x)) (all P are Q)
P(a) (a is P)
โด Q(a) (therefore a is Q)
invalid form:
โx(P(x) โ Q(x)) (all P are Q)
Q(a) (a is Q)
โด P(a) (therefore a is P) (INVALID) modal logic
handles necessity and possibility:
valid:
โกP (P is necessarily true)
โด โP (therefore P is possibly true)
invalid:
โP (P is possibly true)
โด โกP (therefore P is necessarily true) (INVALID) automated detection
logic programming
% define invalid forms
invalid_form(affirming_consequent, [implies(P,Q), Q], P).
invalid_form(denying_antecedent, [implies(P,Q), not(P)], not(Q)).
% check if argument matches invalid pattern
is_formal_fallacy(Premises, Conclusion) :-
invalid_form(Fallacy, Pattern, ConclusionPattern),
match_pattern(Premises, Pattern),
match_pattern(Conclusion, ConclusionPattern),
!,
write('Formal fallacy detected: '), write(Fallacy). theorem provers
# using automated theorem prover
def check_validity_automated(premises, conclusion):
theorem_prover = LogicalProver()
# try to prove conclusion from premises
result = theorem_prover.prove(premises, conclusion)
if result.provable:
return "valid"
elif result.disprovable:
return "invalid (formal fallacy)"
else:
return "undecidable" pattern matching
# detect common formal fallacy patterns
def detect_formal_fallacies(argument):
patterns = {
'affirming_consequent': r'if (.+) then (.+)\. (.+)\. therefore (.+)\.',
'denying_antecedent': r'if (.+) then (.+)\. not (.+)\. therefore not (.+)\.'
}
for fallacy_type, pattern in patterns.items():
if re.match(pattern, argument):
return f"formal fallacy: {fallacy_type}"
return "no formal fallacy detected" real-world examples
legal reasoning
fallacious legal argument:
if the defendant committed the crime, there would be fingerprints
there are fingerprints
โด the defendant committed the crime
problem: affirming the consequent
reality: fingerprints could be from innocent earlier presence medical diagnosis
fallacious diagnostic reasoning:
if patient has disease X, they show symptoms Y
patient shows symptoms Y
โด patient has disease X
problem: affirming the consequent
reality: many diseases can cause the same symptoms scientific reasoning
fallacious hypothesis testing:
if theory T is true, we observe effect E
we observe effect E
โด theory T is true
problem: affirming the consequent
reality: multiple theories might predict the same effect political arguments
fallacious policy reasoning:
if policy P is good, experts will support it
experts support policy P
โด policy P is good
problem: affirming the consequent
reality: experts might support bad policies for other reasons avoiding formal fallacies
use valid inference rules
learn and apply only valid patterns:
valid patterns:
- modus ponens:
- modus tollens:
- hypothetical syllogism:
- disjunctive syllogism:
check logical structure
before accepting conclusions:
- identify the logical form
- verify it matches a valid inference rule
- if unsure, construct truth table or find counterexample
use proof methods
for complex arguments:
- convert to formal logical notation
- apply systematic proof methods
- use automated theorem provers when available
distinguish form from content
remember:
- validity depends only on logical structure
- soundness requires both validity and true premises
- formal fallacies make arguments invalid regardless of content truth
relationship to informal fallacies
key differences
| formal fallacies | informal fallacies |
|---|---|
| structural errors | content/context errors |
| form-dependent | content-dependent |
| mechanically detectable | require domain knowledge |
| always invalid | may be reasonable in context |
interaction
arguments can contain both:
combined fallacy:
if john is a good person, he tells the truth (premise)
john tells the truth (premise)
therefore john is a good person (formal fallacy: affirming consequent)
also, john is ugly and smells bad (informal fallacy: ad hominem)
so don't trust his claims about anything detection strategies
-
first check formal structure
- is the logical form valid?
- use mechanical checking methods
-
then check content and context
- are premises relevant and adequate?
- apply informal fallacy analysis
computational complexity
decidability
- propositional logic: validity checking is decidable but np-complete
- first-order logic: validity checking is undecidable in general
- restricted fragments: many useful fragments are decidable
practical approaches
# efficient validity checking strategies
def check_validity_efficiently(premises, conclusion):
# try fast heuristics first
if quick_pattern_match(premises, conclusion):
return "likely valid"
# use sat solvers for propositional logic
if is_propositional(premises, conclusion):
return sat_solver_validity_check(premises, conclusion)
# use theorem prover with timeouts for first-order
return bounded_theorem_proving(premises, conclusion, timeout=30) scalability
for large knowledge bases:
- indexing: organize rules by logical patterns
- caching: store validity results
- approximation: use sound but incomplete fast checks
- parallelization: check multiple inferences simultaneously
teaching formal fallacies
progression
- basic patterns: start with affirming/denying patterns
- truth tables: mechanical validity checking
- natural deduction: formal proof methods
- practical examples: apply to real arguments
- automated tools: use theorem provers and logic checkers
common student errors
- confusing validity with truth
- thinking invalid arguments are always โwrongโ
- not recognizing pattern instances
- conflating formal and informal fallacies
exercises
exercise 1: identify the formal fallacy
"if sarah is a lawyer, she's intelligent. sarah is intelligent. therefore sarah is a lawyer."
exercise 2: create counterexample
show why the above argument is invalid by finding a case where premises are true but conclusion false.
exercise 3: construct valid alternative
rewrite the argument to make it formally valid. further reading
foundational texts
- irving copi: โsymbolic logicโ (formal logical systems)
- patrick suppes: โintroduction to logicโ (formal methods)
- elliott mendelson: โmathematical logicโ (advanced formal systems)
computational approaches
- mordechai ben-ari: โmathematical logic for computer scienceโ
- steven roman: โintroduction to the mathematics of computer graphicsโ
- michael huth: โlogic in computer scienceโ
automated reasoning
- alan robinson: โlogic: form and functionโ (automated theorem proving)
- wolfgang bibel: โautomated theorem provingโ (comprehensive treatment)
- handbook of automated reasoning (multiple volumes)