Eu só quero conhecer alguns exemplos das funções que podem ser calculadas pelo cálculo lambda não digitado, mas não pelo cálculo lambda digitado.
Como eu sou iniciante, alguma reiteração de informações básicas seria apreciada.
Obrigado.
Edit: pelo cálculo lambda digitado, eu pretendia conhecer o Sistema F e o cálculo lambda simplesmente digitado. Por função, quero dizer qualquer função computável de Turing.
pl.programming-languages
type-theory
lambda-calculus
computable-analysis
Timothy Zacchari
fonte
fonte
Respostas:
Um bom exemplo é dado por Godelization: no cálculo lambda, a única coisa que você pode fazer com uma função é aplicá-lo. Como resultado, não há como escrever uma função fechada do tipo , que recebe um argumento de função e retorna um código Godel para ele.(N→N)→N
Acrescentar isso como um axioma à aritmética de Heyting é geralmente chamado "a tese construtiva da Igreja" e é um axioma fortemente anti-clássico. Ou seja, é consistente adicioná-lo ao HA, mas não ao aritmético Peano! (Basicamente, é um fato clássico que todas as máquinas de Turing param ou não, e não há função computável que possa testemunhar esse fato.)
fonte
A resposta mais simples é dada pelo fato de que os cálculos lambda digitados correspondem a lógicas (simplesmente cálculo lambda digitado -> lógica de predicados; sistema f -> lógica de segunda ordem) e lógicas consistentes não podem provar sua própria consistência.
Então, digamos que você tenha números naturais (ou uma codificação da Igreja de números naturais) em seu cálculo lambda digitado. É possível fazer uma numeração em Gödel que atribua todos os termos do Sistema F a um número natural único. Então, existe uma função que leva qualquer número natural (que corresponde a um termo bem digitado no Sistema F) a outro número natural (que corresponde à forma normal desse termo do Sistema F bem digitado) e faz outra coisa para qualquer número natural que não corresponda a um termo bem digitado no Sistema F (por exemplo, ele retorna zero). A função f é computável; portanto, pode ser calculada pelo cálculo lambda não digitado, mas não pelo cálculo lambda digitado (porque o último seria uma prova da consistência da lógica de segunda ordem emf f lógica de segunda ordem, o que implicaria que a lógica de segunda ordem é inconsistente).
Advertência 1: Se a lógica de segunda ordem for inconsistente, pode ser possível escrever no Sistema F ... e / ou talvez não seja possível escrever f no cálculo lambda sem tipo - você pode escrever algo, mas pode não ser sempre termine, que é um critério para "computável".f f
Advertência 2: Às vezes, por "cálculo lambda simplesmente digitado", as pessoas querem dizer "cálculo lambda simplesmente digitado com um operador de ponto fixo ou funções recursivas". Isso seria mais ou menos PCF , que pode computar qualquer função computável, assim como o cálculo lambda não digitado.
fonte
O cálcio não tipado possui recursão geral na forma do combinador Y. O λ -cálculo simplesmente digitado não. Assim, qualquer função que exija recursão geral é candidata, por exemplo, a função Ackermann. (Estou pulando alguns detalhes de como representamos com precisão os números naturais em cada sistema, mas essencialmente qualquer abordagem razoável o fará.)λ Y λ
Claro, você sempre pode estender o cálcio simples para combinar com o poder de Y , mas depois está mudando as regras do jogo.λ Y
fonte
fonte
Uma visão dos limites de cálculos fortemente normalizados de que gosto é o ângulo de computabilidade. Em um cálculo tipificado fortemente normalizado, como o cálculo lambda de núcleo simplesmente digitado, Sistema F ou Cálculo de construções, você tem uma prova de que todos os termos terminam eventualmente.
Se essa prova for construtiva, você obtém um algoritmo fixo para avaliar todos os termos com um limite superior garantido no tempo de computação. Ou você também pode estudar a prova (não necessariamente construtiva) e extrair dela um limite superior - o que provavelmente será enorme , porque esses cálculos são expressivos.
Esse limite fornece exemplos "naturais" de funções que não podem ser digitadas neste cálculo lambda fixo: todas as funções aritméticas que são assintoticamente superiores a esse limite.
Se bem me lembro, termos digitados no lambda-cálculo simplesmente tipado pode ser avaliada em torres de exponencial:
O(2^(2^(...(2^n)..)
; uma função que cresce mais rapidamente do que todas essas torres não será expressável neste cálculo. O sistema F corresponde à lógica intuicionista de segunda ordem, portanto o poder da computabilidade é simplesmente enorme. Para aproveitar a força da computabilidade de teorias ainda mais poderosas, geralmente raciocinamos em termos da teoria dos conjuntos e da teoria dos modelos (por exemplo, quais ordinais podem ser construídos) em vez da teoria da computabilidade.fonte
fonte
A
como esseA \ident A \rightarrow A
não é estranho? Parece um absurdo para mim, o que estou negligenciando?