El bicondicional expresa que dos proposiciones tienen el mismo valor de verdad. Se lee “si y solo si” y permite representar equivalencias entre condiciones.
El bicondicional es un operador lógico que relaciona dos proposiciones y afirma que ambas tienen el mismo valor de verdad.
Se escribe p ↔ q y se lee "p si y solo si q". También se lo llama equivalencia lógica cuando se usa para indicar que dos expresiones tienen el mismo comportamiento lógico.
El bicondicional es verdadero cuando las dos proposiciones son verdaderas o cuando las dos son falsas. Es falso cuando una es verdadera y la otra es falsa.
Ejemplo en lenguaje natural:
La tabla de verdad del bicondicional muestra que el resultado es verdadero cuando p y q tienen el mismo valor.
| p | q | p ↔ q |
|---|---|---|
| V | V | V |
| V | F | F |
| F | V | F |
| F | F | V |
El bicondicional puede entenderse como dos implicaciones que se cumplen al mismo tiempo.
Esto significa que p implica q y q implica p. Por eso el bicondicional expresa una relación más fuerte que una implicación simple.
La siguiente afirmación es un bicondicional:
La relación funciona en ambos sentidos:
Para dos valores booleanos, el bicondicional puede expresarse verificando si ambos valores son iguales.
const formularioValido = true;
const botonActivado = true;
const reglaCumplida = formularioValido === botonActivado;
console.log(reglaCumplida);
El resultado es true porque ambas proposiciones tienen el mismo valor de verdad.
El bicondicional falla cuando las proposiciones no coinciden en su valor de verdad.
const cuentaHabilitada = false;
const puedeAcceder = true;
const reglaCumplida = cuentaHabilitada === puedeAcceder;
console.log(reglaCumplida);
La regla falla porque la cuenta no está habilitada pero el acceso aparece permitido.
La implicación simple solo exige una dirección. El bicondicional exige ambas direcciones.
| Forma | Lectura | Exige |
|---|---|---|
| p → q | Si p, entonces q | Que q se cumpla cuando p se cumple |
| p ↔ q | p si y solo si q | Que p y q siempre coincidan |
El bicondicional también puede construirse usando operadores básicos.
Esto significa: ambas son verdaderas o ambas son falsas.
const p = true;
const q = true;
const bicondicional = (p && q) || (!p && !q);
console.log(bicondicional);
XOR es verdadero cuando dos proposiciones tienen valores distintos. El bicondicional es verdadero cuando tienen valores iguales.
En JavaScript, para dos booleanos:
const p = false;
const q = false;
const xor = p !== q;
const bicondicional = p === q;
console.log(xor);
console.log(bicondicional);
Una regla de interfaz puede decir: el botón de enviar está habilitado si y solo si el formulario es válido.
const nombreValido = true;
const emailValido = true;
const formularioValido = nombreValido && emailValido;
const botonEnviarHabilitado = true;
const interfazCorrecta = formularioValido === botonEnviarHabilitado;
console.log(interfazCorrecta);
La interfaz cumple la regla cuando el estado del botón coincide con la validez del formulario.
Supongamos que una acción debe estar disponible si y solo si el usuario tiene permiso.
const tienePermiso = false;
const accionDisponible = false;
const reglaPermisosCorrecta = tienePermiso === accionDisponible;
console.log(reglaPermisosCorrecta);
Si la acción estuviera disponible sin permiso, o si estuviera bloqueada con permiso, el bicondicional sería falso.
Dos expresiones son lógicamente equivalentes cuando siempre producen el mismo valor de verdad para los mismos valores de sus variables.
Por ejemplo, estas dos expresiones son equivalentes:
Cuando estudiemos equivalencias lógicas, veremos cómo demostrar estas relaciones mediante tablas de verdad y leyes lógicas.
El bicondicional expresa equivalencia entre proposiciones. Es más fuerte que una implicación porque exige que ambas direcciones se cumplan.
En el próximo tema estudiaremos la construcción de expresiones lógicas.