Saltar al contenido

«=» 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

EscribisteCódigoPor qué se rechazaCorrección ofrecida
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 <->

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

Véase también

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.