5. Demostración directa

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.

5.1 Introducción

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.

5.2 Forma general

Teorema: Si P, entonces Q.

1. Suponer que P es verdadera.
2. Traducir P usando sus definiciones.
3. Aplicar reglas válidas y resultados conocidos.
4. Obtener una expresión o propiedad que sea Q.
5. Concluir que, si P, entonces Q.

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

5.3 Definiciones que se usan con frecuencia

ConceptoDefinición formalEjemplo
Parn es par si n = 2k para algún entero k.14 = 2 · 7
Imparn es impar si n = 2k + 1 para algún entero k.15 = 2 · 7 + 1
Divisibilidada divide a b si b = ak para algún entero k.4 divide a 20 porque 20 = 4 · 5
Múltiplob es múltiplo de a si a divide a b.21 es múltiplo de 7
SubconjuntoA ⊆ 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.

5.4 Ejemplo: la suma de dos pares es par

Demostraremos: si a y b son enteros pares, entonces a + b es par.

Como a es par, existe un entero r tal que a = 2r.
Como b es par, existe un entero s tal que b = 2s.

a + b = 2r + 2s
a + b = 2(r + s).

Como r + s es un entero, a + b tiene la forma 2k.
Por definición, 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.

5.5 Verificar ejemplos con código

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: true

5.6 Ejemplo: el producto de dos pares es par

Demostraremos: si a y b son enteros pares, entonces ab es par.

Como a es par, a = 2r para algún entero r.
Como b es par, b = 2s para algún entero s.

ab = (2r)(2s) = 4rs = 2(2rs).

Como 2rs es entero, ab tiene la forma 2k.
Por lo tanto, 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.

5.7 Ejemplo: la suma de un par y un impar es impar

Demostraremos: si a es par y b es impar, entonces a + b es impar.

a = 2r para algún entero r.
b = 2s + 1 para algún entero s.

a + b = 2r + (2s + 1)
a + b = 2(r + s) + 1.

Como r + s es entero, a + b tiene la forma 2k + 1.
Por definición, 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.

5.8 Demostraciones con divisibilidad

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

Como a divide a b, existe un entero r tal que b = ar.
Como a divide a c, existe un entero s tal que c = as.

b + c = ar + as = a(r + s).

Como r + s es entero, 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.

5.9 Ejemplo computacional de divisibilidad

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)); // true

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

5.10 Demostraciones con desigualdades

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.

a < b implica a + c < b + c.
c < d implica b + c < b + d.

Por transitividad: a + c < b + d.

Al programar, las desigualdades aparecen en límites de arreglos, condiciones de bucles, validación de rangos y análisis de complejidad.

5.11 Demostraciones con conjuntos

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.

x ∈ A ∩ B
⇒ x ∈ A y x ∈ B
⇒ x ∈ A
⇒ A ∩ B ⊆ A

5.12 Conjuntos en JavaScript

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))); // true

5.13 Demostraciones con funciones

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

f(a) = f(b)
3a + 2 = 3b + 2
3a = 3b
a = b

5.14 Relación con la corrección de algoritmos

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)); // true

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

5.15 Cómo redactar una demostración directa

  1. Escribir con claridad la hipótesis y la conclusión.
  2. Tomar un elemento o valor arbitrario que satisfaga la hipótesis.
  3. Reemplazar los conceptos por sus definiciones formales.
  4. Realizar transformaciones válidas y explicar los pasos relevantes.
  5. Reconocer la forma de la conclusión y escribirla explícitamente.
Frase inicial frecuente: «Sea n un entero par».
Frase final frecuente: «Por lo tanto, n2 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.

5.16 Cuándo conviene usar este método

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 paresLa definición permite factorizar 2.
Divisibilidad de una combinación linealLa definición produce múltiplos.
Inclusión entre conjuntosSe sigue un elemento arbitrario.
Si n² es par, n es parNo suele ser la más cómodaLa contraposición es más simple.
Inexistencia de cierto objetoA menudo noLa contradicción puede ser más natural.

5.17 Errores frecuentes

  • Comenzar suponiendo que la conclusión es verdadera.
  • Usar ejemplos numéricos en lugar de una variable arbitraria.
  • Olvidar indicar que los valores auxiliares introducidos son enteros.
  • Aplicar la definición de par o divisible de forma incompleta.
  • Concluir una afirmación más fuerte sin haberla justificado.
  • Confundir que una prueba directa sea posible con que sea siempre la técnica más clara.

5.18 Qué debes recordar de este tema

  • La demostración directa parte de la hipótesis y llega a la conclusión mediante pasos válidos.
  • Las definiciones de paridad, divisibilidad, conjunto y función suelen ser el punto de partida.
  • Una variable arbitraria representa todos los casos permitidos por la hipótesis.
  • Las pruebas con conjuntos muestran que un elemento arbitrario de un conjunto pertenece a otro.
  • Los ejemplos de código ilustran propiedades, pero no sustituyen una demostración general.
  • La misma forma de razonamiento sirve para justificar postcondiciones de funciones.

5.19 Conclusión

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.