Inicio · Parte 04 — Matemática discreta para computación
p → q ≡ ¬p ∨ q
p → q ≡ ¬q → ¬p (contrarrecíproca)
p → q ≢ q → p (recíproca)
La lógica proposicional asigna un valor de verdad a cada enunciado y define cómo se combinan. El conector que causa más problemas es la implicación, porque su definición formal no coincide con el uso coloquial: p → q es falsa únicamente cuando p es verdadera y q falsa. Si p es falsa, la implicación es verdadera sea cual sea q, lo que se llama verdad vacua.
Esa definición tiene una consecuencia práctica inmediata: «todos los elementos de la lista vacía cumplen la condición» es cierto, y por eso all([]) devuelve True en Python. No es una rareza del lenguaje: es la lógica correcta.
La equivalencia con la contrarrecíproca es la herramienta de demostración más útil de toda la matemática. Probar «si n² es par entonces n es par» directamente es incómodo; probar «si n es impar entonces n² es impar» es inmediato. Ambas afirmaciones son la misma, y elegir la más fácil es legítimo.
Confundir una implicación con su recíproca es la falacia más extendida. «Si llueve, el suelo está mojado» no permite concluir «si el suelo está mojado, llovió». En estadística la misma confusión es la falacia del fiscal: P(evidencia | inocente) pequeña no implica P(inocente | evidencia) pequeña, tema de la clase 186.
Tabla de verdad de las tres formas.
p q p→q q→p (recíproca) ¬q→¬p (contrarrecíproca)
V V V V V
V F F V F
F V V F V
F F V V V
¿p→q ≡ contrarrecíproca? Sí, columnas idénticas ✓
¿p→q ≡ recíproca? No, difieren en 2 filas ✗
Verdad vacua: si p es falsa, p→q es verdadera siempre.
Por eso all([]) == True.
Implicación, contrarrecíproca y recíproca no son lo mismo.
python classes/part-04-matematica-discreta-para-computacion/081-logica-proposicional/lab.py
compmath run 081
tablaimplicacion_equivale_a_contrarreciprocaimplicacion_equivale_a_reciprocavacuamente_verdadera{
"tabla": [
{
"p": true,
"q": true,
"p→q": true,
"q→p (recíproca)": true,
"¬q→¬p (contrarrecíproca)": true
},
{
"p": true,
"q": false,
"p→q": false,
"q→p (recíproca)": true,
"¬q→¬p (contrarrecíproca)": false
},
{
"p": false,
"q": true,
"p→q": true,
"q→p (recíproca)": false,
"¬q→¬p (contrarrecíproca)": true
},
{
"p": false,
"q": false,
"p→q": true,
"q→p (recíproca)": true,
"¬q→¬p (contrarrecíproca)": true
}
],
"implicacion_equivale_a_contrarreciproca": true,
"implicacion_equivale_a_reciproca": false,
"vacuamente_verdadera": "p falso hace p→q verdadera"
}
Demostración por contrarrecíproca, diseño de condiciones en código, especificación de contratos y la lógica de las pruebas de hipótesis (parte 10).
Los grafos de cómputo, la búsqueda en árbol y las GNN son estructuras discretas; el conteo sostiene la probabilidad que después usa todo modelo generativo.
9781108539890 verificado en International ISBN Agency (2026-08-19).