El conjunto de todos los enteros pares ,
expresado en notación de constructor de conjuntos.
En la teoría de conjuntos y sus aplicaciones a la lógica , las matemáticas y la informática , la notación del constructor de conjuntos es una notación matemática para describir un conjunto enumerando sus elementos o indicando las propiedades que sus miembros deben satisfacer. [1]
La definición de conjuntos por propiedades también se conoce como comprensión de conjuntos , abstracción de conjuntos o definición de la intensión de un conjunto .
Un conjunto se puede describir directamente enumerando todos sus elementos entre llaves, como en los dos ejemplos siguientes:
Esto a veces se denomina "método de lista" para especificar un conjunto. [2]
Cuando se desea denotar un conjunto que contiene elementos de una secuencia regular, se puede emplear una notación de elipses , como se muestra en los siguientes ejemplos:
No hay orden entre los elementos de un conjunto (esto explica y valida la igualdad del último ejemplo), pero con la notación de elipses, usamos una secuencia ordenada antes (o después) de la elipsis como un vehículo de notación conveniente para explicar qué elementos están en un set. Se muestran los primeros elementos de la secuencia, luego las elipses indican que se debe aplicar la interpretación más simple para continuar la secuencia. Si no aparece ningún valor de terminación a la derecha de las elipses, entonces la secuencia se considera ilimitada.
En general, denota el conjunto de todos los números naturales tales que . Otra notación para es la notación de corchetes . Un caso especial sutil es , en el que es igual al conjunto vacío . De manera similar, denota el conjunto de todos para .
En cada ejemplo anterior, cada conjunto se describe enumerando sus elementos. No todos los conjuntos pueden describirse de esta manera o, si es posible, su enumeración puede ser demasiado larga o complicada para resultar útil. Por tanto, muchos conjuntos están definidos por una propiedad que caracteriza a sus elementos. Esta caracterización se puede hacer de manera informal utilizando prosa general, como en el siguiente ejemplo.
Sin embargo, el enfoque en prosa puede carecer de precisión o ser ambiguo. Por lo tanto, la notación del constructor de conjuntos se usa a menudo con un predicado que caracteriza los elementos del conjunto que se está definiendo, como se describe en la siguiente sección.
La notación del generador de conjuntos se puede utilizar para describir un conjunto definido por un predicado , es decir, una fórmula lógica que se evalúa como verdadera para un elemento del conjunto y falsa en caso contrario. [3] En esta forma, la notación del generador de conjuntos tiene tres partes: una variable, un separador de dos puntos o barra vertical y un predicado. Por lo tanto, hay una variable a la izquierda del separador y una regla a la derecha. Estas tres partes están contenidas entre corchetes:
o
La barra vertical (o dos puntos) es un separador que se puede leer como " tal que ", [4] "para el cual" o "con la propiedad que". Se dice que la fórmula Φ ( x ) es la regla o el predicado . Todos los valores de x para los que el predicado se cumple (es verdadero) pertenecen al conjunto que se está definiendo. Todos los valores de x para los que no se cumple el predicado no pertenecen al conjunto. Así es el conjunto de todos los valores de x que satisfacen la fórmula Φ . [5] Puede ser el conjunto vacío , si ningún valor de x satisface la fórmula.
Un dominio E puede aparecer a la izquierda de la barra vertical: [6]
o adjuntándolo al predicado:
El símbolo ∈ aquí denota pertenencia al conjunto , mientras que el símbolo denota el operador lógico "y", conocido como conjunción lógica . Esta notación representa el conjunto de todos los valores de x que pertenecen a algún conjunto dado E para el que el predicado es verdadero (ver " Establecer axioma de existencia " a continuación). Si es una conjunción , a veces se escribe con una coma en lugar del símbolo .
En general, no es una buena idea considerar conjuntos sin definir un dominio, ya que esto representaría el subconjunto de todas las cosas posibles que pueden existir para las que el predicado es verdadero. Esto puede conducir fácilmente a contradicciones y paradojas. Por ejemplo, la paradoja de Russell muestra que la expresión, aunque aparentemente bien formada como una expresión de constructor de conjuntos, no puede definir un conjunto sin producir una contradicción. [7]
En los casos en los que el conjunto E se desprende del contexto, es posible que no se especifique explícitamente. Es común en la literatura que un autor indique el dominio con anticipación y luego no lo especifique en la notación del constructor de conjuntos. Por ejemplo, un autor puede decir algo como, "A menos que se indique lo contrario, las variables deben tomarse como números naturales". Aunque en contextos menos formales en los que se puede asumir el dominio, una mención escrita a menudo es innecesaria.
Los siguientes ejemplos ilustran conjuntos particulares definidos por la notación del constructor de conjuntos a través de predicados. En cada caso, el dominio se especifica en el lado izquierdo de la barra vertical, mientras que la regla se especifica en el lado derecho.
Una extensión de la notación del generador de conjuntos reemplaza la variable única x con una expresión . Entonces, en lugar de , podemos tener lo que debería leerse
Por ejemplo:
Cuando las funciones inversas se pueden establecer explícitamente, la expresión de la izquierda se puede eliminar mediante una simple sustitución. Considere el conjunto de ejemplos . Haga la sustitución , es decir , luego reemplace t en la notación del generador de conjuntos para encontrar
Dos conjuntos son iguales si y solo si tienen los mismos elementos. Los conjuntos definidos por la notación del constructor de conjuntos son iguales si y solo si sus reglas del constructor de conjuntos, incluidos los especificadores de dominio, son equivalentes. Es decir
si y solo si
Por lo tanto, para probar la igualdad de dos conjuntos definidos por la notación del constructor de conjuntos, basta con probar la equivalencia de sus predicados, incluidos los calificadores de dominio.
Por ejemplo,
porque los dos predicados de la regla son lógicamente equivalentes:
Esta equivalencia es válida porque, para cualquier número real x , tenemos si y solo si x es un número racional con . En particular, ambos conjuntos son iguales al conjunto .
En muchas teorías formales de conjuntos, como la teoría de conjuntos de Zermelo-Fraenkel , la notación del constructor de conjuntos no es parte de la sintaxis formal de la teoría. En cambio, hay un esquema de axiomas de existencia de conjuntos , que establece que si E es un conjunto y Φ ( x ) es una fórmula en el lenguaje de la teoría de conjuntos, entonces hay un conjunto Y cuyos miembros son exactamente los elementos de E que satisfacen Φ :
El conjunto Y obtenido de este axioma es exactamente el conjunto descrito en la notación del constructor de conjuntos como .
Una notación similar disponible en varios lenguajes de programación (especialmente Python y Haskell ) es la comprensión de listas , que combina operaciones de mapa y filtro en una o más listas .
En Python, las llaves del constructor de conjuntos se reemplazan por corchetes, paréntesis o llaves, dando lista, generador y objetos de conjunto, respectivamente. Python usa una sintaxis basada en inglés. Haskell reemplaza las llaves del constructor de conjuntos con corchetes y usa símbolos, incluida la barra vertical estándar del constructor de conjuntos.
Lo mismo se puede lograr en Scala usando Sequence Comprehensions, donde la palabra clave "for" devuelve una lista de las variables obtenidas usando la palabra clave "yield". [8]
Considere estos ejemplos de notación de constructores de conjuntos en algunos lenguajes de programación:
Ejemplo 1 | Ejemplo 2 | |
---|---|---|
Constructor de escenarios | ||
Pitón | { l por l en L } | {( k , x ) para k en K para x en X si P ( x )} |
Haskell | [ l | l <- ls ] | [( k , x ) | k <- ks , x <- xs , p x ] |
Scala | para ( l <- L ) rendimiento l | para ( k <- K ; x <- X si P ( x )) rendimiento ( k , x ) |
C# | de l en L seleccione l | desde k en K desde x en X donde P ( x ) seleccione ( k , x ) |
SQL | SELECCIONAR l DE L_set | SELECCIONE k , x DE K_set , X_set DONDE P ( x ) |
La notación del constructor de conjuntos y la notación de comprensión de listas son instancias de una notación más general conocida como comprensión de mónadas , que permite operaciones tipo mapa / filtro sobre cualquier mónada con un elemento cero .