Affirming the consequent: A → B, B, therefore A (invalid, with counterexample)
Affirming the consequent: from A -> B and B, concluding A. The validity check fails and reports the counterexample A = FALSE, B = TRUE, where both premises are true and the conclusion is false.
If A then B; B; therefore A. The form looks like modus ponens with the roles shuffled, which is why it is persuasive: “if the server is down, the page fails to load; the page fails to load; so the server is down”. But pages fail for other reasons. The model has the premises p1, A -> B, and p2, B, and the conclusion A; the engine's reading of the conclusion is “A is true”. On the four-row table p1 is false only on row 2 and p2 is true on rows 1 and 3.
The validity check is violated: in the counterexample every premise is true but the conclusion is false. The engine's counterexample is A = FALSE, B = TRUE, row 1 of the table: A -> B holds because A is false, B holds, and A does not. The other row where both premises hold, row 3, A = TRUE, B = TRUE, does make the conclusion true, which is why the fallacy often seems to work. The premise-consistency check holds with the witness A = FALSE, B = TRUE, so the premises are jointly possible; the problem is purely that they do not force the conclusion.
This fallacy is the engine behind most misread correlations and most “it worked once” debugging: a symptom is consistent with a cause, so the cause is assumed. It is the argument-form version of the converse slip, and the converse page shows the same row failing an equivalence check. The thing to watch is that one confirming case proves nothing: the counterexample row is a complete, concrete situation in which the premises hold and the conclusion is false, and the engine replays it before showing it.
p1 — A -> B · premisep2 — B · premiseconclusion — A · conclusion
Exact checks
Truth table (4 rows)
| # | A | B | p1 | p2 | conclusion |
|---|---|---|---|---|---|
| 0 | FALSE | FALSE | TRUE | FALSE | FALSE |
| 1 | FALSE | TRUE | TRUE | TRUE | FALSE |
| 2 | TRUE | FALSE | FALSE | FALSE | TRUE |
| 3 | TRUE | TRUE | TRUE | TRUE | TRUE |
Plain-language reading
BeginnerConclusion: A is true.
IntermediateConclusion: A is true.
AdvancedConclusion: A is true.
Formal notation: A
Logic diagram
The common slip
Accepting the conclusion because the premises are true in the case you have in mind. Validity is about every case. The row A = FALSE, B = TRUE is a case with both premises true and the conclusion false; one such row is enough to make the argument invalid, however many rows agree with it.
Questions
What would make the argument valid?
Replacing the implication with a biconditional, A <-> B, so that B holds only when A does. Then the row A = FALSE, B = TRUE makes the first premise false, the counterexample disappears, and the validity check holds. That is a stronger premise, and it must actually be true to be of any use.
Related
Guides
Operators and gates
Tools
- Truth table generator: any Boolean expression, up to 12 variables, with intermediate columns
- Argument validity checker: premises, conclusion, counterexample or proof
- Karnaugh map solver: 2 to 4 variables, groups, SOP and POS, don’t-cares from assumptions
Practice
See also
- Modus ponens: A → B, A, therefore B (valid)
- The converse slip: A → B is not B → A
- Denying the antecedent: A → B, NOT A, therefore NOT B (invalid)
- Counterexample in logic: meaning and examples
- Argument validity checker: premises, conclusion, counterexample or proof
- Lesson 9: Counterexamples (intermediate, 12 min)
Worked examples
Generated from the Tangibool engine, semantics tangibool-semantics/1, engine 1.0.0, build . Every table, map, simplification and verdict on these pages was computed by the Tangibool engine when the site was built, and every claim was re-checked by the same exact checker the app uses. Limits are stated where they apply. © 2026 Foreranger LTD.