Lección 9: Contraejemplos
Una sola asignación concreta puede refutar una equivalencia o un argumento. Esta lección intermedia, de unos doce minutos, encuentra contraejemplos, los reproduce, los conserva como pruebas de regresión, y explica qué significa que no haya ninguno.
Una sola asignación concreta puede refutar una equivalencia o un argumento. Encuentra contraejemplos, reprodúcelos y consérvalos como pruebas de regresión.
El primer paso compara la regla de entrada prevista con la versión de un colega, member OR (invited AND NOT banned), y zanja la cuestión con una asignación, un socio vetado, en la que las dos difieren. El segundo paso trata de la confianza: cada contraejemplo que muestra el motor lo reproduce un evaluador independiente antes de que lo veas, es una asignación completa que cualquiera puede reproducir, y lo correcto es convertirlo en una prueba. El tercer paso aplica la idea a los argumentos, donde un contraejemplo hace VERDADERAS todas las premisas y FALSA la conclusión, con discount -> member, member, por tanto discount como ejemplo inválido. El cuarto paso dice qué significa que no haya contraejemplo: la afirmación se cumple en todas las asignaciones que permiten los supuestos, que es una demostración dentro de ese alcance y no más allá.
Las tres afirmaciones de equivalencia y validez de la lección se verifican en cada construcción. Los ejercicios piden la asignación que expone la regla alternativa, una predicción de su salida, la clasificación de (A -> B) -> (B -> A), y el veredicto sobre un argumento con un aspersor.
La sección de pruebas se apoya directamente en esta lección: la página sobre contraejemplos como pruebas muestra la fila del primer paso convertida en prueba de regresión, y las páginas sobre pares de independencia generalizan «una fila que importa» a «un par por entrada».
Haz esta lección de forma interactiva en la app
Pasos
1. Una asignación lo decide
La regla de entrada prevista es (member OR invited) AND NOT banned. Un compañero escribió member OR (invited AND NOT banned). ¿Son lo mismo?
No. Con member=TRUE, invited=FALSE, banned=TRUE, la regla prevista deniega la entrada, pero la alternativa la permite: la prohibición no se aplicó a la vía de las socias. Basta un solo contraejemplo para refutar la equivalencia.
intended := (member OR invited) AND NOT banned · salidaalternative := member OR (invited AND NOT banned) · salida member: la persona es socia; invited: la persona tiene una invitación; banned: la persona tiene prohibida la entrada;
| # | member | invited | banned | intended | alternative |
|---|---|---|---|---|---|
| 0 | FALSO | FALSO | FALSO | FALSO | FALSO |
| 1 | FALSO | FALSO | VERDADERO | FALSO | FALSO |
| 2 | FALSO | VERDADERO | FALSO | VERDADERO | VERDADERO |
| 3 | FALSO | VERDADERO | VERDADERO | FALSO | FALSO |
| 4 | VERDADERO | FALSO | FALSO | VERDADERO | VERDADERO |
| 5 | VERDADERO | FALSO | VERDADERO | FALSO | VERDADERO |
| 6 | VERDADERO | VERDADERO | FALSO | VERDADERO | VERDADERO |
| 7 | VERDADERO | VERDADERO | VERDADERO | FALSO | VERDADERO |
Compara intended con alternative y luego reproduce el contraejemplo en el diagrama.
not-equivalent intended / alternative · se cumple
2. Reprodúcelo y consérvalo
Cada contraejemplo que muestra Tangibool lo reproduce un evaluador independiente antes de que lo veas. Es una asignación completa, así que cualquiera puede reproducirlo.
Conviértelo en una prueba de regresión: conserva las entradas y escribe el resultado esperado a partir del requisito (aquí FALSE: quien tiene la entrada prohibida nunca entra), no a partir de la fórmula que tengas en ese momento.
alternative := member OR (invited AND NOT banned) · salida member: la persona es socia; invited: la persona tiene una invitación; banned: la persona tiene prohibida la entrada;
| # | member | invited | banned | alternative |
|---|---|---|---|---|
| 0 | FALSO | FALSO | FALSO | FALSO |
| 1 | FALSO | FALSO | VERDADERO | FALSO |
| 2 | FALSO | VERDADERO | FALSO | VERDADERO |
| 3 | FALSO | VERDADERO | VERDADERO | FALSO |
| 4 | VERDADERO | FALSO | FALSO | VERDADERO |
| 5 | VERDADERO | FALSO | VERDADERO | VERDADERO |
| 6 | VERDADERO | VERDADERO | FALSO | VERDADERO |
| 7 | VERDADERO | VERDADERO | VERDADERO | VERDADERO |
Guarda el contraejemplo como prueba de alternative con el valor esperado FALSE y observa cómo falla.
3. Contraejemplos de argumentos
En un argumento, un contraejemplo hace TRUE todas las premisas y FALSE la conclusión.
Premisas discount -> member y member; conclusión discount. El contraejemplo discount=FALSE, member=TRUE muestra una socia sin descuento: las premisas lo permiten, así que la conclusión no se sigue.
p1 — discount -> member · premisap2 — member · premisaconclusion — discount · conclusión member: la persona es socia; discount: la persona obtiene un descuento;
| # | discount | member | p1 | p2 | conclusion |
|---|---|---|---|---|---|
| 0 | FALSO | FALSO | VERDADERO | FALSO | FALSO |
| 1 | FALSO | VERDADERO | VERDADERO | VERDADERO | FALSO |
| 2 | VERDADERO | FALSO | FALSO | FALSO | VERDADERO |
| 3 | VERDADERO | VERDADERO | VERDADERO | VERDADERO | VERDADERO |
Comprueba la validez, añade después la premisa member -> discount y vuelve a comprobar.
invalid · se cumple
4. Sin contraejemplo: demostrado, dentro del alcance
Cuando la comprobación exacta no encuentra ningún contraejemplo, la afirmación se cumple para todas las asignaciones que permiten los supuestos indicados. Eso es una demostración, algo que ningún número de ejemplos superados puede dar.
Aquí premium OR member y member coinciden solo gracias al supuesto premium -> member (todo cliente prémium es socio). Desactiva el supuesto y aparecerá un contraejemplo. Si los supuestos son inconsistentes, los resultados solo se cumplen de forma vacua, y Tangibool lo indica.
either := premium OR member · salidajust_member := member · salida premium: el cliente tiene un plan prémium; member: la persona es socia;
| # | premium | member | either | just_member | k1 | Ámbito |
|---|---|---|---|---|---|---|
| 0 | FALSO | FALSO | FALSO | FALSO | VERDADERO | en ámbito |
| 1 | FALSO | VERDADERO | VERDADERO | VERDADERO | VERDADERO | en ámbito |
| 2 | VERDADERO | FALSO | VERDADERO | FALSO | FALSO | excluida |
| 3 | VERDADERO | VERDADERO | VERDADERO | VERDADERO | VERDADERO | en ámbito |
Compara either con just_member, luego desactiva el supuesto y vuelve a comparar.
equivalent either / just_member · se cumple
Ejercicios
- Encuentra una asignación en la que la alternativa deje entrar a alguien que la regla prevista rechaza. (find-assignment)
- Para
alternative := member OR (invited AND NOT banned), predice la salida para una socia con la entrada prohibida y sin invitación:member=TRUE, invited=FALSE, banned=TRUE. (predict-output) - ¿
(A -> B) -> (B -> A)vale siempre TRUE? Clasifícala. (classify) - Premisas:
sprinkler -> wet_lawnywet_lawn. Conclusión:sprinkler. ¿Válido o no? Si no lo es, da un contraejemplo. (argument-validity)
Haz esta lección de forma interactiva en la app
Preguntas
¿Un contraejemplo puede estar equivocado?
El motor reproduce cada testigo con un evaluador independiente antes de mostrarlo, y etiqueta el resultado si la reproducción falla. Lo que no puede juzgar es si la asignación es realista, y ahí entran los supuestos.
¿Y si dos fórmulas son equivalentes?
Entonces no hay contraejemplo, y el comprobador lo dice después de examinar todas las filas dentro del alcance. Eso es una demostración de equivalencia dentro de los supuestos enunciados, el punto del cuarto paso.
Relacionado
Herramientas
Véase también
- Contraejemplo: definición, ejemplo y equivalente en inglés
- Testigo (asignación que satisface): definición, ejemplo y equivalente en inglés
- Convertir un contraejemplo en una prueba de regresión
- El error de la regla de entrada: socio OR (invitado AND NOT vetado) y el caso que difiere
- Comprobador de equivalencia lógica: dos expresiones, veredicto exacto, contraejemplo
- Lección 8: Argumentos y validez
- Lección 12: Diseñar pruebas que encuentren errores
- La cobertura no es corrección: las pruebas siguen necesitando resultados esperados
Lecciones
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.