La topología computable es una disciplina de las matemáticas que estudia la estructura topológica y algebraica de la computación . La topología computable no debe confundirse con la topología algorítmica o computacional , que estudia la aplicación de la computación a la topología.
Como lo demostraron Alan Turing y Alonzo Church , el cálculo lambda es lo suficientemente fuerte como para describir todas las funciones computables mecánicamente (ver la tesis de Church-Turing ). [1] [2] [3] El cálculo lambda es, por lo tanto, efectivamente un lenguaje de programación, a partir del cual se pueden construir otros lenguajes. Por esta razón, cuando se considera la topología de la computación, es común centrarse en la topología del cálculo lambda. Nótese que esta no es necesariamente una descripción completa de la topología de la computación, ya que las funciones que son equivalentes en el sentido de Church-Turing aún pueden tener topologías diferentes.
La topología del cálculo lambda es la topología de Scott y, cuando se restringe a funciones continuas, el cálculo lambda libre de tipos equivale a un espacio topológico que depende de la topología de árbol . Tanto la topología de Scott como la de árbol muestran continuidad con respecto a los operadores binarios de aplicación (f aplicada a a = fa) y abstracción ((λx.t(x))a = t(a)) con una relación de equivalencia modular basada en una congruencia . Se ha descubierto que el álgebra lambda que describe la estructura algebraica del cálculo lambda es una extensión del álgebra combinatoria , con un elemento introducido para dar cabida a la abstracción.
El cálculo λ libre de tipos trata las funciones como reglas y no diferencia las funciones y los objetos a los que se aplican, lo que significa que el cálculo λ es libre de tipos . Un subproducto del cálculo λ libre de tipos es una computabilidad efectiva equivalente a la recursión general y las máquinas de Turing . [4] El conjunto de términos λ puede considerarse una topología funcional en la que se puede incrustar un espacio de funciones , lo que significa que las aplicaciones λ dentro del espacio X son tales que λ:X → X. [4] [5] Introducido en noviembre de 1969, el modelo teórico de conjuntos no tipados de Dana Scott construyó una topología adecuada para cualquier modelo de cálculo λ cuyo espacio de funciones esté limitado a funciones continuas. [4] [5] El resultado de una topología de cálculo λ continuo de Scott es un espacio de funciones construido sobre una semántica de programación que permite combinatorias de punto fijo, como el combinador Y , y tipos de datos. [6] [7] En 1971, el cálculo λ estaba equipado para definir cualquier cálculo secuencial y podía adaptarse fácilmente a los cálculos paralelos. [8] La reducibilidad de todos los cálculos al cálculo λ permite que estas propiedades λ-topológicas sean adoptadas por todos los lenguajes de programación. [4]
Basándose en los operadores del cálculo lambda , la aplicación y la abstracción, es posible desarrollar un álgebra cuya estructura de grupo utiliza la aplicación y la abstracción como operadores binarios. La aplicación se define como una operación entre términos lambda que produce un término λ, p. ej., la aplicación de λ sobre el término lambda a produce el término lambda λa . La abstracción incorpora variables no definidas al denotar λx.t(x) como la función que asigna la variable a al término lambda con valor t(a) mediante la operación ((λ xt(x))a = t(a)). Por último, surge una relación de equivalencia que identifica los términos λ módulo términos convertibles, un ejemplo es la forma normal beta .
La topología de Scott es esencial para entender la estructura topológica de la computación expresada a través del cálculo λ. Scott encontró que después de construir un espacio de funciones usando el cálculo λ se obtiene un espacio de Kolmogorov , un espacio topológico que exhibe convergencia puntual , en resumen la topología del producto . [9] Es la capacidad del autohomeomorfismo así como la capacidad de incrustar cada espacio en tal espacio, denotado Scott continuo , como se describió previamente, lo que permite que la topología de Scott sea aplicable a la lógica y la teoría de funciones recursivas. Scott aborda su derivación usando una red completa , lo que resulta en una topología dependiente de la estructura de la red. Es posible generalizar la teoría de Scott con el uso de órdenes parciales completos . Por esta razón, se proporciona una comprensión más general de la topología computacional a través de órdenes parciales completos. Reiteraremos para familiarizarnos con la notación que se utilizará durante la discusión de la topología de Scott.
Los pedidos parciales completos se definen de la siguiente manera:
Primero, dado el conjunto parcialmente ordenado D=(D,≤), un subconjunto no vacío X ⊆ D está dirigido si ∀ x,y ∈ X ∃ z ∈ X donde x ≤ z & y ≤ z .
D es una orden parcial completa (cpo) si:
Ahora podemos definir la topología de Scott sobre un cpo (D, ≤ ).
O ⊆ D está abierto si:
Utilizando la definición topológica de Scott de abierto, es evidente que se cumplen todas las propiedades topológicas.
Aunque no se muestra aquí, es el caso que la función es continua si y sólo si f (sup( X )) = sup( f ( X )) para todo X ⊆ D dirigido , donde f ( X ) = { f ( x ) | x ∈ X } y el segundo supremo en . [4]
Antes de comenzar a explicar que la aplicación común al cálculo λ es continua dentro de la topología de Scott, requerimos una cierta comprensión del comportamiento de los supremos sobre funciones continuas, así como las condiciones necesarias para que el producto de espacios sea continuo, a saber:
Ahora demostramos la continuidad de la aplicación . Utilizando la definición de aplicación de la siguiente manera:
Ap es continua con respecto a la topología de Scott en el producto ( ):
Para demostrar que la topología de Scott es adecuada para el cálculo λ, es necesario probar que la abstracción permanece continua a lo largo de la topología de Scott. Una vez completado, se habrá demostrado que la base matemática del cálculo λ es un paradigma funcional candidato bien definido y adecuado para la topología de Scott.
Con definimos (x) = λ y ∈ f(x,y)Mostraremos:
No se ha demostrado cómo y por qué el cálculo λ define la topología de Scott.
Los árboles de Böhm , que se representan gráficamente con facilidad, expresan el comportamiento computacional de un término lambda . Es posible predecir la funcionalidad de una expresión lambda dada a partir de su árbol de Böhm correlacionado. [4] Los árboles de Böhm pueden verse de manera algo análoga a donde el árbol de Böhm de un conjunto dado es similar a la fracción continua de un número real, y lo que es más, el árbol de Böhm correspondiente a una secuencia en forma normal es finito, similar al subconjunto racional de los Reales.
Los árboles de Böhm se definen como una aplicación de elementos dentro de una secuencia de números con orden (≤, lh) y un operador binario * a un conjunto de símbolos. El árbol de Böhm es entonces una relación entre un conjunto de símbolos a través de una aplicación parcial ψ.
De manera informal, los árboles de Böhm pueden conceptualizarse de la siguiente manera:
BT(M) = λ .y
/ \
BT( BT( ) ; si M es solucionable
Más formalmente:
Σ se define como un conjunto de símbolos. El árbol de Böhm de un término λ M, denotado BT(M), es el árbol etiquetado como Σ que se define de la siguiente manera:
Si M es solucionable, donde M = λ x_{1} :
Ahora podemos pasar a demostrar que los árboles de Böhm actúan como aplicaciones adecuadas de la topología de árbol a la topología de Scott, lo que permite ver las construcciones computacionales, ya sea dentro de la topología de Scott o de árbol, como formaciones de árboles de Böhm.
Se ha descubierto que los árboles de Böhm permiten un mapeo continuo de la topología del árbol a la topología de Scott. Más específicamente:
Comenzamos con el cpo B = (B,⊆) en la topología de Scott, con el ordenamiento de los árboles de Böhm denotado M⊆ N, lo que significa que M, N son árboles y M resulta de N. La topología de árbol en el conjunto Ɣ es el conjunto más pequeño que permite una función continua.
Una definición equivalente sería decir que los conjuntos abiertos de Ɣ son la imagen del árbol de Böhm inverso (O) donde O es abierto de Scott en B.
La aplicabilidad de los árboles Bömh y la topología de árboles tiene muchas consecuencias interesantes para los términos λ expresados topológicamente:
Los nuevos métodos de interpretación del cálculo λ no sólo son interesantes en sí mismos, sino que permiten nuevos modos de pensamiento en relación con los comportamientos de la ciencia informática. El operador binario dentro del álgebra λ A es aplicación. La aplicación se denota ⋅ y se dice que da estructura . Un álgebra combinatoria permite el operador de aplicación y actúa como un punto de partida útil, pero sigue siendo insuficiente para el cálculo λ al no poder expresar abstracción. El álgebra λ se convierte en un álgebra combinatoria M combinada con un operador sintáctico λ* que transforma un término B(x,y) , con constantes en M , en C( )≡ λ* xB(x, ). También es posible definir un modelo de extensión para evitar la necesidad del operador λ* permitiendo ∀x (fx =gx) ⇒ f =g . La construcción del álgebra λ mediante la introducción de un operador de abstracción procede de la siguiente manera:
Debemos construir un álgebra que permita soluciones a ecuaciones como axy = xyy tales que a = λ xy.xyy, por lo que es necesario el álgebra combinatoria. Los atributos relevantes del álgebra combinatoria son:
Dentro del álgebra combinatoria existen estructuras aplicativas . Una estructura aplicativa W es un álgebra combinatoria siempre que:
El álgebra combinatoria es:
Las álgebras combinatorias siguen sin poder actuar como estructura algebraica para el cálculo λ, siendo la falta de recursión una desventaja importante. Sin embargo, la existencia de un término aplicativo ) proporciona un buen punto de partida para construir un álgebra de cálculo λ. Lo que se necesita es la introducción de un término lambda , es decir, incluir λx.A(x, ).
Comenzamos explotando el hecho de que dentro de un álgebra combinatoria M, con A(x, ) dentro del conjunto de términos, entonces:
Luego requerimos que b tenga una dependencia que dé como resultado:
B( ) se vuelve equivalente a un término λ y, por lo tanto, se define adecuadamente de la siguiente manera: B( λ*.
Ahora se puede definir una pre-λ-álgebra (pλA).
Antes de definir el λ-álgebra completa debemos introducir la siguiente definición para el conjunto de λ-términos dentro de W denotado con los siguientes requisitos:
Luego, se puede diseñar un mapeo de los términos dentro de todos los términos λ dentro de W, denotado * : , de la siguiente manera:
Ahora definimos λ (M) para denotar la extensión después de evaluar los términos dentro de .
Finalmente obtenemos el λ-álgebra completa a través de la siguiente definición:
Aunque arduo, se han sentado las bases para un marco algebraico adecuado para el cual el cálculo λ, y por lo tanto la computación, pueden investigarse de una manera teórica de grupos .