Saltar al contenido

«A o B y C»: la ambigüedad de agrupación y cómo resolverla

«A o B y C» tiene dos lecturas, y son funciones distintas. El analizador lee A OR B AND C como A OR (B AND C); la otra lectura, (A OR B) AND C, difiere en dos de las ocho filas.

La tabla compara las dos. En la fila A = VERDADERO, B = FALSO, C = FALSO la lectura analizada es VERDADERA (A basta por sí sola) y la lectura con paréntesis es FALSA (C es obligatoria); la fila A = VERDADERO, B = VERDADERO, C = FALSO es la otra diferencia. La comprobación de equivalencia informa de la primera como contraejemplo. En todo lo demás las dos coinciden, que es exactamente la razón de que el desliz sobreviva a una prueba superficial.

La elección del analizador es la precedencia estándar, AND antes que OR, igual que la multiplicación antes que la suma. No es el problema; el problema es que el lenguaje natural no tiene regla de precedencia, así que una frase que dice «administradores, o editores con un documento desbloqueado» y otra que dice «administradores o editores, con un documento desbloqueado» suenan igual y significan reglas distintas. Solo quien escribe sabe cuál se pretendía.

El remedio son los paréntesis siempre que AND y OR se encuentran, y una tabla de verdad cuando una regla viene de un texto. La lección sobre agrupación y precedencia practica las dos lecturas, y la página de precedencia imprime la forma totalmente entre paréntesis de lo que escribas para que el análisis nunca sea una sorpresa.

as_parsed := A OR B AND C · salidaother_reading := (A OR B) AND C · salida
¿Son equivalentes as_parsed y other_reading? No Contraejemplo: A = V, B = F, C = F · Exhaustively checked and solver cross-checked · 5 filas

Tabla de verdad

Difieren en esta fila: #4, #6

«A o B y C»: la ambigüedad de agrupación y cómo resolverla
#ABCas_parsedother_reading
0FALSOFALSOFALSOFALSOFALSO
1FALSOFALSOVERDADEROFALSOFALSO
2FALSOVERDADEROFALSOFALSOFALSO
3FALSOVERDADEROVERDADEROVERDADEROVERDADERO
4VERDADEROFALSOFALSOVERDADEROFALSO
5VERDADEROFALSOVERDADEROVERDADEROVERDADERO
6VERDADEROVERDADEROFALSOVERDADEROFALSO
7VERDADEROVERDADEROVERDADEROVERDADEROVERDADERO

Lectura en lenguaje claro

Principianteas_parsed es verdadero exactamente cuando se cumple al menos una de las condiciones siguientes (pueden cumplirse ambas):
1. A es verdadero
2. B y C son ambos verdaderos
En todos los demás casos, as_parsed es falso.
Sobre los operadores:
- OR (O) es inclusivo: es verdadero en cuanto al menos una parte es verdadera, también cuando lo son varias.
- AND (Y) solo es verdadero cuando todas sus partes son verdaderas.
Intermedioas_parsed es verdadero exactamente cuando se cumple al menos una de las condiciones siguientes (pueden cumplirse ambas):
1. A es verdadero
2. B y C son ambos verdaderos
En todos los demás casos, as_parsed es falso.
Avanzadoas_parsed es verdadero exactamente cuando se cumple al menos una de las condiciones siguientes (pueden cumplirse ambas) [disyunción inclusiva ∨]:
1. A es verdadero
2. B y C son ambos verdaderos [conjunción ∧]
En todos los demás casos, as_parsed es falso.
Notación formal: A ∨ B ∧ C
“A or B and C”: the grouping ambiguity and how to resolve it “A or B and C”: the grouping ambiguity and how to resolve it A B C as_parsedPRIMARY other_reading OR AND AND OR
“A or B and C”: the grouping ambiguity and how to resolve it “A or B and C”: the grouping ambiguity and how to resolve it A B C as_parsedPRIMARY other_reading OR AND AND OR

El error habitual

Escribir la regla tal como se dice y dejar que la precedencia decida. «A o B y C» escrito como A OR B AND C exige C solo cuando A es falsa; si C se pretendía como condición para todos, la fórmula admite a cualquier A sin ella.

Preguntas

¿Qué lectura usa el motor?

AND liga antes que OR, así que A OR B AND C es A OR (B AND C). La forma totalmente entre paréntesis que se muestra en cada página hace visible la agrupación, y los paréntesis que escribes se conservan.

¿Cuántas filas debería probar para atrapar esto?

Las dos fórmulas difieren exactamente en dos filas de ocho, ambas con A VERDADERO y C FALSO. Un conjunto de pruebas que nunca tenga A verdadera con C falsa no puede ver la diferencia; las herramientas de pares de independencia eligen filas que sí la ven.

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.