«=» no es un operador booleano: usa ↔ o compara las fórmulas
A = B no es una fórmula en este lenguaje. El analizador lo dice, ofrece <-> cuando se quería «los dos lados tienen el mismo valor», y remite al espacio de comparación cuando la intención era comparar dos fórmulas.
El diagnóstico del propio analizador se registra abajo: = no es un operador de expresión; usa <-> cuando los dos lados deben tener el mismo valor, compara fórmulas completas en el espacio de comparación, y ten en cuenta que las definiciones de salida usan :=. Tres intenciones distintas se esconden tras un mismo signo, y el lenguaje se niega a adivinar cuál.
La primera intención es una fórmula que es VERDADERA cuando A y B coinciden. Eso es el bicondicional, A <-> B, la misma función que la compuerta XNOR, con su propia tabla de verdad. La segunda es una afirmación sobre dos fórmulas, «F es igual a G», que significa que F y G tienen la misma tabla en todas las filas; eso es la equivalencia lógica, un veredicto y no una fórmula, y el comprobador de equivalencia lo da con un contraejemplo cuando falla. La tercera es una definición, «sea allow igual a A AND B», que el lenguaje escribe como allow := A AND B.
Los libros escriben = para las tres cosas, y muchas calculadoras también, y por eso el signo se rechaza en lugar de asignarse en silencio a una de ellas. Los errores sobre el doble igual y el distinto cubren las grafías de programación de la misma confusión.
Lo que dice el analizador
| Escribiste | Código | Por qué se rechaza | Corrección ofrecida |
|---|---|---|---|
| A = B | unsupported-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 <-> |
El error habitual
Escribir una ley como A AND (B OR C) = (A AND B) OR (A AND C) y esperar una demostración. Eso es una afirmación sobre dos fórmulas; introduce los dos lados en el comprobador de equivalencia, y demostrará o refutará la afirmación en todas las filas.
Preguntas
¿Puedo escribir A = TRUE para decir que A se cumple?
No, y no hace falta: la fórmula A ya se cumple exactamente en las filas en las que A es VERDADERO. A <-> TRUE se acepta y se simplifica a A.
¿Qué hace :=?
Da nombre a una salida: allow := member AND NOT banned define allow, a la que otras fórmulas pueden referirse después por su nombre. Es una definición, no un operador dentro de una fórmula.
Relacionado
Herramientas
- Comprobador de equivalencia lógica: dos expresiones, veredicto exacto, contraejemplo
- Generador de tablas de verdad: cualquier expresión booleana, hasta 12 variables, con columnas intermedias
Véase también
- Bicondicional (↔, si y solo si): tabla de verdad y ejemplos
- El doble igual (==) compara valores; para equivalencia lógica usa ↔
- != entre booleanos es XOR
- Equivalencia lógica: definición, ejemplo y equivalente en inglés
- Comprobador de equivalencia lógica: dos expresiones, veredicto exacto, contraejemplo
- Símbolos y notaciones de la lógica booleana: NOT, AND, OR en palabras, código y matemáticas
Errores comunes
Generado a partir del motor de Tangibool, semántica tangibool-semantics/1, motor 1.0.0, compilación . Cada tabla, mapa, simplificación y veredicto de estas páginas lo calculó el motor de Tangibool al compilar el sitio, y cada afirmación la volvió a comprobar el mismo verificador exacto que usa la app. Los límites se indican donde aplican. © 2026 Foreranger LTD.