¿Por qué fue tan crucial el trabajo de Schönfinkel para eliminar las "variables ligadas" en la lógica?


15

AFAIK, La primera evidencia del uso de funciones de orden superior se remonta al artículo de Schönfinkel de 1924: "Sobre los bloques de construcción de la lógica matemática", donde permitió pasar funciones como argumentos a otras funciones.

Eso parece interesante Sin embargo, todo lo que he estado leyendo sobre su trabajo (y el de Curry por extensión) parece aludir a una cosa de una forma u otra: [funciones de orden superior] ... esto elimina la necesidad de variables ligadas ...

Lo que no he podido entender es: ¿cuál es el problema? ¿Por qué los lógicos y matemáticos de esa época se preocuparon por esto? ¿Y nosotros, como teóricos, nos preocupamos por esto hoy? ¿Por qué fue "innovador" deshacerse de las variables ligadas y qué impacto tuvo (o tiene) en la informática (teóricamente) tal como la conocemos?

PD: Soy consciente de cómo su trabajo allanó el camino para -calculus y el impacto de "it" en la informática y la programación funcional en general. Mi pregunta se dirige principalmente al tiempo "anterior" a la creación de -calculus y "después" del trabajo de Schönfinkel. El hecho de que el Curry recogiera independientemente esa línea de trabajo, que más tarde se conoció como "lógica combinatoria", también alude a la importancia del trabajo de Schönfinkel.λλλ


2
El artículo de Schönfinkel se puede encontrar aquí .
Martin Berger

Respuestas:


17

TL; DR. Las metamatemáticas de la unión son sutiles : parecen triviales, pero no lo son, ya sea que se trate de lógicas (de orden superior) o cálculo 𝜆. Son tan sutiles que las representaciones vinculantes forman un campo de investigación abierto, con una competencia ( el desafío POPLmark ) hace algunos años. Incluso hay bromas de personas en el campo sobre la complejidad de los enfoques de enlace.

Entonces, si te interesan las metamatemáticas (y la mayoría de los matemáticos no), debes lidiar con el enlace. Pero muchos matemáticos pueden tratar con seguridad la formalización de la vinculación como si fuera un problema "fundamental".

Otro punto es que el enlace era el único problema "nuevo" en los idiomas con funciones de orden superior, porque la teoría de los idiomas con enlace es solo álgebra (para constantes) + enlace. "Fundamentos de los lenguajes de programación" de Mitchell en realidad presenta las cosas en este orden y es bastante esclarecedor.

Soy consciente de cómo su trabajo allanó el camino para el cálculo de λ y el impacto de "eso" en la informática y la programación funcional en general. Mi pregunta se dirige principalmente al tiempo "anterior" a la creación del cálculo λ y "después" del trabajo de Schönfinkel.

Debo estar perdiendo algo, pero esta observación parece no hacer ninguna diferencia. La unión en lógicas de orden superior y la unión en cálculo λ parecen tan difíciles, por lo que mientras las personas se preocuparan por las lógicas de orden superior, tenían que lidiar con la unión. Estoy sesgado al usar demostradores de teoremas basados ​​en el isomorfismo de Curry-Howard que implementan la lógica simplemente implementando una teoría de tipos (donde los tipos son fórmulas y los programas son términos de prueba), por lo que solo trato con el enlace una vez.

Por otro lado, el IIRC, en ese momento, a pocos les importaba el trabajo de Schönfinkel, en parte debido a cómo él (no) lo publicó, los documentos fueron escritos principalmente por colegas basados ​​en la investigación que hizo (ver aquí , página 4) ; Curry redescubrió la teoría de forma independiente.

Advertencia: no soy historiador, sino estudiante de doctorado en PL, por lo que el mío es una perspectiva moderna (y con suerte precisa) sobre el tema.

EDITAR:

¿Por qué es vinculante sutil, un poco más concreto

Hay dos facetas: primero, implementarlo es difícil. En segundo lugar, la metamatemática es la matemática de la manipulación de pruebas: esta manipulación es típicamente automática, es decir, es un algoritmo , por lo que esencialmente enfrenta todas las dificultades de implementación, además de hacer pruebas sobre ellas. A continuación doy ejemplos. Los ejemplos tienen una perspectiva moderna: se trata de pruebas realmente formalizadas. Sin embargo, algunas de las dificultades se extenderían a pruebas manuales precisas, siempre que no engañe a los detalles.

Esto muestra que Schönfinkel simplemente dio la primera solución a este problema, pero esto estaba lejos de ser definitivo.

Implementarlo es sutil debido al sombreado

(λF.F 1+F 2)(λX.X)( λ f x . f ( f x ) ) ( λ g y . g y ) z ( λ g y . g y ) ( λ g y . g y ) z ( λ y . ( λ g y .(λX.X) 1+(λX.X) 2(λFX.F(FX)) (λsoly.sol y) z(λsoly.sol y) (λsoly.sol y) z(λy.(λsoly.sol y) y)  z: ahora necesitas lidiar con el sombreado. Puede evitar esto, a costa de complicar la regla de reducción beta.

Una vez que tenga diferentes variables con el mismo nombre, también debe evitar la captura. El ejemplo más simple de captura es que aplica la función (devolver el primer argumento) a no debe dar (la función de identidad), pero (una función constante).λXy.Xyλy.yλy.y

Lo peor es que los contraejemplos de algoritmos ingenuos son difíciles de construir cuando ya conoce el problema, y ​​mucho menos cuando no lo sabe. Los errores en algoritmos casi correctos a menudo permanecen sin ser detectados durante años. Escuché que incluso los buenos estudiantes generalmente no logran (por sí solos) la definición correcta de sustitución para evitar la captura. De hecho, los estudiantes de doctorado (yo incluido) y los profesores no están exentos de este problema.

Esa es una de las razones por las cuales algunos (incluido uno de los mejores libros de texto sobre lenguajes de programación, Tipos y lenguajes de programación de Benjamin Pierce) recomiendan una representación sin nombre (no es una lógica combinatoria, aunque se haya utilizado, sino índices deBrujin).

Las pruebas al respecto son sutiles

Resulta que las pruebas sobre el enlace no son más simples que la implementación, como se mencionó anteriormente. Por supuesto, existen algoritmos correctos y existen pruebas sobre ellos, pero sin maquinaria avanzada, para cada idioma que use encuadernación, debe repetir las pruebas, y esas pruebas son simplemente muy grandes y molestas si usa las definiciones de encuadernación en lápiz y papel .

Para ejemplificar algoritmos involucrados en metamatemáticas, tenga en cuenta el teorema de deducción en lógicas, que permite componer una prueba de suponiendo y una prueba de para obtener una prueba de . Para demostrar que el teorema, que presentan en la actualidad un algoritmo que funciona en la sintaxis de las dos pruebas involucrados y produce la sintaxis de una prueba de . Este algoritmo necesita lidiar con el enlace.siUNUNsisi

Luego, busqué mi mejor ejemplo de "qué sale mal si intentas formalizar la definición estándar". Russell O'Connor (que está en este sitio) formalizó el primer teorema de incompletitud de Gödel en Coq (un probador de teoremas del tipo mencionado anteriormente), y ese teorema involucra una lógica (con todos los algoritmos relevantes) en otra lógica (con la sintaxis de la primera lógica codificada como números). Usó las definiciones que se usan en papel y las formalizó directamente. Busque "sustitución" o "variable" y cuente con qué frecuencia aparecen en referencia a problemas para obtener una impresión. http://r6.ca/Goedel/goedel1.html

Nunca uso esas definiciones en mi trabajo, pero cada enfoque alternativo tiene algunas desventajas.


Estoy sesgado al usar probadores de teoremas basados ​​en el isomorfismo de Curry-Howard, de modo que solo trato con el enlace una vez . ¿Podría explicar qué quiere decir?
PhD

3
Dices que es sutil, pero nunca dices qué lo hace exactamente así y ¿por qué preocuparte si eres un metamatético? Esa es la perspectiva que estoy buscando.
PhD

En su primer comentario: hice explícita la conexión con Curry-Howard, pero tendré que remitirlo a Wikipedia u otra pregunta. Estoy de acuerdo con tu segundo comentario; Elaboraré para personas que no están familiarizadas con el cálculo lambda.
Blaisorblade

@PhD: Espero que lo que agregué ayude un poco, aunque no reemplaza una buena conferencia sobre este material (y desafortunadamente, el material que he cortado generalmente se distribuye entre muchos otros materiales relacionados con PPL).
Blaisorblade

1
¡Gracias una tonelada! Eso fue realmente útil. Este enlace también puede interesarle: home.uchicago.edu/~wwtx/Varfreelogic_revised.pdf - Lógica de primer orden sin variables ligadas.
PhD
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.