La demostración directa parte de las hipótesis, utiliza definiciones y propiedades conocidas, y llega paso a paso a la conclusión. Es una de las herramientas más claras para justificar resultados y algoritmos.
Una demostración directa prueba una implicación P → Q comenzando por asumir que la hipótesis P es verdadera. A partir de allí se aplican definiciones, operaciones algebraicas y teoremas ya conocidos hasta obtener Q.
El método recibe ese nombre porque avanza en la misma dirección que la afirmación: de las condiciones dadas hacia la conclusión. No supone lo contrario, no cambia la proposición y no depende de revisar ejemplos particulares.
La clave está en elegir la definición correcta. Si la hipótesis dice que un número es par, debemos usar la definición «existe un entero k tal que n = 2k». Si dice que un número es múltiplo de 3, debemos usar «existe un entero k tal que n = 3k».
| Concepto | Definición formal | Ejemplo |
|---|---|---|
| Par | n es par si n = 2k para algún entero k. | 14 = 2 · 7 |
| Impar | n es impar si n = 2k + 1 para algún entero k. | 15 = 2 · 7 + 1 |
| Divisibilidad | a divide a b si b = ak para algún entero k. | 4 divide a 20 porque 20 = 4 · 5 |
| Múltiplo | b es múltiplo de a si a divide a b. | 21 es múltiplo de 7 |
| Subconjunto | A ⊆ B si todo elemento de A pertenece a B. | {1, 2} ⊆ {1, 2, 3} |
En una prueba, reemplazar una palabra por su definición convierte una idea informal en una condición que podemos manipular con precisión.
Demostraremos: si a y b son enteros pares, entonces a + b es par.
No elegimos valores específicos para a y b. La demostración cubre todos los pares de enteros que cumplen la hipótesis.
El programa siguiente ilustra la propiedad para algunos valores. Es útil para experimentar, pero la demostración anterior es la que garantiza el resultado para todos los enteros pares.
function esPar(n) {
return n % 2 === 0;
}
function sumarPares(a, b) {
if (!esPar(a) || !esPar(b)) {
throw new Error("Ambos valores deben ser pares");
}
return a + b;
}
const suma = sumarPares(14, 28);
console.log(`${suma} es par: ${esPar(suma)}`); // 42 es par: trueDemostraremos: si a y b son enteros pares, entonces ab es par.
La prueba incluso revela una propiedad más fuerte: el producto es múltiplo de 4. Aun así, para demostrar que es par basta exhibir el factor 2.
Demostraremos: si a es par y b es impar, entonces a + b es impar.
La conclusión surge directamente de la definición de impar. Este patrón será útil al analizar condiciones alternativas en algoritmos.
La divisibilidad es especialmente apropiada para una prueba directa porque su definición ya proporciona una igualdad. Demostraremos: si a divide a b y a divide a c, entonces a divide a(b + c).
La misma idea sirve para la resta: b - c = ar - as = a(r - s). Por eso, si un número divide dos valores, también divide su suma y su diferencia.
function divide(a, b) {
return b % a === 0;
}
const a = 6;
const b = 30;
const c = 42;
console.log(divide(a, b)); // true
console.log(divide(a, c)); // true
console.log(divide(a, b + c)); // trueEl código verifica un caso concreto. La prueba de la sección anterior explica por qué el resultado se conserva para cualquier elección de enteros que cumpla las hipótesis.
También podemos demostrar directamente desigualdades. Si a < b y c < d, entonces a + c < b + d. La justificación usa una propiedad conocida: sumar el mismo valor a ambos lados de una desigualdad preserva su orden.
Al programar, las desigualdades aparecen en límites de arreglos, condiciones de bucles, validación de rangos y análisis de complejidad.
Para demostrar una inclusión A ⊆ B, tomamos un elemento arbitrario x de A y mostramos que también pertenece a B. El elemento debe ser arbitrario: no elegimos uno especial, porque la conclusión debe valer para todos.
Demostremos que A ∩ B ⊆ A. Sea x un elemento de A ∩ B. Por definición de intersección, x pertenece a A y x pertenece a B. En particular, x pertenece a A. Como x fue arbitrario, A ∩ B ⊆ A.
Un objeto Set permite modelar una colección sin duplicados. El ejemplo comprueba de forma concreta que los elementos comunes a dos conjuntos pertenecen al primero.
function interseccion(a, b) {
return new Set([...a].filter(elemento => b.has(elemento)));
}
const A = new Set([1, 2, 3, 4]);
const B = new Set([3, 4, 5]);
const comunes = interseccion(A, B);
console.log([...comunes]); // [3, 4]
console.log([...comunes].every(elemento => A.has(elemento))); // trueUna función es inyectiva si entradas distintas producen salidas distintas. Para demostrar directamente que una función es inyectiva, solemos suponer f(a) = f(b) y usar la fórmula de la función para deducir a = b.
Consideremos f(x) = 3x + 2 sobre los enteros. Si f(a) = f(b), entonces 3a + 2 = 3b + 2. Restando 2 en ambos lados obtenemos 3a = 3b. Dividiendo por 3 obtenemos a = b. Por lo tanto, f es inyectiva.
Una prueba directa también sirve para justificar partes de un algoritmo. Si una función calcula el doble de un entero, podemos demostrar que su resultado siempre es par: para una entrada n, la salida es 2n, que tiene la forma 2k tomando k = n.
function duplicar(n) {
return 2 * n;
}
function esPar(n) {
return n % 2 === 0;
}
const resultado = duplicar(37);
console.log(resultado); // 74
console.log(esPar(resultado)); // trueLa demostración no depende de que la entrada sea 37. Para cualquier entero n, duplicar(n) devuelve 2n y, por definición, todo valor de esa forma es par.
La redacción debe evitar saltos. Si usamos que una suma de enteros es entera, es conveniente mencionarlo cuando esa propiedad permite aplicar una definición.
La demostración directa es una buena primera opción cuando la hipótesis proporciona información fácil de manipular y la conclusión coincide con una definición conocida.
| Situación | ¿Demostración directa? | Motivo |
|---|---|---|
| Suma de números pares | Sí | La definición permite factorizar 2. |
| Divisibilidad de una combinación lineal | Sí | La definición produce múltiplos. |
| Inclusión entre conjuntos | Sí | Se sigue un elemento arbitrario. |
| Si n² es par, n es par | No suele ser la más cómoda | La contraposición es más simple. |
| Inexistencia de cierto objeto | A menudo no | La contradicción puede ser más natural. |
La demostración directa convierte las hipótesis en una secuencia de pasos que revela por qué la conclusión debe cumplirse. Es un método transparente, útil para propiedades de números, conjuntos, funciones y algoritmos.
En el próximo tema estudiaremos la demostración por contraposición, una técnica equivalente a probar una implicación desde un punto de vista diferente.