Por que o trabalho de Schönfinkel na eliminação de "variáveis ​​vinculadas" na lógica foi tão crucial?


15

AFAIK, A primeira evidência do uso de funções de ordem superior remonta ao artigo de Schönfinkel de 1924: "Sobre os blocos de construção da lógica matemática" - onde ele permitiu passar funções como argumentos para outras funções.

Isso parece interessante. No entanto, tudo o que tenho lido sobre o trabalho dele (e o de Curry por extensão) parece aludir a uma coisa de uma forma ou de outra: [funções de ordem superior] ... isso elimina a necessidade de variáveis ​​ligadas ...

O que eu não consegui entender é: qual é o problema? Por que lógicos e matemáticos da época se preocupavam com isso? E nós, como teóricos, nos preocupamos com isso hoje? Por que foi "inovador" livrar-se de variáveis ​​vinculadas e qual impacto teve (ou tem) na computação (teoricamente) como a conhecemos?

PS: Estou ciente de como o trabalho dele abriu caminho para o calcculus e o impacto do "it" na computação e na programação funcional em geral. Minha pergunta é principalmente direcionada ao tempo "anterior" à criação do λ- cálcio e "depois" do artigo de Schönfinkel. O fato de o Curry ter escolhido de maneira independente essa linha de trabalho, que mais tarde foi conhecida como "lógica combinatória", também alude à importância do trabalho de Schönfinkel.λλ


2
O artigo de Schönfinkel pode ser encontrado aqui .
Martin Berger

Respostas:


17

TL; DR. A metamatemática da ligação é sutil : parece trivial, mas não é - se você lida com lógicas (de ordem superior) ou com cálculo 𝜆. Eles são tão sutis que as representações vinculativas formam um campo de pesquisa aberto, com uma competição ( o desafio POPLmark ) há alguns anos atrás. Há até piadas de pessoas no campo sobre a complexidade das abordagens à vinculação.

Portanto, se você se preocupa com a metamatemática (e a maioria dos matemáticos não), precisa lidar com a ligação. Mas muitos matemáticos podem tratar com segurança a formalização da ligação como se fosse um problema "fundamental".

Outro ponto é que a encadernação era o único "novo" problema em linguagens com funções de ordem superior, porque a teoria das linguagens com encadernação é apenas álgebra (para constantes) + encadernação. "Fundamentos de linguagens de programação", de Mitchell, na verdade apresenta as coisas nessa ordem e é bastante esclarecedor.

Estou ciente de como o trabalho dele abriu caminho para o cálculo λ e o impacto do "it" na computação e na programação funcional em geral. Minha pergunta é principalmente dirigida ao tempo "anterior" à criação do cálculo λ e "depois" do artigo de Schönfinkel.

Devo estar faltando alguma coisa, mas esse comentário parece não fazer diferença. A encadernação em lógicas de ordem superior e a encadernação no cálculo λ parecem tão difíceis, enquanto as pessoas se preocupam com lógicas de ordem superior, elas precisam lidar com a encadernação. Sou tendencioso usando provadores de teoremas baseados no isomorfismo de Curry-Howard que implementam a lógica simplesmente implementando uma teoria de tipos (onde tipos são fórmulas e programas são termos de prova), para que eu apenas lide com a ligação uma vez.

Por outro lado, o IIRC, na época, poucos se preocupavam com o trabalho de Schönfinkel - em parte por causa de como ele (não) o publicou - os trabalhos foram escritos principalmente por colegas com base na pesquisa que ele fez (veja aqui , página 4) ; Curry redescobriu a teoria de forma independente.

Advertência: Eu não sou historiador, mas um estudante de doutorado em PL, então o meu é uma perspectiva moderna (e esperançosamente precisa) sobre o assunto.

EDITAR:

Por que a ligação é sutil, um pouco mais concreta

Existem duas facetas: primeiro, é difícil implementá-lo. Em segundo lugar, a metamatemática é a matemática da manipulação de provas: essa manipulação é tipicamente automática, ou seja, é um algoritmo - então, essencialmente, você enfrenta todas as dificuldades de implementação, além de fazer provas sobre elas. Abaixo eu dou exemplos. Os exemplos têm uma perspectiva moderna - são sobre provas realmente formalizadas. No entanto, algumas das dificuldades se estenderiam a provas manuais precisas - desde que você não trai os detalhes.

Isso mostra que Schönfinkel simplesmente deu a primeira solução para esse problema, mas isso estava longe de ser definitivo.

Implementá-lo é sutil por causa da sombra

O problema básico na implementação é sombreado. Normalmente, não se reutiliza o mesmo nome para diferentes variáveis ​​associadas. Mas você não pode evitá-lo no cálculo lambda, pelo menos porque as funções (e suas variáveis ​​ligadas) são duplicadas: reduz-se a ( λ x . X ) 1 + ( λ x . x ) 2 . Isso ainda não é um problema, mas a partir de ( λ f x .(λf.f 1+f 2)(λx.x)(λx.x) 1+(λx.x) 2 fornece ( λ g y . g y ) ( λ g y . g y ) z e depois ( λ y . ( λ g y . g y ) y ) z : agora você precisa lidar com a sombra. Você pode evitar isso, ao custo de complicar a regra de redução beta.(λfx.f(fx)) (λgy.g y) z(λgy.g y) (λgy.g y) z(λy.(λgy.g y) y)  z

λxy.xyλy.yλy.y

O pior é que os contra-exemplos de algoritmos ingênuos são difíceis de construir quando você já conhece o problema, e muito menos quando não conhece. Erros em algoritmos quase corretos geralmente permanecem sem serem detectados por anos. Ouvi dizer que mesmo bons alunos geralmente não conseguem (por conta própria) a definição correta de substituição para evitar capturas. De fato, estudantes de doutorado (inclusive eu) e professores não estão isentos desse problema.

Essa é uma das razões pelas quais alguns (incluindo um dos melhores livros didáticos sobre linguagens de programação, Tipos e linguagens de programação de Benjamin Pierce) recomendam representação sem nome (não lógica bastante combinatória, mesmo que tenha sido usada, mas sim índices deBrujin).

As provas são sutis

Acontece que as provas sobre ligação não são mais simples que a implementação, como mencionado acima. Obviamente, existem algoritmos corretos e existem provas sobre eles - mas sem maquinaria avançada, para cada idioma que usa encadernação, você precisa repetir as provas, e essas provas são simplesmente muito grandes e irritantes se você usar as definições de encadernação em caneta e papel .

BUMAUMABB

Em seguida, procurei meu melhor exemplo de "o que dá errado se você tentar formalizar a definição padrão". Russell O'Connor (que está neste site) formalizou o primeiro teorema da incompletude de Gödel em Coq (um provador de teoremas do tipo mencionado acima) - e esse teorema envolve uma lógica (com todos os algoritmos relevantes) em outra lógica (com a sintaxe de a primeira lógica codificada como números). Ele usou as definições usadas no papel e as formalizou diretamente. Procure por "substituição" ou "variável" e conte com que frequência eles aparecem em referência a problemas para obter uma impressão. http://r6.ca/Goedel/goedel1.html

Eu nunca uso essas definições no meu trabalho, mas cada abordagem alternativa tem algumas desvantagens.


Sou tendencioso usando os provadores de teoremas baseados no isomorfismo de Curry-Howard, para que apenas lide com a vinculação uma vez - Você poderia, por favor, elaborar o que quer dizer?
PhD

3
Você diz que é sutil, mas nunca diz o que exatamente faz isso e por que se importar se você é um metamathetician? Essa é a perspectiva que estou procurando.
PhD

Em seu primeiro comentário: expliquei a conexão com Curry-Howard, mas terei que encaminhá-lo à Wikipedia ou a outra pergunta. Eu concordo com o seu segundo comentário; Vou elaborar para pessoas não familiarizadas com o cálculo lambda.
Blaisorblade

@PhD: Espero que o que adicionei ajude um pouco, embora não substitua uma boa palestra sobre esse material (e, infelizmente, o material que cortei é normalmente distribuído entre muitos outros materiais relacionados ao PPL).
Blaisorblade 15/02

1
Muito obrigado! Isso foi realmente útil. Este link também pode interessar a você: home.uchicago.edu/~wwtx/Varfreelogic_revised.pdf - Lógica de primeira ordem sem variáveis ​​associadas.
PhD
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.