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.
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.
Las leyes de dominación son:
La primera indica que una conjunción con falso siempre es falsa. La segunda indica que una disyunción con verdadero siempre es verdadera.
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.
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.
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 |
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.
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.
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.
Las leyes de dominación permiten simplificar expresiones más largas.
En el primer caso, toda la conjunción queda dominada por F. En el segundo, toda la disyunción queda dominada por V.
Simplifiquemos:
Como cualquier expresión OR verdadero es verdadero, tenemos:
No necesitamos conocer los valores de p ni q.
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.
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.
Una condición dominada puede revelar errores de desarrollo.
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.