Skip to content

“=” is not a Boolean operator: use ↔ or compare the formulas

A = B is not a formula in this language. The parser says so, offers <-> when “both sides have the same value” was meant, and points to the comparison workbench when the intent was to compare two formulas.

The parser's own diagnostic is recorded below: = is not an expression operator; use <-> when both sides must have the same value, compare whole formulas in the Compare workbench, and note that output definitions use :=. Three different intentions hide behind the one sign, and the language refuses to guess which.

The first intention is a formula that is TRUE when A and B agree. That is the biconditional, A <-> B, the same function as the XNOR gate, with its own truth table. The second is a claim about two formulas, “F equals G”, which means that F and G have the same table on every row; that is logical equivalence, a verdict rather than a formula, and the equivalence checker gives it with a counterexample when it fails. The third is a definition, “let allow be A AND B”, which the language writes as allow := A AND B.

Textbooks write = for all three, and so do many calculators, which is why the sign is rejected rather than quietly mapped to one of them. The double-equals and not-equal pitfalls cover the programming spellings of the same confusion.

What the parser says

You typedCodeWhy it is rejectedRepair offered
A = Bunsupported-operator`=` is not an expression operator. Use `<->` when both sides must have the same value; compare whole formulas in the Compare workbench. Output definitions use `:=`.Replace with <->

The common slip

Typing a law as A AND (B OR C) = (A AND B) OR (A AND C) and expecting a proof. That is a claim about two formulas; enter the two sides in the equivalence checker, and it will prove or refute the claim on every row.

Questions

Can I write A = TRUE to say A holds?

No, and you do not need to: the formula A already holds exactly on the rows where A is TRUE. A <-> TRUE is accepted and simplifies to A.

What does := do?

It names an output: allow := member AND NOT banned defines allow, which other formulas may then refer to by name. It is a definition, not an operator inside a formula.

Related

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.