La mayoría de los asistentes de prueba tienen una formalización del concepto de "conjunto finito". Sin embargo, estas formalizaciones difieren enormemente (¡aunque uno espera que todas sean esencialmente equivalentes!). Lo que no entiendo en este momento es el espacio de diseño involucrado, y cuáles son los pros y los contras de cada formalización.
En particular, me gustaría entender lo siguiente:
- ¿Puedo axiomatizar conjuntos finitos (es decir, tipos habitados por un número finito de habitantes) en la teoría de tipos simple? Sistema F? ¿Cuáles son los inconvenientes de hacerlo de esta manera?
- Sé que se puede hacer 'elegantemente' en un sistema de tipo dependiente. Pero, desde un punto de vista clásico, las definiciones resultantes parecen extremadamente extrañas. [¡No digo que estén equivocados, ni mucho menos!]. Pero tampoco entiendo por qué tienen "razón". Entiendo que escogen el concepto correcto , pero la razón más profunda para "decirlo de esa manera" es lo que no entiendo completamente.
Básicamente, me gustaría una introducción razonada al espacio de diseño de formalizaciones del concepto de 'conjunto finito' en la teoría de tipos.
fuente
Déjame ver si puedo agregar algo útil a la respuesta de Neel. El "espacio de diseño" para conjuntos finitos es mucho más grande constructivamente que clásico porque varias definiciones de "finito" no necesitan coincidir constructivamente. Varias definiciones en la teoría de tipos dan conceptos ligeramente diferentes. Aquí hay algunas posibilidades.
Los conjuntos finitos de Kuratowski ( -finite) se pueden caracterizar como las redes libres -: dado un conjunto, tipo u objeto , los elementos de la red libre - pueden ser como subconjuntos finitos de . De hecho, cada elemento es generado por:K ∨ X ∨ K(X) X
Una formulación equivalente de es: es -finite si, y solo si, existe y una suposición .K(X) S⊆X K n∈N e:{1,…,n}→S
Si comparamos esto con la definición de Neel vemos que se requiere una biyección . Esto equivale a tomar esos subconjuntos -finitos que tienen igualdad decidible: . Usemos para la recogida de decidable subconjuntos -finite de .e:{1,…,n}→S K S⊆X ∀x,y∈S.x=y∨x≠y D(X) K X
Obviamente, está cerrado bajo uniones finitas, pero no necesita cerrarse bajo intersecciones finitas. Y no está cerrado bajo ninguna operación. Dado que la gente espera que los conjuntos finitos se comporten un poco como una "aglebra booleana sin una parte superior", también se podría tratar de definirlos como el álgebra booleana generalizada libre ( , , y complementos relativos ), pero en realidad nunca Escuché de tal esfuerzo.K(X) D(X) 0 ∨ ∧ ∖
Al decidir cuál es la definición "correcta", debe prestar atención a lo que desea hacer con los conjuntos finitos. Y no hay una única definición correcta. Por ejemplo, ¿en qué sentido de "finito" es el conjunto de raíces complejas de un polinomio finito ?
Ver Constructivamente finito? por Thierry Coquand y Arnaud Spiwack para una discusión detallada de la finitud. La lección es que la finitud está lejos de ser obvia constructivamente.
fuente