🧮 Computational Mathematics

Inicio · Parte 04 — Matemática discreta para computación

081 — Lógica proposicional

intermedio clase 1 de 20 4 horas demostración propositional_logic

Una implicación equivale a su contrarrecíproca, nunca a su recíproca.

Fórmulas

p → q ≡ ¬p ∨ q
p → q ≡ ¬q → ¬p   (contrarrecíproca)
p → q ≢ q → p     (recíproca)

Desarrollo

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.

Ejemplo trabajado

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.

Qué calcula el laboratorio

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

Salidas del laboratorio (4)

Muestra de la ejecución real

{
  "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"
}

Errores comunes

Dónde se usa

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).

Idea rectora de la parte

Una demostración por inducción es un bucle `for` con garantía.

Error a evitar

Contar dos veces al aplicar el principio de inclusión-exclusión.

Conexión con IA

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.

Bibliografía de la clase

Archivos de la clase