Skip to content

Inconsistent assumptions make every test pass

A rule checked under assumptions that cannot all hold passes every test for a bad reason. Below, A AND B under the assumptions A and NOT A is reported both always true and always false, each verdict marked vacuous and the scope marked inconsistent.

Assumptions restrict the rows a check considers to the admissible ones. The two assumptions here, “A is always true” and “A is never true”, leave no admissible row. With nothing to examine, the tautology check finds no counterexample and reports “holds”; the contradiction check finds no witness and also reports “holds”; the satisfiability check finds no witness and reports “violated”. Every one of them carries the vacuous flag, and the scope line says the assumptions are inconsistent.

The engine does not hide this behind a green tick because the honest-results rule requires that a vacuous verdict be labelled. The flag is the signal to look at the assumptions, not the rule. In practice inconsistency arrives gradually: one assumption added for a special case, another added months later that contradicts it, and from then on every check of that model passes.

The remedy is to check the assumptions themselves for consistency, which the engine does as part of every scoped check, and to keep assumptions few and documented. The vacuous-truth page shows the same effect with premises instead of assumptions, and the glossary entry on assumptions explains the scope they create.

rule := A AND B · output
Are the assumptions consistent? No · The assumptions are inconsistent: no assignment satisfies all of them. Dependent checks would hold only vacuously.

Truth table

Inconsistent assumptions make every test pass
#ABrulek1k2Scope
0FALSEFALSEFALSEFALSETRUEexcluded
1FALSETRUEFALSEFALSETRUEexcluded
2TRUEFALSEFALSETRUEFALSEexcluded
3TRUETRUETRUETRUEFALSEexcluded

Plain-language reading

Beginnerrule is true exactly when both A and B are true.
In every other case, rule is false.
About the operators:
- AND is true only when all of its parts are true.
Intermediaterule is true exactly when both A and B are true.
In every other case, rule is false.
Advancedrule is true exactly when both A and B are true [conjunction ∧].
In every other case, rule is false.
Formal notation: A ∧ B
Inconsistent assumptions make every test pass Inconsistent assumptions make every test pass A B rule k1ASSUME k2ASSUME AND NOT
Inconsistent assumptions make every test pass Inconsistent assumptions make every test pass A B rule k1ASSUME k2ASSUME AND NOT

The common slip

Adding an assumption to make a stubborn check pass. If the new assumption contradicts an existing one, every check passes from then on, and the vacuous flag is the only sign.

Questions

How can a formula be both a tautology and a contradiction?

Only over an empty set of rows. Both verdicts are statements about every admissible row, and there are none, so both are vacuously true. The flags on the verdicts say exactly that.

Does the engine still show the full truth table?

Yes, with every row marked out of scope. A table where no row is in scope is the visual form of the same warning.

Related

Worked examples

Tools

See also

Pitfalls

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.