En la teoría de lenguajes de programación y teoría de pruebas , la correspondencia de Curry-Howard es la relación directa entre los programas informáticos y las pruebas matemáticas . También se la conoce como isomorfismo o equivalencia de Curry-Howard , o interpretación de las pruebas como programas y de las proposiciones o fórmulas como tipos .
Se trata de una generalización de una analogía sintáctica entre sistemas de lógica formal y cálculos computacionales que fue descubierta por primera vez por el matemático estadounidense Haskell Curry y el lógico William Alvin Howard . [1] Es el vínculo entre lógica y computación el que usualmente se atribuye a Curry y Howard, aunque la idea está relacionada con la interpretación operacional de la lógica intuicionista dada en varias formulaciones por LEJ Brouwer , Arend Heyting y Andrey Kolmogorov (ver Interpretación de Brouwer–Heyting–Kolmogorov ) [2] y Stephen Kleene (ver Realizabilidad ). La relación se ha extendido para incluir la teoría de categorías como la correspondencia de tres vías Curry–Howard–Lambek . [3] [4] [5]
Los inicios de la correspondencia Curry-Howard se encuentran en varias observaciones:
La correspondencia Curry-Howard es la observación de que existe un isomorfismo entre los sistemas de demostración y los modelos de computación. Es la afirmación de que estas dos familias de formalismos pueden considerarse idénticas.
Si uno hace abstracción de las peculiaridades de cada formalismo, surge la siguiente generalización: una prueba es un programa, y la fórmula que prueba es el tipo para el programa . Más informalmente, esto puede verse como una analogía que establece que el tipo de retorno de una función (es decir, el tipo de valores devueltos por una función) es análogo a un teorema lógico, sujeto a hipótesis correspondientes a los tipos de los valores de los argumentos pasados a la función; y que el programa para calcular esa función es análogo a una prueba de ese teorema. Esto establece una forma de programación lógica sobre una base rigurosa: las pruebas pueden representarse como programas, y especialmente como términos lambda , o las pruebas pueden ejecutarse .
La correspondencia ha sido el punto de partida de un amplio espectro de nuevas investigaciones tras su descubrimiento, que han conducido en particular a una nueva clase de sistemas formales diseñados para actuar tanto como un sistema de pruebas como un lenguaje de programación funcional tipado . Esto incluye la teoría de tipos intuicionista de Martin-Löf y el Cálculo de construcciones de Coquand , dos cálculos en los que las pruebas son objetos regulares del discurso y en los que se pueden enunciar las propiedades de las pruebas de la misma manera que en el caso de cualquier programa. Este campo de investigación suele denominarse teoría de tipos moderna .
Estos cálculos lambda tipados derivados del paradigma Curry-Howard condujeron a software como Coq en el que las pruebas vistas como programas pueden formalizarse, verificarse y ejecutarse.
Una dirección inversa es utilizar un programa para extraer una prueba , dada su corrección (un área de investigación estrechamente relacionada con el código portador de pruebas) . Esto solo es factible si el lenguaje de programación para el que está escrito el programa tiene una tipificación muy rica: el desarrollo de tales sistemas de tipos ha sido motivado en parte por el deseo de hacer que la correspondencia Curry-Howard sea relevante en la práctica.
La correspondencia Curry-Howard también planteó nuevas preguntas sobre el contenido computacional de los conceptos de prueba que no estaban contempladas en los trabajos originales de Curry y Howard. En particular, se ha demostrado que la lógica clásica se corresponde con la capacidad de manipular la continuación de los programas y la simetría del cálculo secuencial para expresar la dualidad entre las dos estrategias de evaluación conocidas como llamada por nombre y llamada por valor.
Debido a la posibilidad de escribir programas no terminantes, los modelos de computación Turing-completos (como lenguajes con funciones recursivas arbitrarias ) deben interpretarse con cuidado, ya que la aplicación ingenua de la correspondencia conduce a una lógica inconsistente. La mejor manera de tratar la computación arbitraria desde un punto de vista lógico es todavía una cuestión de investigación debatida activamente, pero un enfoque popular se basa en el uso de mónadas para segregar el código demostrablemente terminante del código potencialmente no terminante (un enfoque que también se generaliza a modelos de computación mucho más ricos, [9] y está relacionado con la lógica modal por una extensión natural del isomorfismo de Curry-Howard [ext 1] ). Un enfoque más radical, defendido por la programación funcional total , es eliminar la recursión sin restricciones (y renunciar a la completitud de Turing , aunque aún se conserva una alta complejidad computacional), utilizando una correcursión más controlada donde sea que realmente se desee un comportamiento no terminante.
En su formulación más general, la correspondencia Curry-Howard es una correspondencia entre cálculos de prueba formales y sistemas de tipos para modelos de computación . En particular, se divide en dos correspondencias: una a nivel de fórmulas y tipos que es independiente de qué sistema de prueba o modelo de computación en particular se considera, y otra a nivel de pruebas y programas que, esta vez, es específica de la elección particular del sistema de prueba y modelo de computación considerados.
A nivel de fórmulas y tipos, la correspondencia dice que la implicación se comporta igual que un tipo de función, la conjunción como un tipo "producto" (esto puede llamarse una tupla, una estructura, una lista o algún otro término dependiendo del lenguaje), la disyunción como un tipo de suma (este tipo puede llamarse una unión), la fórmula falsa como el tipo vacío y la fórmula verdadera como el tipo de unidad (cuyo único miembro es el objeto nulo). Los cuantificadores corresponden al espacio de funciones dependientes o productos (según corresponda). Esto se resume en la siguiente tabla:
A nivel de sistemas de prueba y modelos de cálculos, la correspondencia muestra principalmente la identidad de estructura, en primer lugar, entre algunas formulaciones particulares de sistemas conocidos como sistema de deducción de estilo Hilbert y lógica combinatoria , y, en segundo lugar, entre algunas formulaciones particulares de sistemas conocidos como deducción natural y cálculo lambda .
Entre el sistema de deducción natural y el cálculo lambda existen las siguientes correspondencias:
Al principio, se trataba de una simple observación en el libro de Curry y Feys de 1958 sobre lógica combinatoria: los tipos más simples de los combinadores básicos K y S de la lógica combinatoria sorprendentemente correspondían a los respectivos esquemas axiomáticos α → ( β → α ) y ( α → ( β → γ )) → (( α → β ) → ( α → γ )) utilizados en los sistemas de deducción de estilo Hilbert . Por esta razón, estos esquemas se denominan ahora axiomas K y S. A continuación se ofrecen ejemplos de programas considerados como pruebas en una lógica de estilo Hilbert.
Si nos limitamos al fragmento intuicionista implicacional, una manera sencilla de formalizar la lógica al estilo de Hilbert es la siguiente. Sea Γ una colección finita de fórmulas, consideradas como hipótesis. Entonces δ es derivable de Γ, denotado Γ ⊢ δ, en los siguientes casos:
Esto se puede formalizar utilizando reglas de inferencia , como en la columna izquierda de la siguiente tabla.
La lógica combinatoria tipificada se puede formular utilizando una sintaxis similar: sea Γ una colección finita de variables, anotadas con sus tipos. Un término T (también anotado con su tipo) dependerá de estas variables [Γ ⊢ T: δ ] cuando:
Las reglas de generación definidas aquí se dan en la columna de la derecha a continuación. La observación de Curry simplemente establece que ambas columnas están en correspondencia uno a uno. La restricción de la correspondencia a la lógica intuicionista significa que algunas tautologías clásicas , como la ley de Peirce (( α → β ) → α ) → α , están excluidas de la correspondencia.
Vista a un nivel más abstracto, la correspondencia puede replantearse como se muestra en la siguiente tabla. En particular, el teorema de deducción específico de la lógica de estilo Hilbert coincide con el proceso de eliminación de abstracciones de la lógica combinatoria.
Gracias a la correspondencia, los resultados de la lógica combinatoria pueden transferirse a la lógica de estilo Hilbert y viceversa. Por ejemplo, la noción de reducción de términos en la lógica combinatoria puede transferirse a la lógica de estilo Hilbert y proporciona una manera de transformar canónicamente las demostraciones en otras demostraciones del mismo enunciado. También se puede transferir la noción de términos normales a una noción de demostraciones normales, expresando que las hipótesis de los axiomas nunca necesitan estar todas separadas (ya que de lo contrario puede ocurrir una simplificación).
Por el contrario, la no demostrabilidad en la lógica intuicionista de la ley de Peirce se puede transferir de nuevo a la lógica combinatoria: no hay ningún término tipificado de la lógica combinatoria que sea tipificable con el tipo
Los resultados sobre la completitud de algunos conjuntos de combinadores o axiomas también pueden transferirse. Por ejemplo, el hecho de que el combinador X constituya una base de un punto de la lógica combinatoria (extensional) implica que el esquema de axioma único
que es el tipo principal de X , es un reemplazo adecuado a la combinación de los esquemas axiomáticos
Después de que Curry enfatizara la correspondencia sintáctica entre la deducción intuicionista al estilo de Hilbert y la lógica combinatoria tipificada , Howard hizo explícita en 1969 una analogía sintáctica entre los programas de cálculo lambda simplemente tipificado y las pruebas de deducción natural . A continuación, el lado izquierdo formaliza la deducción natural implicacional intuicionista como un cálculo de secuentes (el uso de secuentes es estándar en las discusiones del isomorfismo Curry-Howard ya que permite que las reglas de deducción se establezcan de manera más clara) con debilitamiento implícito y el lado derecho muestra las reglas de tipificación del cálculo lambda . En el lado izquierdo, Γ, Γ 1 y Γ 2 denotan secuencias ordenadas de fórmulas, mientras que en el lado derecho, denotan secuencias de fórmulas nombradas (es decir, tipificadas) con todos los nombres diferentes.
Parafraseando la correspondencia, probar Γ ⊢ α significa tener un programa que, dados valores con los tipos listados en Γ, fabrica un objeto de tipo α . Un axioma/hipótesis corresponde a la introducción de una nueva variable con un nuevo tipo sin restricciones, la regla → I corresponde a la abstracción de la función y la regla → E corresponde a la aplicación de la función. Obsérvese que la correspondencia no es exacta si el contexto Γ se toma como un conjunto de fórmulas como, por ejemplo, los λ-términos λ x . λ y . x y λ x . λ y . y del tipo α → α → α no se distinguirían en la correspondencia. A continuación se dan ejemplos.
Howard demostró que la correspondencia se extiende a otros conectores de la lógica y otras construcciones del cálculo lambda de tipos simples. Vista a un nivel abstracto, la correspondencia puede entonces resumirse como se muestra en la siguiente tabla. En particular, también muestra que la noción de formas normales en el cálculo lambda coincide con la noción de Prawitz de deducción normal en la deducción natural , de lo que se deduce que los algoritmos para el problema de habitabilidad de tipos pueden convertirse en algoritmos para decidir la demostrabilidad intuicionista .
La correspondencia de Howard se extiende naturalmente a otras extensiones de la deducción natural y del cálculo lambda de tipos simples . A continuación se ofrece una lista no exhaustiva:
En la época de Curry, y también en la de Howard, la correspondencia de las pruebas como programas sólo concernía a la lógica intuicionista , es decir, una lógica en la que, en particular, la ley de Peirce no era deducible. La extensión de la correspondencia a la ley de Peirce y, por lo tanto, a la lógica clásica se hizo evidente a partir del trabajo de Griffin sobre los operadores de tipificación que capturan el contexto de evaluación de una ejecución de programa dada, de modo que este contexto de evaluación pueda reinstalarse más tarde. A continuación se muestra la correspondencia básica de estilo Curry-Howard para la lógica clásica. Nótese la correspondencia entre la traducción de doble negación utilizada para mapear las pruebas clásicas a la lógica intuicionista y la traducción de estilo de paso de continuación utilizada para mapear los términos lambda que involucran control a términos lambda puros. Más particularmente, las traducciones de estilo de paso de continuación de llamada por nombre se relacionan con la traducción de doble negación de Kolmogorov y las traducciones de estilo de paso de continuación de llamada por valor se relacionan con un tipo de traducción de doble negación debido a Kuroda.
Existe una correspondencia Curry-Howard más fina para la lógica clásica si se define la lógica clásica no añadiendo un axioma como la ley de Peirce , sino permitiendo varias conclusiones en secuencias. En el caso de la deducción natural clásica, existe una correspondencia de pruebas como programas con los programas tipificados del cálculo λμ de Parigot .
Se puede establecer una correspondencia de pruebas como programas para el formalismo conocido como cálculo secuencial de Gentzen , pero no es una correspondencia con un modelo de computación preexistente bien definido como lo fue para las deducciones naturales y de estilo Hilbert.
El cálculo secuencial se caracteriza por la presencia de reglas de introducción por la izquierda, reglas de introducción por la derecha y una regla de corte que puede eliminarse. La estructura del cálculo secuencial se relaciona con un cálculo cuya estructura es cercana a la de algunas máquinas abstractas . La correspondencia informal es la siguiente:
NG de Bruijn utilizó la notación lambda para representar las pruebas del verificador de teoremas Automath y representó las proposiciones como "categorías" de sus pruebas. Fue a fines de la década de 1960, en el mismo período en que Howard escribió su manuscrito; de Bruijn probablemente desconocía el trabajo de Howard y enunció la correspondencia de forma independiente (Sørensen & Urzyczyn [1998] 2006, pp 98-99). Algunos investigadores tienden a utilizar el término correspondencia Curry-Howard-de Bruijn en lugar de correspondencia Curry-Howard.
La interpretación de BHK interpreta las demostraciones intuicionistas como funciones, pero no especifica la clase de funciones relevantes para la interpretación. Si se toma el cálculo lambda para esta clase de funciones, entonces la interpretación de BHK dice lo mismo que la correspondencia de Howard entre la deducción natural y el cálculo lambda.
La realizabilidad recursiva de Kleene divide las pruebas de la aritmética intuicionista en el par de una función recursiva y de una prueba de una fórmula que expresa que la función recursiva "realiza", es decir, instancia correctamente las disyunciones y los cuantificadores existenciales de la fórmula inicial de modo que la fórmula se vuelve verdadera.
La realizabilidad modificada de Kreisel se aplica a la lógica de predicados intuicionista de orden superior y muestra que el término lambda simplemente tipificado extraído inductivamente de la prueba realiza la fórmula inicial. En el caso de la lógica proposicional, coincide con la afirmación de Howard: el término lambda extraído es la prueba misma (vista como un término lambda no tipificado) y la afirmación de realizabilidad es una paráfrasis del hecho de que el término lambda extraído tiene el tipo que la fórmula significa (vista como un tipo).
La interpretación dialéctica de Gödel realiza una (extensión de) aritmética intuicionista con funciones computables. La conexión con el cálculo lambda no está clara, ni siquiera en el caso de la deducción natural.
Joachim Lambek demostró a principios de los años 1970 que las pruebas de la lógica proposicional intuicionista y los combinadores de la lógica combinatoria tipificada comparten una teoría ecuacional común, la teoría de las categorías cartesianas cerradas . La expresión correspondencia Curry-Howard-Lambek es utilizada ahora por algunas personas [¿ por quién? ] para referirse a las relaciones entre la lógica intuicionista, el cálculo lambda tipificado y las categorías cartesianas cerradas. Bajo esta correspondencia, los objetos de una categoría cartesiana cerrada pueden interpretarse como proposiciones (tipos), y los morfismos como deducciones que asignan un conjunto de suposiciones ( contexto de tipificación ) a un consecuente válido (término bien tipificado). [12]
La correspondencia de Lambek es una correspondencia de teorías ecuacionales, que se abstrae de dinámicas de computación como la reducción beta y la normalización de términos, y no es la expresión de una identidad sintáctica de estructuras como es el caso de cada una de las correspondencias de Curry y Howard: es decir, la estructura de un morfismo bien definido en una categoría cartesiana cerrada no es comparable a la estructura de una prueba del juicio correspondiente en la lógica de estilo Hilbert o en la deducción natural. Por ejemplo, no es posible afirmar o probar que un morfismo es normalizador, establecer un teorema de tipo Church-Rosser o hablar de una categoría cartesiana cerrada "fuertemente normalizadora". Para aclarar esta distinción, la estructura sintáctica subyacente de las categorías cartesianas cerradas se reformula a continuación.
Los objetos (proposiciones/tipos) incluyen
Los morfismos (deducciones/términos) incluyen
De manera equivalente a las anotaciones anteriores, se pueden construir morfismos bien definidos (términos tipificados) en cualquier categoría cartesiana cerrada según las siguientes reglas de tipificación . La notación de morfismos categóricos habitual se reemplaza por la notación de contexto de tipificación .
Identidad:
Composición:
Tipo de unidad ( objeto terminal ):
Producto cartesiano:
Proyección izquierda y derecha:
Curry :
Finalmente, las ecuaciones de la categoría son
Estas ecuaciones implican las siguientes leyes:
Ahora bien, existe t tal que si y solo si es demostrable en la lógica intuicionista implicacional.
Gracias a la correspondencia Curry-Howard, una expresión tipificada cuyo tipo corresponde a una fórmula lógica es análoga a una demostración de esa fórmula. A continuación se ofrecen algunos ejemplos.
Como ejemplo, considere una prueba del teorema α → α . En cálculo lambda , este es el tipo de la función identidad I = λ x . x y en lógica combinatoria, la función identidad se obtiene aplicando S = λ fgx . fx ( gx ) dos veces a K = λ xy . x . Es decir, I = (( S K ) K ) . Como descripción de una prueba, esto dice que se pueden usar los siguientes pasos para demostrar α → α :
En general, el procedimiento es que siempre que el programa contenga una aplicación de la forma ( P Q ), se deben seguir estos pasos:
Como ejemplo más complicado, veamos el teorema que corresponde a la función B. El tipo de B es ( β → α ) → ( γ → β ) → γ → α . B es equivalente a ( S ( K S ) K ). Esta es nuestra hoja de ruta para la demostración del teorema ( β → α ) → ( γ → β ) → γ → α .
El primer paso es construir ( K S ). Para que el antecedente del axioma K se parezca al axioma S , iguale α a ( α → β → γ ) → ( α → β ) → α → γ , y β a δ (para evitar colisiones entre variables):
Dado que el antecedente aquí es simplemente S , el consecuente se puede separar utilizando Modus Ponens:
Este es el teorema que corresponde al tipo de ( K S ). Ahora apliquemos S a esta expresión. Tomando S como sigue
ponga α = δ , β = α → β → γ , y γ = ( α → β ) → α → γ , dando como resultado
y luego separar el consecuente:
Esta es la fórmula para el tipo de ( S ( K S )). Un caso especial de este teorema tiene δ = ( β → γ ) :
Esta última fórmula debe aplicarse a K. Especialice K nuevamente, esta vez reemplazando α con ( β → γ ) y β con α :
Esto es lo mismo que el antecedente de la fórmula anterior, por lo que, separando el consecuente:
Cambiando los nombres de las variables α y γ obtenemos
que era lo que quedaba por demostrar.
El siguiente diagrama demuestra que ( β → α ) → ( γ → β ) → γ → α en deducción natural y muestra cómo se puede interpretar como la expresión λ λ a .λ b .λ g .( a ( b g )) de tipo ( β → α ) → ( γ → β ) → γ → α .
a:β → α, b:γ → β, g:γ ⊢ b : γ → β a:β → α, b:γ → β, g:γ ⊢ g : γ——————————————————————————————————— ———————————————— ———————————————————————————————————————————————————— ———a:β → α, b:γ → β, g:γ ⊢ a : β → α a:β → α, b:γ → β, g:γ ⊢ bg : β———————————————————————————————————————————————————— —————————————————————— a:β → α, b:γ → β, g:γ ⊢ a (bg) : α ————————————————————————————————————— a:β → α, b:γ → β ⊢ λ gramo. a (bg) : γ → α ———————————————————————————————————————— a:β → α ⊢ λ b. λg. a (bg) : (γ → β) → γ → α ————————————————————————————————————— ⊢ λa. λb. λg. a (bg) : (β → α) → (γ → β) → γ → α
Recientemente, se ha propuesto el isomorfismo como una forma de definir la partición del espacio de búsqueda en la programación genética . [13] El método indexa conjuntos de genotipos (los árboles de programa desarrollados por el sistema GP) por su prueba isomórfica de Curry-Howard (a la que se hace referencia como especie).
Como señala el director de investigación del INRIA , Bernard Lang [14] , la correspondencia Curry-Howard constituye un argumento contra la patentabilidad del software: dado que los algoritmos son pruebas matemáticas, la patentabilidad de los primeros implicaría la patentabilidad de los segundos. Un teorema podría ser propiedad privada; un matemático tendría que pagar por usarlo y confiar en la empresa que lo vende, pero mantiene en secreto sus pruebas y rechaza la responsabilidad por cualquier error.
Las correspondencias que se enumeran aquí van mucho más allá y son más profundas. Por ejemplo, las categorías cerradas cartesianas se generalizan mediante categorías monoidales cerradas . El lenguaje interno de estas categorías es el sistema de tipos lineales (que corresponde a la lógica lineal ), que generaliza el cálculo lambda de tipos simples como el lenguaje interno de las categorías cerradas cartesianas. Además, se puede demostrar que estas corresponden a cobordismos [15] , que desempeñan un papel vital en la teoría de cuerdas .
También se explora un conjunto extendido de equivalencias en la teoría de tipos de homotopía . Aquí, la teoría de tipos se extiende mediante el axioma de univalencia ("equivalencia es equivalente a igualdad") que permite que la teoría de tipos de homotopía se use como base para todas las matemáticas (incluida la teoría de conjuntos y la lógica clásica, proporcionando nuevas formas de discutir el axioma de elección y muchas otras cosas). Es decir, la correspondencia de Curry-Howard de que las pruebas son elementos de tipos habitados se generaliza a la noción de equivalencia homotópica de pruebas (como caminos en el espacio, el tipo identidad o el tipo igualdad de la teoría de tipos se interpreta como un camino). [16]
{{cite book}}
: CS1 maint: postscript (link)