Las leyes conmutativas indican que, en conjunciones y disyunciones, cambiar el orden de las proposiciones no cambia el valor lógico de la expresión.
En algunas operaciones, el orden de los elementos no cambia el resultado. En lógica proposicional, esto ocurre con la conjunción y la disyunción.
Las leyes conmutativas permiten intercambiar el orden de las proposiciones sin modificar el valor de verdad de la expresión.
Las leyes conmutativas son:
Esto significa que el orden de las proposiciones no altera el resultado de AND ni de OR.
La expresión p ∧ q equivale a q ∧ p. Ambas solo son verdaderas cuando p y q son verdaderas.
| p | q | p ∧ q | q ∧ p |
|---|---|---|---|
| V | V | V | V |
| V | F | F | F |
| F | V | F | F |
| F | F | F | F |
Las columnas finales coinciden en todas las filas.
La expresión p ∨ q equivale a q ∨ p. Ambas son verdaderas cuando al menos una de las proposiciones es verdadera.
| p | q | p ∨ q | q ∨ p |
|---|---|---|---|
| V | V | V | V |
| V | F | V | V |
| F | V | V | V |
| F | F | F | F |
También aquí las columnas finales coinciden en todos los casos.
La conmutatividad también aparece en aritmética. La suma y la multiplicación son conmutativas, pero la resta y la división no lo son.
| Operación | ¿Es conmutativa? | Ejemplo |
|---|---|---|
| Suma | Sí | a + b = b + a |
| Multiplicación | Sí | a × b = b × a |
| Conjunción | Sí | p ∧ q ≡ q ∧ p |
| Disyunción | Sí | p ∨ q ≡ q ∨ p |
Con valores booleanos puros, && y || son conmutativos desde el punto de vista lógico.
const p = true;
const q = false;
console.log((p && q) === (q && p));
console.log((p || q) === (q || p));
Ambas comparaciones devuelven true.
La ley conmutativa permite elegir el orden que haga más clara una condición.
const cuentaActiva = true;
const tienePermiso = true;
const puedeOperar = cuentaActiva && tienePermiso;
También podría escribirse:
const puedeOperar = tienePermiso && cuentaActiva;
El resultado lógico es el mismo. La elección depende de qué orden comunique mejor la regla.
Aunque el resultado lógico no cambie, el orden puede ayudar a leer mejor una condición.
| Regla | Orden recomendado |
|---|---|
| Comprar si hay stock y el pago fue aprobado | hayStock && pagoAprobado |
| Editar si es admin o editor | esAdmin || esEditor |
| Enviar si el formulario es válido y no está cargando | formularioValido && !cargando |
En lógica pura, el orden no cambia el valor final. En JavaScript, el orden puede afectar qué expresiones se evalúan debido al cortocircuito.
const usuario = null;
if (usuario !== null && usuario.activo) {
console.log("Usuario activo");
}
Reordenar esta condición puede producir un error, porque usuario.activo no debe evaluarse si usuario es null.
Si una condición llama funciones con efectos secundarios, cambiar el orden puede cambiar el comportamiento práctico del programa.
if (validarSesion() && registrarIntento()) {
console.log("Operación autorizada");
}
Aunque AND sea conmutativo en lógica, reordenar llamadas a funciones puede modificar qué se ejecuta primero.
No todos los operadores lógicos tienen esta propiedad. La implicación no es conmutativa.
Ejemplo:
La primera afirmación es verdadera, pero la segunda no siempre lo es.
La conmutatividad ayuda a reordenar expresiones para aplicar otras leyes.
Primero reordenamos usando conmutatividad. Luego simplificamos usando idempotencia.
Una condición puede tener elementos repetidos en distinto orden:
const puedeEditar = tienePermiso && cuentaActiva && tienePermiso;
Usando conmutatividad e idempotencia, se simplifica a:
const puedeEditar = tienePermiso && cuentaActiva;
Las leyes conmutativas permiten cambiar el orden de proposiciones en conjunciones y disyunciones sin alterar el valor lógico. Son útiles para reorganizar, simplificar y hacer más legibles las expresiones.
En el próximo tema estudiaremos las leyes asociativas.