23. Leyes de dominación

Las leyes de dominación muestran que ciertos valores fijan por completo el resultado de una expresión lógica, sin importar el valor de la otra proposición.

23.1 Introducción

Las leyes de dominación son equivalencias que permiten simplificar expresiones cuando aparece un valor que determina el resultado final.

En una conjunción, F domina porque una sola parte falsa vuelve falsa toda la expresión. En una disyunción, V domina porque una sola parte verdadera vuelve verdadera toda la expresión.

23.2 Las dos leyes de dominación

Las leyes de dominación son:

p ∧ F ≡ F
p ∨ V ≡ V

La primera indica que una conjunción con falso siempre es falsa. La segunda indica que una disyunción con verdadero siempre es verdadera.

23.3 Dominación en la conjunción

La expresión p ∧ F equivale a F. No importa si p es verdadera o falsa: el resultado siempre será falso.

p F p ∧ F
V F F
F F F

La columna final siempre contiene F.

23.4 Dominación en la disyunción

La expresión p ∨ V equivale a V. No importa el valor de p: el resultado siempre será verdadero.

p V p ∨ V
V V V
F V V

La columna final siempre contiene V.

23.5 Diferencia con identidad

Las leyes de identidad conservan el valor de p. Las leyes de dominación ignoran el valor de p y fijan el resultado.

Ley Equivalencia Resultado
Identidad p ∧ V ≡ p Depende de p
Dominación p ∧ F ≡ F Siempre falso
Identidad p ∨ F ≡ p Depende de p
Dominación p ∨ V ≡ V Siempre verdadero

23.6 Dominación en JavaScript

En JavaScript podemos observar estas leyes usando booleanos.

const p = true;

console.log(p && false);
console.log(p || true);

La primera expresión devuelve false. La segunda devuelve true.

23.7 Condición siempre falsa

Una conjunción con una parte que siempre es falsa vuelve imposible toda la condición.

const usuarioActivo = true;

if (usuarioActivo && false) {
  console.log("Esto nunca se ejecuta");
}

Por dominación, usuarioActivo && false equivale a false.

23.8 Condición siempre verdadera

Una disyunción con una parte que siempre es verdadera vuelve verdadera toda la condición.

const esAdmin = false;

if (esAdmin || true) {
  console.log("Esto siempre se ejecuta");
}

Por dominación, esAdmin || true equivale a true.

23.9 Uso en simplificación

Las leyes de dominación permiten simplificar expresiones más largas.

(p ∨ q) ∧ F ≡ F
(p ∧ q) ∨ V ≡ V

En el primer caso, toda la conjunción queda dominada por F. En el segundo, toda la disyunción queda dominada por V.

23.10 Ejemplo de simplificación paso a paso

Simplifiquemos:

(p ∧ q) ∨ V

Como cualquier expresión OR verdadero es verdadero, tenemos:

(p ∧ q) ∨ V ≡ V

No necesitamos conocer los valores de p ni q.

23.11 Uso en banderas de configuración

A veces una configuración puede dominar una regla. Por ejemplo, si una característica está deshabilitada globalmente, ninguna condición secundaria importa.

const funcionalidadHabilitada = false;
const usuarioTienePermiso = true;

const puedeUsarFuncionalidad = funcionalidadHabilitada && usuarioTienePermiso;

console.log(puedeUsarFuncionalidad);

Como funcionalidadHabilitada es falso, el resultado final es falso aunque el usuario tenga permiso.

23.12 Dominación y cortocircuito

En JavaScript, && y || usan evaluación de cortocircuito. Si el resultado ya está determinado, el resto puede no evaluarse.

const resultadoAnd = false && evaluarPermisos();
const resultadoOr = true || evaluarPermisos();

En el primer caso, false domina al AND. En el segundo, true domina al OR.

23.13 Riesgos en condiciones reales

Una condición dominada puede revelar errores de desarrollo.

  • Un && false puede dejar código inalcanzable.
  • Un || true puede permitir acciones siempre.
  • Una bandera global mal configurada puede anular reglas específicas.
  • Un valor constante temporal puede quedar olvidado después de probar.

23.14 Errores comunes

  • Confundir p ∧ F con p.
  • Confundir p ∨ V con p.
  • No detectar que una constante domina una condición completa.
  • Dejar false o true fijos en código luego de una prueba.
  • Confundir leyes de dominación con leyes de identidad.

23.15 Qué debes recordar de este tema

  • p ∧ F ≡ F.
  • p ∨ V ≡ V.
  • Falso domina en una conjunción.
  • Verdadero domina en una disyunción.
  • Estas leyes ayudan a detectar condiciones siempre falsas o siempre verdaderas.

23.16 Conclusión

Las leyes de dominación muestran cuándo un valor fija por completo el resultado de una expresión lógica. Son útiles para simplificar fórmulas y detectar condiciones inútiles o peligrosas en programas.

En el próximo tema estudiaremos las leyes idempotentes.