Reglas de elegibilidad: el patrón, las excepciones habituales y las pruebas
Las reglas de elegibilidad comparten una forma: un grupo que cumple, un motivo de exclusión y un segundo requisito. La regla de descuento (student OR senior) AND NOT expired AND (member OR coupon) es el patrón con cinco condiciones, treinta y dos filas y un conjunto previsible de deslices.
Lee la regla como tres cláusulas unidas por AND: quién cumple (student OR senior), qué excluye (NOT expired), y qué más hace falta (member OR coupon). Cada cláusula es un OR de alternativas o una excepción negada, y por eso el patrón sobrevive a los nuevos requisitos: una nueva forma de cumplir se une al primer OR, una nueva exclusión se une al AND como otro NOT, un nuevo requisito se une como otro OR entre paréntesis. Las comprobaciones exactas de la página muestran que la regla es contingente, con el testigo senior = VERDADERO, expired = FALSO, coupon = VERDADERO, el resto FALSO, como un caso elegible.
Los deslices habituales son los que cubren las páginas de errores comunes: una excepción escrita con OR en lugar de AND NOT (cualquier desconocido sin caducar cumple), una alternativa escrita con AND en lugar de OR (solo cumplen los estudiantes mayores), un paréntesis omitido de modo que el motivo de exclusión liga a una sola alternativa (los estudiantes con carné caducado cumplen a través de la cláusula de estudiante, a la que el motivo de exclusión ya no llega). Cada uno es un error de un operador, y cada uno cambia varias filas de treinta y dos.
Las pruebas que los atrapan son los pares de independencia: un par por condición, unos seis escenarios, cada uno mostrando que la condición por sí sola cambia el resultado. La regla de aquí tiene cinco condiciones y seis bastarían; la tabla completa es para el motor, los pares son para el conjunto de pruebas, y la página de tablas de decisión muestra cómo la vista del dueño de la regla se corresponde con las dos cosas.
Ejemplo
eligible := (student OR senior) AND NOT expired AND (member OR coupon) · salida
Comprobaciones exactas
Tabla de verdad (32 filas)
| # | student | senior | expired | member | coupon | eligible |
|---|---|---|---|---|---|---|
| 0 | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO |
| 1 | FALSO | FALSO | FALSO | FALSO | VERDADERO | FALSO |
| 2 | FALSO | FALSO | FALSO | VERDADERO | FALSO | FALSO |
| 3 | FALSO | FALSO | FALSO | VERDADERO | VERDADERO | FALSO |
| 4 | FALSO | FALSO | VERDADERO | FALSO | FALSO | FALSO |
| 5 | FALSO | FALSO | VERDADERO | FALSO | VERDADERO | FALSO |
| 6 | FALSO | FALSO | VERDADERO | VERDADERO | FALSO | FALSO |
| 7 | FALSO | FALSO | VERDADERO | VERDADERO | VERDADERO | FALSO |
| 8 | FALSO | VERDADERO | FALSO | FALSO | FALSO | FALSO |
| 9 | FALSO | VERDADERO | FALSO | FALSO | VERDADERO | VERDADERO |
| 10 | FALSO | VERDADERO | FALSO | VERDADERO | FALSO | VERDADERO |
| 11 | FALSO | VERDADERO | FALSO | VERDADERO | VERDADERO | VERDADERO |
| 12 | FALSO | VERDADERO | VERDADERO | FALSO | FALSO | FALSO |
| 13 | FALSO | VERDADERO | VERDADERO | FALSO | VERDADERO | FALSO |
| 14 | FALSO | VERDADERO | VERDADERO | VERDADERO | FALSO | FALSO |
| 15 | FALSO | VERDADERO | VERDADERO | VERDADERO | VERDADERO | FALSO |
| 16 | VERDADERO | FALSO | FALSO | FALSO | FALSO | FALSO |
| 17 | VERDADERO | FALSO | FALSO | FALSO | VERDADERO | VERDADERO |
| 18 | VERDADERO | FALSO | FALSO | VERDADERO | FALSO | VERDADERO |
| 19 | VERDADERO | FALSO | FALSO | VERDADERO | VERDADERO | VERDADERO |
| 20 | VERDADERO | FALSO | VERDADERO | FALSO | FALSO | FALSO |
| 21 | VERDADERO | FALSO | VERDADERO | FALSO | VERDADERO | FALSO |
| 22 | VERDADERO | FALSO | VERDADERO | VERDADERO | FALSO | FALSO |
| 23 | VERDADERO | FALSO | VERDADERO | VERDADERO | VERDADERO | FALSO |
| 24 | VERDADERO | VERDADERO | FALSO | FALSO | FALSO | FALSO |
| 25 | VERDADERO | VERDADERO | FALSO | FALSO | VERDADERO | VERDADERO |
| 26 | VERDADERO | VERDADERO | FALSO | VERDADERO | FALSO | VERDADERO |
| 27 | VERDADERO | VERDADERO | FALSO | VERDADERO | VERDADERO | VERDADERO |
| 28 | VERDADERO | VERDADERO | VERDADERO | FALSO | FALSO | FALSO |
| 29 | VERDADERO | VERDADERO | VERDADERO | FALSO | VERDADERO | FALSO |
| 30 | VERDADERO | VERDADERO | VERDADERO | VERDADERO | FALSO | FALSO |
| 31 | VERDADERO | VERDADERO | VERDADERO | VERDADERO | VERDADERO | FALSO |
Lectura en lenguaje claro
Principianteeligible es verdadero exactamente cuando se cumplen todas las condiciones siguientes:
1. al menos uno entre student y senior es verdadero (pueden serlo ambos)
2. expired es falso
3. al menos uno entre member y coupon es verdadero (pueden serlo ambos)
En todos los demás casos, eligible es falso.
Sobre los operadores:
- AND (Y) solo es verdadero cuando todas sus partes son verdaderas.
- OR (O) es inclusivo: es verdadero en cuanto al menos una parte es verdadera, también cuando lo son varias.
- NOT (NO) invierte un valor: lo verdadero pasa a ser falso y lo falso, verdadero.
Intermedioeligible es verdadero exactamente cuando se cumplen todas las condiciones siguientes:
1. al menos uno entre student y senior es verdadero (pueden serlo ambos)
2. expired es falso
3. al menos uno entre member y coupon es verdadero (pueden serlo ambos)
En todos los demás casos, eligible es falso.
Avanzadoeligible es verdadero exactamente cuando se cumplen todas las condiciones siguientes [conjunción ∧]:
1. al menos uno entre student y senior es verdadero (pueden serlo ambos) [disyunción inclusiva ∨]
2. expired es falso [negación ¬]
3. al menos uno entre member y coupon es verdadero (pueden serlo ambos) [disyunción inclusiva ∨]
En todos los demás casos, eligible es falso.
Notación formal: (student ∨ senior) ∧ ¬expired ∧ (member ∨ coupon)
Diagrama lógico
El error habitual
Dejar que el motivo de exclusión ligue a una sola alternativa. student OR senior AND NOT expired se lee como student OR (senior AND NOT expired), así que un carné de estudiante caducado sigue cumpliendo. Pon el grupo entre paréntesis, y deja que la tabla confirme la fila.
Preguntas
¿Cómo añado un segundo motivo de exclusión?
Como otra cláusula AND NOT: … AND NOT expired AND NOT fraud_flag. De Morgan te permite escribir el par como AND NOT (expired OR fraud_flag), que el comprobador de equivalencia confirmará.
¿Y si dos cláusulas se solapan?
Los solapamientos no son problema en lógica (un estudiante que además es socio cumple dos veces) y solo importan cuando la regla debe ser exclusiva. La ley de absorción elimina las cláusulas realmente redundantes, y el simplificador las señala.
Relacionado
Véase también
- Regla de descuento: (estudiante OR mayor) AND NOT caducado AND (socio OR cupon)
- Elegibilidad de un préstamo: ingresos_ok AND (credito_ok OR avalista) AND NOT quiebra
- Reglas de control de acceso: roles, excepciones y el error del usuario vetado
- Prueba con tabla de decisión, ejemplo resuelto (estilo ISTQB Foundation 4.2.3)
- «A menos que» en una regla: AND NOT, no OR
- «A o B y C»: la ambigüedad de agrupación y cómo resolverla
- Ley de absorción: A + A·B = A, con demostración
- Pares de independencia MC/DC, ejemplo resuelto con el informe de cobertura del motor
Pruebas y reglas
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.