Negar un cuantificador cambia “para todo” por “existe” y “existe” por “para todo”, además de negar el predicado.
La negación de cuantificadores es una de las partes más importantes de la lógica de predicados. Permite transformar frases como "no todos" o "no existe" en expresiones equivalentes más claras.
Estas reglas son una extensión de la idea de De Morgan aplicada a cuantificadores.
Las reglas fundamentales son:
En palabras: negar "todos cumplen" equivale a "existe al menos uno que no cumple". Negar "existe alguno que cumple" equivale a "todos no cumplen".
La negación de una afirmación universal es existencial.
Ejemplo:
La afirmación:
se transforma en:
Es decir: existe al menos un elemento del dominio que no está activo.
La negación de una afirmación existencial es universal.
Ejemplo:
En lenguaje más natural: todos los productos tienen stock.
La afirmación:
se transforma en:
Si el dominio son productos, significa que ningún producto está sin stock.
| Frase | Forma equivalente |
|---|---|
| No todos cumplen P | Existe alguien que no cumple P |
| No existe alguien que cumpla P | Todos no cumplen P |
| No todos los usuarios están activos | Existe un usuario inactivo |
| No hay productos sin stock | Todos los productos tienen stock |
Las reglas de negación de cuantificadores aparecen al combinar every, some y negaciones.
const usuarios = [
{ nombre: "Ana", activo: true },
{ nombre: "Luis", activo: false }
];
const noTodosActivos = !usuarios.every(usuario => usuario.activo);
const existeInactivo = usuarios.some(usuario => !usuario.activo);
console.log(noTodosActivos === existeInactivo);
La comparación devuelve true.
Negar una afirmación existencial equivale a una afirmación universal negada.
const productos = [
{ nombre: "Teclado", stock: 5 },
{ nombre: "Mouse", stock: 3 }
];
const noExisteSinStock = !productos.some(producto => producto.stock === 0);
const todosConStock = productos.every(producto => producto.stock !== 0);
console.log(noExisteSinStock === todosConStock);
La frase "no todos" no significa "ninguno". Significa que al menos uno no cumple.
| Frase | Significado correcto |
|---|---|
| No todos los usuarios están activos | Existe al menos un usuario inactivo |
| Ningún usuario está activo | Todos los usuarios están inactivos |
Muchas afirmaciones universales tienen forma condicional:
Su negación es:
Como ¬(p → q) ≡ p ∧ ¬q, queda:
Se lee: existe alguien activo que no puede ingresar.
Afirmación:
Negación:
Forma lógica:
Para probar que una regla universal falla, buscamos un caso concreto que la viole.
const pedidos = [
{ pagado: true, tieneFactura: true },
{ pagado: true, tieneFactura: false }
];
const existePedidoPagadoSinFactura = pedidos.some(
pedido => pedido.pagado && !pedido.tieneFactura
);
console.log(existePedidoPagadoSinFactura);
Ese caso refuta la afirmación "todos los pedidos pagados tienen factura".
La negación de cuantificadores permite transformar correctamente afirmaciones con "todos" y "existe". Es esencial para buscar contraejemplos, escribir pruebas y traducir reglas de negocio con precisión.
En el próximo tema estudiaremos la traducción de lenguaje natural a expresiones lógicas.