Inicio · Parte 00 — Pensamiento matemático desde cero
¬(∀x P(x)) ⟺ ∃x ¬P(x)
n² + n + 41 es primo para n = 0..39, compuesto para n = 40
La asimetría entre verificar y demostrar es el contenido de esta clase, y es la lección más transferible de toda la parte. Una afirmación universal —«para todo n se cumple P(n)»— no queda demostrada por muchos casos favorables, pero queda refutada por uno solo desfavorable. Verificar y demostrar son operaciones de coste y de valor radicalmente distintos.
El polinomio de Euler n² + n + 41 es el ejemplo canónico. Produce números primos para n = 0, 1, 2, ..., 39: cuarenta confirmaciones consecutivas, más de las que cualquiera revisaría antes de convencerse. Y falla en n = 40, donde vale 40² + 40 + 41 = 1681 = 41². La razón es visible en retrospectiva: al sustituir n = 41 (o 40) aparece el factor 41 explícitamente.
Trasladado al software, esto es exactamente la relación entre pruebas y corrección: «los tests pasan» significa que no se encontró contraejemplo en los casos probados, no que el código sea correcto. Dijkstra lo formuló en 1970 con una frase que resume la clase: las pruebas pueden mostrar la presencia de errores, nunca su ausencia.
La estrategia práctica que se deriva es contraintuitiva y muy eficaz: al evaluar una afirmación propia, buscar activamente el caso que la rompa en lugar de acumular casos que la confirmen. Los casos límite —cero, negativos, vacío, uno, el máximo representable— son donde viven los contraejemplos.
La conjetura de Euler y su caída.
n: 0 1 2 3 ... 38 39 | 40
n²+n+41: 41 43 47 53 ... 1523 1601 | 1681
n = 0..39 → los 40 valores son primos
n = 40 → 1681 = 41 × 41 ✗ COMPUESTO
Regla: 40 confirmaciones no demuestran
1 contraejemplo refuta
Nótese que el contraejemplo no requiere teoría avanzada: requiere seguir probando cuando ya «parecía» cierto.
Una conjetura plausible destruida por un único contraejemplo.
python classes/part-00-pensamiento-matematico-desde-cero/019-comprobacion-y-contraejemplos/lab.py
compmath run 019
conjeturacasos_favorables_consecutivosprimer_contraejemplo_nvalor_en_el_contraejemplofactorleccion{
"conjetura": "n^2 + n + 41 es primo para todo n natural",
"casos_favorables_consecutivos": 40,
"primer_contraejemplo_n": 40,
"valor_en_el_contraejemplo": 1681,
"factor": 41,
"leccion": "40 confirmaciones no demuestran; 1 contraejemplo refuta"
}
Diseño de pruebas, validación de modelos y evaluación de resultados publicados. En la parte 10 reaparece como la lógica de las pruebas de hipótesis: no se demuestra H₁, se rechaza H₀."
Toda métrica de un modelo (accuracy, loss, learning rate) es una razón, un porcentaje o una escala. Interpretarlas mal es el primer error de un practicante de IA.