É inspirado em eventos reais, mas a maneira como é declarada é quase irreconhecível e "deve ser encarada com desconfiança" não faz sentido.
A consistência tem um significado preciso na lógica: uma teoria consistente é aquela em que nem todas as afirmações podem ser provadas. Na lógica clássica, isto é equivalente à ausência de uma contradição, teoria ou seja, um é inconsistente se e somente se há uma declaraçãotal que a teoria prova ambose sua negação.A ¬ AAA¬A
Então, o que isso significa em relação ao cálculo lambda? Nada. O cálculo lambda é um sistema de reescrita, não uma teoria lógica.
É possível visualizar o cálculo lambda em relação à lógica. Considere as variáveis como representando uma hipótese em uma prova, as abstrações lambda como provas sob uma determinada hipótese (representada pela variável) e a aplicação como reunindo uma prova condicional e uma prova da hipótese. Então a regra beta corresponde à simplificação de uma prova aplicando o modus ponens , um princípio fundamental da lógica.
Isso, no entanto, só funciona se a prova condicional for combinada com uma prova da hipótese correta. Se você tem uma prova condicional que assume e também tem uma prova de , não pode combiná-las. Se você deseja que essa interpretação do cálculo lambda funcione, é necessário adicionar uma restrição para que apenas as provas da hipótese adequada sejam aplicadas a provas condicionais. Isso é chamado de sistema de tipos e a restrição é a regra de digitação que diz que, quando você passa um argumento para uma função, o tipo do argumento deve corresponder ao tipo de parâmetro da função.n=3n=2
A correspondência de Curry-Howard é um paralelo entre cálculos digitados e sistemas de prova.
- tipos correspondem a declarações lógicas;
- termos correspondem a provas;
- tipos habitados (ou seja, tipos que exijam um termo desse tipo) correspondem a afirmações verdadeiras (ou seja, afirmações de que existe uma prova dessa afirmação);
- a avaliação do programa (ou seja, regras como beta) corresponde a transformações de provas (que melhor transformavam as provas corretas em provas corretas).
Um cálculo digitado que possui um combinador de pontos fixos como permite construir um termo de qualquer tipo (tente avaliar ); portanto, se você interpretar a lógica através da correspondência de Curry-Howard, obterá uma teoria inconsistente. Consulte O combinador Y contradiz a correspondência de Curry-Howard? para mais detalhes.YY(λx.x)
Isso não é significativo para o cálculo lambda puro, ou seja, para o cálculo lambda sem tipos.
Em muitos cálculos digitados, é impossível definir um combinador de ponto fixo. Esses cálculos digitados são úteis em relação à sua interpretação lógica, mas não como base para uma linguagem de programação completa de Turing. Em alguns cálculos digitados, é possível definir um combinador de ponto fixo. Esses cálculos digitados são úteis como base para uma linguagem de programação completa de Turing, mas não com relação à sua interpretação lógica.
Em conclusão:
- O cálculo lambda não é "inconsistente", esse conceito não se aplica.
- Um cálculo lambda digitado que atribui um tipo a cada termo lambda é inconsistente. Alguns cálculos lambda digitados são assim, outros tornam alguns termos não tipáveis e são consistentes.
- Os cálculos lambda digitados não são a única razão de ser para o cálculo lambda, e mesmo cálculos lambda digitados inconsistentes são ferramentas muito úteis - apenas para não provar as coisas.