Un conjunto matemático tiene un significado diferente al de un conjunto informático. Un conjunto matemático se define como un agregado o "lista" de elementos, ya sea mediante una enumeración explícita o mediante la caracterización de la propiedad de los elementos que están contenidos en el conjunto. Por ejemplo, podemos probar cualquier objeto del universo y determinar si forma parte del conjunto o no. Son extremadamente simples. Los conjuntos o listas informáticas añaden otras complejidades, como la asignación de memoria, etc.
El conjunto de todos los conjuntos es una estructura definida recursivamente y no puede representarse en su totalidad en un programa informático, pero puede ser imaginado en cierto sentido por la mente humana y representado por un conjunto finito de símbolos, ya sea en papel o en un ordenador. Es un conjunto que contiene todo lo que existe y que puede considerarse un conjunto de algo, también se incluye a sí mismo simplemente porque el conjunto de todos los conjuntos es un conjunto en sí mismo.
dejar $\mathcal{S} = \{X | X\mbox{ is a set}\}$
Entonces, por definición\construcción $\mathcal{S}$ es un conjunto mientras exista. La única forma de salir de la paradoja es asumir que $\mathcal{S}$ no existe, pero está claro que sí existen aproximaciones a ella y podemos escribir la propiedad de caracterización, por lo que "parece" que existe. No conozco ninguna "prueba" de que $\mathcal{S}$ existe realmente. Podemos escribir el conjunto y sus propiedades y parece que eso es suficiente para demostrar que tal conjunto existe, pero esto no es suficiente para garantizar que realmente existe.
En cualquier caso, si el conjunto existe entonces, debería estar claro que $\mathcal{S}$ debe ser un elemento de sí mismo. La razón es sencilla: $\mathcal{S}$ existe y es un conjunto, por suposición/deducción, y la propiedad de caracterización afirma que todo lo que existe y es un conjunto es un elemento de $\mathcal{S}$ . Por ello, $\mathcal{S} \in \mathcal{S}$ .
Para ser claros, vamos a simplificar:
dejar $\mathcal{B} = \{X | X\mbox{ is blue}\}$ . Dejando de lado la cuestión de cómo saber si algo es azul, podemos decir que el conjunto $\mathcal{B}$ es el conjunto de todas las cosas que son azules. Ahora, el conjunto $\mathcal{B}$ no es azul porque los conjuntos no tienen la propiedad del color (recuerda, tienen una forma de enumerar o describir sus elementos, nada más y nada menos).
Así que, $\mathcal{B} \notin \mathcal{B}$ . Sustituye azul por mesa y también debería estar claro. Ningún conjunto es una mesa y por tanto el conjunto de todas las mesas no puede estar "dentro" del conjunto.
Por ejemplo, supongamos que podemos enumerar todas las tablas por $table_1, ... table_n$ entonces este conjunto: $$\mathcal{T^*} = \{table_1, ..., table_n, \{table_1, ..., table_n, \{table_1, table_n, ... ... \}\}\}$$
No es el conjunto de todas las tablas. El conjunto de todas las mesas está dentro, pero una mesa no es un conjunto y un conjunto no es una mesa, así que hay una confusión porque nuestro conjunto contiene mesas y luego un conjunto. Por ejemplo, si fueras un fabricante de mesas y me pidieras que te trajera el conjunto de las mesas de fuera y te las trajera todas y además te trajera un conjunto de las mismas podrías mirarme raro y preguntarte por qué te he dado un "conjunto (matemático) de las mesas". Tú pediste sólo tablas pero yo te di un conjunto de tablas, que no es tabla, así que violé tu caracterización de lo que es una tabla.
PERO un conjunto es un conjunto! y eso hace que la situación sea muy singular. De nuevo, supongamos que podemos enumerar todos los conjuntos mediante algún esquema de indexación,
$\mathcal{S} = \{S_1, ..., S_n, \{S_1, ..., S_n, \{S_1, S_n, ... ... \}\}\} = \{S_1, ..., S_n, S\}$
Cada elemento de $\mathcal{S}$ es un conjunto, incluso el elemento $\mathcal{S}$ que es el propio conjunto en la definición de sí mismo.
Así, resulta que cuando uno escribe un conjunto de este tipo, es una definición recursiva que tiene una recursión infinita. Los programas de ordenador no pueden tratar ese caso, ya que requiere un nivel de abstracción que los ordenadores no pueden hacer. Los sistemas CAS pueden hacer un mejor trabajo y pueden tratar con algunos niveles infinitos pero no han progresado al nivel de abstracción que la mente humana puede realizar. (Un día, cuando los humanos descubran cómo codificar esas cosas, podrán manejar esos problemas, pero los humanos siempre tendrán que liderar hasta un punto en el que los ordenadores puedan pensar por sí mismos, en cuyo caso los humanos quedarán obsoletos).
Hay que tener claro que los ordenadores no tratan con conjuntos de conjuntos. No se puede ni siquiera empezar a construir adecuadamente algo así en un ordenador y hacer matemáticas con él. Cualquier "conjunto" en un ordenador no es un conjunto matemático. Es una lista de datos. Posiblemente se utilice una lista de punteros... así que tenemos un conjunto de punteros a "conjuntos" (que son en sí mismos datos y no conjuntos matemáticos reales). Un conjunto matemático no tiene ninguna estructura superficial. Es muy simple y muy directo y no oculta ningún detalle ni expone ninguna propiedad no esencial del tipo "conjunto". En realidad es más fácil de entender porque uno no tiene que saber cómo se construyen, usan o abusan los conjuntos como hay que hacer con los ordenadores. (por ejemplo, ¿es el conjunto concurrente?) Pero a la mayoría de la gente le resulta más difícil porque no puede desprenderse de sus propias nociones de lo que es un conjunto (le atribuyen un significado adicional en lugar de eliminar sus nociones "prácticas").
Ahora, el problema/paradoja ocurre cuando extendemos nuestra lógica sobre el conjunto de todos los conjuntos que no se contienen a sí mismos . Se trata de un subconjunto de $\mathcal{S}$ ya que tiene una condición extra:
dejar $\mathcal{S'} = \{X | X\mbox{ is a set and }X\notin X\}$
Esta condición extra crea una paradoja. Parece trivial, pero se abre toda una lata de gusanos. Seguimos la misma lógica que con let $\mathcal{S}$ pero esta vez descubrimos que si $\mathcal{S'} \in \mathcal{S '}$ terminamos con una contradicción PERO también si $\mathcal{S} \notin \mathcal{S'}$ terminamos con una contradicción. Pero no hay alternativa. Tenemos una contradicción más grande creada.
Es fácil de ver:
si $\mathcal{S'} \in \mathcal{S'}$ entonces esto significa que no podemos incluir $\mathcal{S'}$ en nuestro conjunto ya que no cumple la propiedad de caracterización. Pero eso nos lleva a $\mathcal{S'} \notin \mathcal{S'}$ lo que contradice nuestra hipótesis de partida.
Entonces, OTOH, si $\mathcal{S'} \notin \mathcal{S'}$ entonces $\mathcal{S'}$ pasa la prueba de caracterización y está en el conjunto, lo que significa que $\mathcal{S'} \in \mathcal{S'}$ lo que de nuevo contradice nuestra suposición.
No hay otras alternativas, así que ¿qué dice eso de $\mathcal{S'}$ ? ¿No existe? Puede tanto contenerse como no contenerse de alguna manera (lo que viola la prueba de caracterización general para todos los conjuntos).
Por ejemplo, supongamos que tenemos los dos conjuntos
$\mathcal{S*} = \{X | X\mbox{ is a set and }X\in X\}$ $\mathcal{S''} = \{X | X \neq \mathcal{S''}\mbox{ is a set and }X\notin X \}$
Los dos conjuntos son válidos en cierto sentido y no tienen problemas, pero han cambiado muy poco. El segundo ejemplo es un poco difícil sin embargo porque hacer ser capaz de saber si $X \in \mathcal{S''}$ tenemos que saber $\mathcal{S''}$ ... pero estamos construyendo $\mathcal{S''}$ en ese proceso, así que no sabemos $\mathcal{S''}$ todavía. Así que la "contradicción" que $\mathcal{S'}$ había realmente se arrastra a $\mathcal{S''}$ .
Lo que hay que tener en cuenta es que estas cuestiones forman parte de los fundamentos de las matemáticas. Lo que muestran es que el uso del lenguaje matemático que parece ser muy lógico y se aplica a muchas otras cosas... cosas que los matemáticos normales usan todos los días, resulta que, en casos muy especiales, produce contradicciones. Esto crea problemas fundamentales en las matemáticas porque sugiere que hay un "error" en alguna parte.
En realidad no tiene nada que ver con los ordenadores, salvo que los ordenadores se construyen sobre las matemáticas. No cambia mucho para la mayoría de la gente porque no utilizan las matemáticas que se derivan de tales nociones.
Es análogo a la paradoja EPR. Es una cosa que "existe" pero a nadie le afecta en la vida práctica. Los ingenieros de cohetes no tienen que preocuparse y no tienen que construir cohetes de forma diferente. Sin embargo, pone a prueba nuestra comprensión de la naturaleza de la realidad, y por eso es tan importante. Significa que algo falla en alguna parte. O bien nos equivocamos (un error), hay un error fundamental en la existencia (lo que significa que no es un error, sino simplemente la vida y tenemos que lidiar con ella), o hay un error fundamental en nuestra capacidad de entender la existencia (como el segundo caso, pero no creado por "dios").
Si quieres estudiar estas cosas usando ordenadores vas a tener que alejarte de las estructuras de datos que estás confundiendo con las "estructuras de datos" matemáticas. Un conjunto informático (que es un array) no es lo mismo que la versión matemática (aunque se solapan bastante).
La mejor manera de representar el conjunto de todos los conjuntos en un ordenador es utilizando la representación de cadena "X es el conjunto de todos los conjuntos". Se podría utilizar un booleano: "bool X = true;" Cuando X es falso no es el conjunto de todos los conjuntos.
Sea como sea que intentes representarlo, acabarás con el problema de intentar hacer algo con él. Tendrás que idear algún sistema lógico que no sea la programación estándar e implementar la lógica matemática. Será bastante difícil o posiblemente imposible. Los CAS son la única cosa conocida que se acerca a tales cosas y hacen trampa y son incompletos. Esencialmente tendrás que programar la mente humana en un ordenador para poder tener alguna posibilidad de averiguar estas cosas.
El problema es sencillo: Los ordenadores deben representar cosas en última instancia como 0's y 1's pero las matemáticas pueden representar cosas sin nada. Sólo tiene que tener un símbolo para ello y puede dejar que se desconozca. (por ejemplo, x en una expresión algebraica es una "incógnita" (aunque sea una incógnita restringida)... no requiere ningún almacenamiento excepto el símbolo) Por eso las matemáticas son tan poderosas, porque utilizan la manipulación simbólica para representar transformaciones de cosas que no necesitan ser representables de ninguna manera. Podemos simplemente establecer "Que X sea algo" y luego hacer algo con X. Siempre que tengamos claro cómo hacemos estas cosas, podemos crear una estructura. Por supuesto, "que X sea algo" es tan general que podemos hacer cualquier cosa/nada, así que tenemos que retroceder un poco, y esa es la naturaleza de la vida, según parece. Puede ser que el conjunto de todos los conjuntos que no se contenga a sí mismo esté cerca del límite del sinsentido y por eso tenemos una contradicción. Al igual que puedo decir que X es verdadero y falso a la vez y es imposible de demostrar/desmentir porque X es algo sin ninguna otra cosa que apoye o niegue mis afirmaciones. Hay que añadir restricciones a las ideas para darles forma y permitir que interactúen con otras cosas. Las matemáticas empujan tanto los límites que puede que estén en el punto en el que no puedan ir más allá, o que deba producirse algún nuevo avance que revolucione nuestra comprensión no sólo de las matemáticas sino de la vida.
2 votos
Buena pregunta. Tiene que ver con el axioma que permite construir subconjuntos pero no es evidente cómo se presenta esta paradoja desde la perspectiva de la codificación.
33 votos
Creo que te equivocas al creer que "El conjunto de todos los conjuntos que no se contienen a sí mismos" es "un concepto relativamente fácil de aplicar". Para empezar, intenta implementar simplemente "el conjunto de todos los conjuntos".
0 votos
Fuzzy Russell .
8 votos
En primer lugar, la paradoja de Russell habla de la pertenencia ( $\in$ ) y no de contención ( $\subseteq$ ); todo conjunto se contiene a sí mismo (como subconjunto), así que en ese sentido no tiene sentido hablar del conjunto de conjuntos que no se contienen a sí mismos (que sería el conjunto vacío). En segundo lugar, la pertenencia en la teoría de conjuntos es sólo una relación entre dos valores (es decir, dos conjuntos) que puede o no ser válida para un par determinado; no es necesario implementar nada. La cuestión es sólo si una determinada lista de axiomas sobre esta relación puede satisfacerse simultáneamente, y la paradoja de Russell demuestra que no puede.
3 votos
@MarcvanLeeuwen Por desgracia, no estoy seguro de que haya un consenso entre los matemáticos, y estoy bastante seguro de que no hay unanimidad, sobre si un conjunto contiene sus subconjuntos y incluye sus elementos o si contiene sus subconjuntos y incluye sus elementos .
1 votos
@bof: Probablemente quisiste invertir los términos en la segunda versión. Pero sí que solemos decir "el conjunto $S$ contiene el vector cero" o "Conjuntos ordenados bajo inclusión ". Muy incoherente.
14 votos
Dices que es un concepto relativamente fácil de implementar - me gustaría ver tu implementación.
2 votos
@hardmath: De hecho he demostrado en mi respuesta que hay una interpretación significativa de los conjuntos en términos de computabilidad en la que hay un conjunto de todos los conjuntos, concretamente el programa que acepta todos los programas. Lo que falla no está en una sola noción sino en la combinación de nociones incompatibles. Muchos lenguajes de programación tienen un tipo universal como mencioné en mi respuesta, y no se enfrentan a la contradicción simplemente porque no tienen axiomas de especificación fuertes. Por ejemplo, las interfaces y los genéricos de Java son un sistema de tipos muy débil que supuestamente se ha demostrado que es decidible.
0 votos
En los conjuntos infinitos es donde empiezan a ocurrir todas las rarezas. Como todos los artificios informáticos físicos, Java no maneja conjuntos de tamaño infinito.
0 votos
El punto de vista de Russell expuesto en PM es en realidad que $x\in x$ es sin sentido como también lo es $x\notin x$ ..