42. Cuantificador universal

El cuantificador universal expresa que una propiedad se cumple para todos los elementos del dominio de discurso.

42.1 Introducción

El cuantificador universal permite expresar afirmaciones del tipo "todos", "cada uno" o "para cualquier".

En lógica de predicados se representa con el símbolo .

42.2 Definición

El cuantificador universal indica que una propiedad se cumple para todos los elementos del dominio.

∀x P(x)

Se lee: para todo x, se cumple P(x).

42.3 Ejemplo con números

Si el dominio son los números naturales, podemos escribir:

∀x (Par(x) → DivisiblePor2(x))

Se lee: para todo x, si x es par, entonces x es divisible por 2.

42.4 Ejemplo con usuarios

Si el dominio son los usuarios de un sistema:

∀x (Administrador(x) → PuedeEditar(x))

Se lee: para todo usuario x, si x es administrador, entonces x puede editar.

42.5 Dominio de discurso

El cuantificador universal siempre depende de un dominio. La frase "todos están activos" no es suficientemente precisa si no indicamos todos quiénes.

Dominio Interpretación de ∀x Activo(x)
Usuarios Todos los usuarios están activos
Servicios Todos los servicios están activos
Productos Todos los productos están activos

42.6 Cómo demostrar que es verdadero

Para que una afirmación universal sea verdadera, la propiedad debe cumplirse para todos los elementos del dominio.

Si el dominio es {2, 4, 6}, entonces ∀x Par(x) es verdadero.

Cada elemento del dominio cumple el predicado Par.

42.7 Cómo demostrar que es falso

Para mostrar que una afirmación universal es falsa, alcanza encontrar un solo contraejemplo.

Si el dominio es {2, 3, 4}, entonces ∀x Par(x) es falso.

El número 3 es un contraejemplo porque no es par.

42.8 Contraejemplos en sistemas

Si afirmamos "todos los usuarios tienen email verificado", basta encontrar un usuario sin email verificado para refutar la afirmación.

const usuarios = [
  { nombre: "Ana", emailVerificado: true },
  { nombre: "Luis", emailVerificado: false }
];

Luis es un contraejemplo para la afirmación universal.

42.9 Cuantificador universal en JavaScript

El método every permite verificar si todos los elementos de un arreglo cumplen una condición.

const usuarios = [
  { nombre: "Ana", activo: true },
  { nombre: "Luis", activo: true }
];

const todosActivos = usuarios.every(usuario => usuario.activo);

console.log(todosActivos);

42.10 Universal con implicación

Muchas afirmaciones universales tienen forma condicional.

∀x (UsuarioPremium(x) → TieneDescuento(x))

Se lee: para todo x, si x es usuario premium, entonces x tiene descuento.

Esta forma no exige que todos sean premium. Solo exige que quienes sean premium tengan descuento.

42.11 Error común: usar AND en lugar de implicación

La frase "todos los usuarios premium tienen descuento" no debe traducirse como:

∀x (UsuarioPremium(x) ∧ TieneDescuento(x))

Esa expresión afirmaría que todos los elementos del dominio son premium y tienen descuento. La forma correcta suele ser:

∀x (UsuarioPremium(x) → TieneDescuento(x))

42.12 Dominio vacío

Una afirmación universal sobre un dominio vacío se considera verdadera en lógica clásica, porque no hay ningún contraejemplo.

const usuariosBloqueados = [];

const todosTienenMotivo = usuariosBloqueados.every(
  usuario => usuario.motivoBloqueo
);

console.log(todosTienenMotivo);

El resultado es true. No hay usuario bloqueado que viole la regla.

42.13 Traducciones frecuentes

Lenguaje natural Forma lógica
Todos los usuarios activos pueden ingresar ∀x (Activo(x) → PuedeIngresar(x))
Cada producto publicado tiene precio ∀x (Publicado(x) → TienePrecio(x))
Todos los pedidos pagados tienen factura ∀x (Pagado(x) → TieneFactura(x))

42.14 Errores comunes

  • No definir el dominio de discurso.
  • Creer que una afirmación universal se verifica con un solo ejemplo.
  • Olvidar que un solo contraejemplo la vuelve falsa.
  • Usar conjunción cuando corresponde una implicación.
  • No considerar el caso de dominio vacío.

42.15 Qué debes recordar de este tema

  • El cuantificador universal se escribe .
  • ∀x P(x) significa que P se cumple para todos los elementos del dominio.
  • Para refutar una afirmación universal alcanza un contraejemplo.
  • En JavaScript, every representa una idea universal sobre una colección.
  • Muchas afirmaciones universales se expresan con implicación.

42.16 Conclusión

El cuantificador universal permite expresar reglas que se aplican a todos los elementos de un dominio. Es fundamental para describir propiedades generales y restricciones en sistemas.

En el próximo tema estudiaremos el cuantificador existencial.