Algunas equivalencias aparecen con mucha frecuencia al razonar con implicaciones, negaciones y bicondicionales. Conocerlas facilita demostrar, simplificar y verificar reglas lógicas.
En los temas anteriores estudiamos operadores, tablas de verdad y leyes de equivalencia. Ahora reuniremos algunas transformaciones especialmente importantes para trabajar con implicaciones y equivalencias.
Estas formas aparecen en demostraciones, reglas de inferencia, validaciones de programas y simplificación de expresiones booleanas.
La equivalencia más importante para la implicación es:
Esto permite reemplazar una implicación por una disyunción. En programación, esta forma es útil para validar reglas del tipo "si ocurre p, debe ocurrir q".
| p | q | p → q | ¬p ∨ q |
|---|---|---|---|
| V | V | V | V |
| V | F | F | F |
| F | V | V | V |
| F | F | V | V |
Las columnas finales coinciden en todas las filas.
Una implicación es equivalente a su contrarrecíproca.
Ejemplo:
La recíproca y la inversa no son necesariamente equivalentes a la implicación original.
| Forma | Nombre | Equivalente a p → q |
|---|---|---|
| p → q | Original | Sí |
| ¬q → ¬p | Contrarrecíproca | Sí |
| q → p | Recíproca | No necesariamente |
| ¬p → ¬q | Inversa | No necesariamente |
Negar una implicación produce una conjunción:
Esto expresa exactamente el único caso en que una implicación falla: p es verdadera y q es falsa.
Consideremos la regla:
La regla falla cuando:
En símbolos:
El bicondicional puede expresarse como dos implicaciones simultáneas.
Esto significa que p implica q y q implica p.
Otra forma notable del bicondicional es:
Esto expresa que ambas proposiciones tienen el mismo valor de verdad: ambas verdaderas o ambas falsas.
El XOR y el bicondicional son opuestos en el caso de dos proposiciones.
XOR es verdadero cuando los valores son distintos. El bicondicional es verdadero cuando los valores son iguales.
Algunas equivalencias pueden escribirse directamente con booleanos.
const p = true;
const q = false;
const implicacion = !p || q;
const fallaImplicacion = p && !q;
const bicondicional = p === q;
const xor = p !== q;
console.log({ implicacion, fallaImplicacion, bicondicional, xor });
Supongamos la regla: si un usuario es menor de edad, entonces debe tener autorización.
const edad = 16;
const tieneAutorizacion = false;
const esMenor = edad < 18;
const reglaCumplida = !esMenor || tieneAutorizacion;
const reglaFallida = esMenor && !tieneAutorizacion;
console.log(reglaCumplida);
console.log(reglaFallida);
La regla se cumple con ¬p ∨ q y falla con p ∧ ¬q.
| Nombre | Equivalencia |
|---|---|
| Implicación material | p → q ≡ ¬p ∨ q |
| Contrarrecíproca | p → q ≡ ¬q → ¬p |
| Negación de implicación | ¬(p → q) ≡ p ∧ ¬q |
| Bicondicional | p ↔ q ≡ (p → q) ∧ (q → p) |
| Bicondicional por igualdad | p ↔ q ≡ (p ∧ q) ∨ (¬p ∧ ¬q) |
| XOR | p ⊕ q ≡ ¬(p ↔ q) |
Las implicaciones y equivalencias notables permiten transformar reglas condicionales, detectar fallos lógicos y comparar expresiones. Son una base importante para estudiar argumentos y reglas de inferencia.
En el próximo tema estudiaremos los argumentos lógicos.