Estoy tratando de entender los conceptos de tipos universales y existenciales, pero en todas partes veo intuiciones lógicas u operativas (o implementaciones) (por ejemplo, el libro TAPL de B. Pierce), que, bueno ... es bueno , pero me gustaría ver las definiciones (donde las vemos como conjuntos), y de ellas, derivaciones de algunas leyes, así como justificaciones para nuestras intuiciones.
Entonces, como no puedo encontrar esas definiciones, decidí hacerlo yo mismo y creo que pueden ser razonables:
∃ x . T d e f : = ⋃ S - t y p e T [ x : = S ]
Pero, en el libro TAPL mencionado anteriormente, se nos da esta definición (aunque yo lo llamaría una identidad)
Tengo dos problemas con esto:
- En el LHS de esperaría que x fuera la única variable libre de T (porque ¿cómo ver un tipo "aún no construido" con algunas variables libres colgando en él?), Pero en el RHS parece que y puede tener algún impacto en T , por lo que es mejor que sea una variable libre en T . Por lo tanto, LHS no puede ser igual a RHS porque los conjuntos de variables libres de T difieren en ambos lados, ¿verdad?
- Incluso sin tener en cuenta la preocupación en el punto 1. - Traté de reescribir RHS usando mis definiciones y ver si puedo obtener mi definición de tipo existencial pero me quedé:
Ni siquiera se parece remotamente a mi definición. ¿Es posible simplificar la fórmula a la que llegué? Intuitivamente, debido a que hay tipos de funciones, probablemente nunca será igual a mi definición. Pero si no son iguales, ¿son al menos 'isomórficos' en algún sentido? Si no, ¿qué "salió mal"?
fuente
Respuestas:
La teoría de conjuntos te está haciendo daño aquí y cuanto antes te liberes de ella, mejor será para tu comprensión de la informática.
Olvídate de las intersecciones y uniones. La gente tiene la idea de que y ∃ son como ⋂ y ⋃ , que es el tipo de cosas que la escuela polaca estaba haciendo hace mucho tiempo con álgebras booleanas, pero realmente no es el camino a seguir (definitivamente no en informática).∀ ∃ ⋂ ⋃
Te gustaría verlos como conjuntos. Ok, pero luego tenemos que ignorar los problemas de tamaño y pretender que hay un conjunto de todos los conjuntos. (Es posible solucionar los problemas de tamaño pasando a una categoría diferente). El tipo es realmente como el producto cartesiano ∀ X . T : = ∏ S : S e t T [ X ↦ S ] . Es decir, un elemento de ∀ X . T es una función f de conjuntos a conjuntos: para cada conjunto S da un elemento∀x.T
fuente
En palabras:
fuente
Sugiero no renunciar a la intuición operativa. La operativa es primaria, toda la semántica se deriva y no son más que técnicas de prueba para la semántica operativa. Las ideas clave son las siguientes.
fuente