Saltar al contenido

Una entrada sin asignar no es FALSO: asignaciones incompletas

Una entrada sin valor no es FALSO. Evaluar A AND B con A = VERDADERO y B sin asignar no da ningún valor, y el motor dice qué entrada falta en lugar de adivinar.

La evaluación de abajo asigna A = VERDADERO y deja fuera a B. El resultado se informa como incompleto, con B en la lista de entradas sin valor, y no se da ningún valor de salida. Una herramienta que pusiera B a FALSO por defecto habría devuelto FALSO y habría parecido terminada; una que la pusiera a VERDADERO habría devuelto VERDADERO. Las dos habrían inventado datos.

El motor tampoco llega a una respuesta por cortocircuito. FALSE AND B podría decidirse sin B, y algunos evaluadores lo dirían; la regla del motor es que se exige una asignación completa antes de informar de cualquier valor, para que el resultado de una regla nunca dependa de qué entradas se rellenaron primero. Las comprobaciones se ejecutan solo sobre asignaciones completas, que es lo que hace de una tabla de verdad una tabla.

El patrón importa en formularios y en APIs: una casilla sin marcar, un campo ausente y una columna NULL son todos «sin valor», y tratarlos como FALSO es una decisión que la regla debe tomar explícitamente, con una entrada como consent_given cuya ausencia es un FALSO por definición, no por accidente. El error de SQL sobre NULL es el mismo punto en otro lenguaje.

Evaluación incompleta

A AND B con A = TRUE y B sin asignar: resultado sin valor (asignación incompleta); entradas sin valor: B.

El error habitual

Suponer que una entrada que nadie fijó es FALSO. En el modelo no tiene valor; en un formulario puede significar «no preguntado»; en una base de datos es NULL. Convierte el valor por defecto en una regla enunciada, y el informe de asignación incompleta del motor deja de aparecer por la razón correcta.

Preguntas

¿El motor evalúa alguna vez con una asignación parcial?

Informa de la evaluación como incompleta y nombra las entradas que faltan; no produce ningún valor de salida. La exportación a Python se comporta igual y lanza un error ante una entrada ausente.

¿Cómo modelo una entrada opcional?

Con dos entradas, una que dice si el valor se conoce y otra que da el valor, por ejemplo banned_known AND NOT banned. Cada combinación es entonces una fila completa y las comprobaciones la cubren.

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.