34. Modus Ponens

Modus Ponens es una regla de inferencia que permite obtener una consecuencia cuando se conoce una implicación y se verifica su antecedente.

34.1 Introducción

Modus Ponens es una de las reglas de inferencia más importantes y usadas. Su nombre suele traducirse como "modo que afirma".

La idea es simple: si sabemos que una condición implica una consecuencia, y además sabemos que la condición se cumple, entonces podemos afirmar la consecuencia.

34.2 Forma lógica

La forma de Modus Ponens es:

p → q
p
∴ q

La primera premisa es una implicación. La segunda premisa afirma el antecedente. La conclusión afirma el consecuente.

34.3 Lectura en lenguaje natural

Podemos leer la regla así:

Si p, entonces q.
Ocurre p.
Por lo tanto, ocurre q.

La conclusión es segura siempre que las premisas sean verdaderas.

34.4 Ejemplo cotidiano

Si llueve, la calle se moja.
Llueve.
Por lo tanto, la calle se moja.

En este razonamiento, p es "llueve" y q es "la calle se moja".

34.5 Ejemplo de programación

Si el usuario es administrador, puede acceder al panel.
El usuario es administrador.
Por lo tanto, puede acceder al panel.

Forma lógica:

p → q
p
∴ q

34.6 Modus Ponens en JavaScript

Un condicional básico puede representar esta regla.

const esAdmin = true;

if (esAdmin) {
  console.log("Puede acceder al panel");
}

La regla implícita es: si esAdmin es verdadero, entonces se permite el acceso al panel.

34.7 Tabla de validez

Para que Modus Ponens fuera inválido, tendría que existir un caso donde las premisas sean verdaderas y la conclusión falsa. Veamos la tabla.

p q p → q Premisa p Conclusión q
V V V V V
V F F V F
F V V F V
F F V F F

No hay ninguna fila donde p → q y p sean verdaderas mientras q sea falsa.

34.8 Regla de negocio

Supongamos esta regla:

Si el pago fue aprobado, se genera la factura.

Si además sabemos que el pago fue aprobado, podemos inferir que se genera la factura.

const pagoAprobado = true;

if (pagoAprobado) {
  generarFactura();
}

34.9 Diferencia con afirmar el consecuente

Modus Ponens no debe confundirse con este patrón inválido:

p → q
q
∴ p

Ejemplo inválido:

Si el usuario es administrador, puede editar.
El usuario puede editar.
Por lo tanto, es administrador.

La conclusión no es necesaria: puede editar por otro motivo.

34.10 Condición suficiente

En una implicación p → q, p es una condición suficiente para q. Si p ocurre, q queda garantizada según la regla.

Ser administrador puede ser suficiente para editar, pero no necesariamente es la única forma de poder editar.

Esta distinción evita confundir Modus Ponens con afirmar el consecuente.

34.11 Encadenar Modus Ponens

Podemos aplicar Modus Ponens varias veces.

p → q
q → r
p
∴ q
∴ r

Si p implica q, q implica r, y p ocurre, entonces podemos obtener q y luego r.

34.12 Ejemplo encadenado

Si se aprueba el pago, se genera el pedido.
Si se genera el pedido, se descuenta stock.
Se aprueba el pago.
Por lo tanto, se genera el pedido.
Por lo tanto, se descuenta stock.

Este tipo de razonamiento aparece en flujos de negocio y algoritmos con pasos dependientes.

34.13 Verificación con código

El encadenamiento puede verse en una secuencia condicional.

const pagoAprobado = true;

if (pagoAprobado) {
  const pedidoGenerado = true;

  if (pedidoGenerado) {
    console.log("Descontar stock");
  }
}

34.14 Errores comunes

  • Confundir antecedente con consecuente.
  • Usar Modus Ponens cuando no se verificó el antecedente.
  • Concluir el antecedente solo porque se observó el consecuente.
  • Olvidar que la regla p → q debe formar parte de las premisas.
  • Ignorar que una consecuencia puede tener varias causas posibles.

34.15 Qué debes recordar de este tema

  • Modus Ponens tiene la forma p → q, p ∴ q.
  • Afirma el consecuente a partir de la implicación y el antecedente.
  • Es una regla de inferencia válida.
  • No debe confundirse con afirmar el consecuente.
  • En programación aparece en reglas condicionales y flujos de decisión.

34.16 Conclusión

Modus Ponens es una regla básica y poderosa: si una regla condicional es válida y se cumple su antecedente, podemos obtener su consecuente.

En el próximo tema estudiaremos Modus Tollens.