24. Leyes idempotentes

Las leyes idempotentes muestran que repetir una misma proposición con AND u OR no cambia su valor lógico.

24.1 Introducción

En lógica, repetir una misma condición no la vuelve más verdadera ni más falsa. Si una proposición ya aparece en una expresión con el mismo operador, repetirla es redundante.

Esta idea se expresa mediante las leyes idempotentes.

24.2 Las dos leyes idempotentes

Las leyes idempotentes son:

p ∧ p ≡ p
p ∨ p ≡ p

La primera dice que p y p equivale a p. La segunda dice que p o p también equivale a p.

24.3 Idempotencia de la conjunción

La expresión p ∧ p no agrega información nueva. Si p es verdadera, ambas copias son verdaderas. Si p es falsa, ambas copias son falsas.

p p ∧ p
V V
F F

La columna final coincide con la columna de p.

24.4 Idempotencia de la disyunción

La expresión p ∨ p también equivale a p. Repetir la misma alternativa no cambia el resultado.

p p ∨ p
V V
F F

La columna final vuelve a coincidir con p.

24.5 Idempotencia en JavaScript

En JavaScript podemos comprobar las leyes con expresiones booleanas.

const tienePermiso = true;

console.log((tienePermiso && tienePermiso) === tienePermiso);
console.log((tienePermiso || tienePermiso) === tienePermiso);

Ambas comparaciones devuelven true.

24.6 Condiciones redundantes

Una repetición idempotente en código suele indicar una condición redundante.

const usuarioActivo = true;

if (usuarioActivo && usuarioActivo) {
  console.log("Usuario activo");
}

La condición puede simplificarse a:

if (usuarioActivo) {
  console.log("Usuario activo");
}

24.7 Repetición con OR

Repetir una alternativa con OR tampoco cambia la expresión.

const esAdmin = false;

const puedeAcceder = esAdmin || esAdmin;

console.log(puedeAcceder);

La expresión esAdmin || esAdmin equivale simplemente a esAdmin.

24.8 Simplificación paso a paso

Simplifiquemos:

(p ∧ p) ∨ q

Aplicando la ley idempotente:

(p ∧ p) ∨ q ≡ p ∨ q

La repetición de p desaparece porque no aporta información adicional.

24.9 Idempotencia en expresiones largas

Las repeticiones pueden aparecer dentro de expresiones más grandes.

(p ∨ q ∨ p) ≡ p ∨ q

Como p aparece dos veces con OR, una de sus apariciones puede eliminarse.

(p ∧ q ∧ p) ≡ p ∧ q

Lo mismo ocurre con AND.

24.10 Relación con conjuntos de condiciones

Cuando pensamos una expresión como un conjunto de condiciones, repetir la misma condición no cambia el conjunto.

Expresión original Expresión simplificada
activo && verificado && activo activo && verificado
esAdmin || esEditor || esAdmin esAdmin || esEditor
hayStock && pagoAprobado && hayStock hayStock && pagoAprobado

24.11 Diferencia con duplicar acciones

La idempotencia lógica se refiere al valor de verdad de expresiones, no necesariamente al efecto de ejecutar acciones.

p ∧ p equivale a p como expresión lógica. Pero ejecutar dos veces una función con efectos secundarios no siempre equivale a ejecutarla una sola vez.

Por eso estas leyes deben aplicarse con cuidado cuando las condiciones llaman funciones que modifican datos.

24.12 Cuidado con funciones en condiciones

En lógica pura, repetir una proposición es redundante. En JavaScript, repetir una función puede ejecutar código dos veces.

if (validarUsuario() && validarUsuario()) {
  console.log("Usuario válido");
}

Si validarUsuario tiene efectos secundarios, esta expresión no es equivalente en comportamiento práctico a llamar la función una sola vez.

24.13 Mejor práctica

Si una validación se usa más de una vez, conviene guardar su resultado en una variable booleana.

const usuarioValido = validarUsuario();

if (usuarioValido) {
  console.log("Usuario válido");
}

Así se evita repetir una evaluación y se mejora la claridad de la condición.

24.14 Errores comunes

  • Creer que repetir una condición la hace más estricta.
  • No detectar proposiciones duplicadas en expresiones largas.
  • Simplificar llamadas a funciones sin considerar efectos secundarios.
  • Confundir idempotencia con identidad.
  • Dejar condiciones redundantes que dificultan leer el código.

24.15 Qué debes recordar de este tema

  • p ∧ p ≡ p.
  • p ∨ p ≡ p.
  • Repetir una misma proposición con AND u OR no cambia su valor lógico.
  • Las leyes idempotentes ayudan a eliminar condiciones redundantes.
  • En programación, hay que distinguir expresiones booleanas puras de funciones con efectos secundarios.

24.16 Conclusión

Las leyes idempotentes muestran que repetir una proposición no modifica su valor lógico. Son útiles para simplificar expresiones y detectar redundancias en condiciones de programación.

En el próximo tema estudiaremos las leyes conmutativas.