37. Aplicaciones de conjuntos en lógica matemática

Los conjuntos permiten interpretar proposiciones, predicados, conectores y cuantificadores. La lógica matemática y la teoría de conjuntos están profundamente conectadas.

37.1 Introducción

La lógica matemática estudia razonamientos formales. La teoría de conjuntos ofrece una forma de representar condiciones, propiedades y relaciones mediante colecciones de elementos.

Cuando una condición selecciona elementos de un universo, esa condición define un conjunto. Esta idea conecta directamente predicados, conectores lógicos y operaciones entre conjuntos.

37.2 Proposiciones y valores de verdad

Una proposición es una afirmación que puede ser verdadera o falsa.

"5 es mayor que 3" es verdadera. "2 es múltiplo de 5" es falsa.

Las proposiciones simples no dependen de una variable. Los predicados, en cambio, sí dependen de elementos de un universo.

37.3 Predicados como conjuntos

Un predicado es una propiedad que puede cumplirse o no para cada elemento de un universo.

U = {1, 2, 3, 4, 5, 6} P(x): x es par

El predicado P define el conjunto de elementos que lo satisfacen:

{x ∈ U | P(x)} = {2, 4, 6}

37.4 Conectivo "y" e intersección

El conectivo lógico "y" corresponde a la intersección de conjuntos.

P(x): x es par Q(x): x es mayor que 3 P(x) y Q(x)

El conjunto de elementos que cumplen ambas condiciones es:

P ∩ Q

37.5 Conectivo "o" y unión

El conectivo lógico "o" inclusivo corresponde a la unión de conjuntos.

P(x) o Q(x) corresponde a P ∪ Q

Un elemento pertenece a la unión si cumple al menos una de las condiciones.

37.6 Negación y complemento

La negación de un predicado corresponde al complemento del conjunto que lo satisface.

no P(x) corresponde a Pᶜ

Si P representa los números pares del universo, Pᶜ representa los números que no son pares dentro de ese universo.

37.7 Tabla de correspondencias

Lógica Conjuntos Interpretación
P y Q P ∩ Q Cumple ambas condiciones
P o Q P ∪ Q Cumple al menos una condición
no P Pᶜ No cumple P dentro del universo
P implica Q P ⊆ Q Todo elemento que cumple P también cumple Q
P si y solo si Q P = Q Ambas condiciones tienen los mismos casos verdaderos

37.8 Implicación como inclusión

La implicación P ⇒ Q puede interpretarse como una relación de inclusión entre conjuntos.

P ⇒ Q equivale a Conjunto(P) ⊆ Conjunto(Q)

Si todo número múltiplo de 4 es par, entonces el conjunto de múltiplos de 4 está contenido en el conjunto de números pares.

37.9 Equivalencia lógica como igualdad

Dos predicados son lógicamente equivalentes si son verdaderos para exactamente los mismos elementos del universo.

P ⇔ Q equivale a Conjunto(P) = Conjunto(Q)

En términos de conjuntos, equivalencia lógica significa igualdad de conjuntos de verdad.

37.10 Cuantificador universal

El cuantificador universal afirma que una propiedad se cumple para todos los elementos del universo.

∀x ∈ U, P(x)

En conjuntos, esto significa que el conjunto que satisface P coincide con el universo.

{x ∈ U | P(x)} = U

37.11 Cuantificador existencial

El cuantificador existencial afirma que existe al menos un elemento que cumple una propiedad.

∃x ∈ U, P(x)

En conjuntos, esto significa que el conjunto que satisface P no es vacío.

{x ∈ U | P(x)} ≠ ∅

37.12 Leyes de De Morgan en lógica

Las leyes de De Morgan conectan negación con "y" y "o".

no (P o Q) = no P y no Q no (P y Q) = no P o no Q

En conjuntos son las mismas leyes:

(P ∪ Q)ᶜ = Pᶜ ∩ Qᶜ (P ∩ Q)ᶜ = Pᶜ ∪ Qᶜ

37.13 Evaluar predicados en JavaScript

Podemos representar un universo como arreglo y un predicado como función que devuelve verdadero o falso.

const universo = [1, 2, 3, 4, 5, 6];

const esPar = x => x % 2 === 0;
const mayorQueTres = x => x > 3;

const pares = universo.filter(esPar);
const mayoresQueTres = universo.filter(mayorQueTres);

console.log(pares);
console.log(mayoresQueTres);

Cada filtro construye el conjunto de elementos que satisfacen un predicado.

37.14 Conectores lógicos en JavaScript

Podemos representar "y", "o" y "no" mediante operadores lógicos.

const universo = [1, 2, 3, 4, 5, 6];

const esPar = x => x % 2 === 0;
const mayorQueTres = x => x > 3;

const paresYMayoresQueTres = universo.filter(x =>
  esPar(x) && mayorQueTres(x)
);

const paresOMayoresQueTres = universo.filter(x =>
  esPar(x) || mayorQueTres(x)
);

const noPares = universo.filter(x => !esPar(x));

console.log(paresYMayoresQueTres);
console.log(paresOMayoresQueTres);
console.log(noPares);

Estas operaciones coinciden con intersección, unión y complemento dentro del universo.

37.15 Cuantificadores en JavaScript

Los métodos every y some se relacionan con los cuantificadores universal y existencial.

const universo = [1, 2, 3, 4, 5, 6];

console.log(universo.every(x => x > 0));
console.log(universo.some(x => x % 2 === 0));

every verifica si todos cumplen una condición. some verifica si existe al menos uno que la cumple.

37.16 Aplicaciones prácticas

Área Uso lógico Interpretación con conjuntos
Validación Todos los campos son válidos Todos los elementos pertenecen al conjunto de válidos
Búsqueda Existe un resultado que cumple el criterio El conjunto filtrado no es vacío
Permisos Rol implica permiso Usuarios con rol ⊆ usuarios con permiso
Filtros Condición A y condición B Intersección de resultados
Reglas de negocio Negación de condiciones combinadas Uso de complementos y De Morgan

37.17 Errores frecuentes

  • Confundir "o" inclusivo con "o" exclusivo.
  • Negar una condición compuesta sin aplicar correctamente De Morgan.
  • Usar cuantificadores sin definir el universo.
  • Confundir implicación con equivalencia.
  • Olvidar que un predicado define un conjunto de elementos que lo satisfacen.

37.18 Qué debes recordar de este tema

  • Un predicado define un conjunto dentro de un universo.
  • El conectivo "y" corresponde a intersección.
  • El conectivo "o" corresponde a unión.
  • La negación corresponde al complemento.
  • La implicación puede interpretarse como inclusión.
  • En JavaScript, filter, every y some conectan lógica con conjuntos.

37.19 Conclusión

La teoría de conjuntos ofrece una interpretación clara de la lógica matemática. Predicados, conectores y cuantificadores pueden analizarse mediante conjuntos, operaciones y relaciones.

En el próximo tema estudiaremos aplicaciones de conjuntos en programación.