Classificação dos cálculos lambda digitados / não tipados

18

Alguém pode explicar brevemente (se isso for possível!) Ou me referir a uma referência, resumindo as diferenças entre o cálculo lambda não digitado e o cálculo lambda digitado mais comum?

Estou particularmente procurando declarações de seu poder expressivo, equivalências a sistemas lógicos / aritméticos ou métodos de computação e analogias com linguagens de programação, se aplicável.

Embora eu certamente pretenda ler, algo como uma tabela de referência descrevendo os cálculos e suas equivalências / diferenças / lugar na hierarquia seria uma enorme referência para me ajudar a resolvê-los.

Não dizendo que o abaixo está correto, apenas tentando esboçar algumas das impressões que tenho para ver se elas pelo menos servem como ponto de partida (ou algo para corrigir!)

Cálculo lambda não tipado - eq. à lógica de primeira ordem - não é possível fazer X

Cálculo lambda simplesmente digitado - eq para ... lógica, relacionada ao Lisp?

Lambda 'polimórfico' calc - etc.

Cálculo de Construções - lógica intucionista?

Lógica Combinatória - comparável a ??? cálculo lambda digitado, relacionado ao tipo de linguagem APL / J

Se isso se relacionar com o cubo lambda e seus três eixos, melhor.

Embora eu esteja familiarizado com o básico do cálculo lambda e da programação com linguagens funcionais, nunca estudei minha cabeça ou fiz conexões significativas com os sistemas de tipos envolvidos e os diferentes tipos de cálculos lambda (e talvez pi?).

Quando tento pesquisar isso, não posso deixar de me desviar, abrindo muitas abas do navegador e se ramificando em tantas direções que nunca entro em nenhuma delas com profundidade!

Não tenho certeza se o que estou pedindo é razoável, mas espero que pelo menos tenha pintado uma imagem suficiente para sugerir alguma leitura que possa explicar o que estou procurando?

jon_darkstar
fonte
1
a visualização do cubo lambda, se talvez referindo-se a ele pode ajudar com a explicação rbjones.com/rbjpub/logic/cl/tlc001.htm
jon_darkstar
3
Uma história pessoal: quando eu estava aprendendo o cálculo lambda datilografado e não tipificado, sempre me confundia o motivo pelo qual deveria me preocupar com o cálculo completo não-Turing digitado. Isso muitas vezes me fazia perder o interesse. Por outro lado, nunca me incomodei com isso ao pensar em complexidade e computação eficiente. Eventualmente, alguém conectou os dois fios para mim nesta resposta e agora eu posso entender melhor por que tanto tempo foi gasto me ensinando a digitar o cálculo lambda.
Artem Kaznatcheev
vejo que uma lo.logictag foi adicionada. provavelmente uma pergunta idiota, mas o que exatamente isso significa?
jon_darkstar
"Quando tento pesquisar isso, não posso ajudar, mas me vejo desviado, abrindo muitas abas do navegador e ramificando em tantas direções que nunca entro em nenhuma delas com profundidade!" <- Este sou eu, o tempo todo! Obrigado por perguntar o que eu estive pensando ...
agam

Respostas:

26

Sua mesa está um pouco confusa; aqui está um melhor.

  • Cálculo lambda sem tipo - sem interpretação lógica, como observa Andrej
  • Cálculo lambda de tipo simples - lógica proposicional intuicionista
  • Cálculo lambda polimórfico - lógica pura de segunda ordem (ou seja, sem quantificadores de primeira ordem)
  • Tipos dependentes - generalização da lógica de primeira ordem
  • Cálculo de construções - generalização da lógica de ordem superior

A dependência de tipo é mais geral que a quantificação de primeira ordem, pois transforma provas em objetos que você pode quantificar. Existem cálculos lambda correspondentes a FOL intuicionistas comuns, mas não são amplamente usados ​​o suficiente para ter um nome especial - as pessoas tendem a ir direto para os tipos dependentes.

Também é possível relacionar a forma sintática de um cálculo com sistemas lógicos.

  • Cálculos do combinador (por exemplo, combinadores SKI) - sistemas no estilo Hilbert
  • Forma A-normal - cálculo sequencial
  • Cálculo lambda de tipo ordinário - dedução natural
Neel Krishnaswami
fonte
fantástico! obrigado. me ajuda a perceber a motivação / distinção para estes diferentes cálculos, e certamente vai me ajudar a manter um entendimento base quando i ler mais sobre isso
jon_darkstar
Também incluiria cálculos lambda digitados sem interpretação lógica, como o PCF. Além disso, existem muitos cálculos lambda legais que correspondem a outras lógicas, como o cálculo linear lambda.
Sam Tobin-Hochstadt
@ Sam: Bom ponto. "Nenhuma interpretação lógica" é realmente muito forte, pois realmente significa "auto-referência irrestrita permitida", que combinada com a reutilização variável leva à inconsistência. Mas algumas teorias baseadas em lógica linear apóiam esquemas ingênuos de compreensão sem qualquer inconsistência.
Neel Krishnaswami
certamente, algumas maneiras de adicionar algumas coisas ao cálculo lambda sem ser inconsistente. Mas existem muitos cálculos lambda interessantes, digitados, sem interpretação lógica, exatamente no sentido do cálculo lambda não digitado.
Sam Tobin-Hochstadt
20

λλλnatλ0T

λλ

λλ

λλλUlambda : U -> (U -> U)gamma : (U -> U) -> UλUλCUU[Cop,Set]UUU

Referências:

Andrej Bauer
fonte