Funções que digitaram cálculo lambda não podem computar

12

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.

Timothy Zacchari
fonte
Existem muitas disciplinas de digitação para -calculi, e a resposta à sua solicitação depende em parte da escolha da disciplina de digitação que você tem em mente. Também depende do que você entende por função. Um exemplo de diferença seria que as disciplinas de digitação, como o Sistema F, podem digitar apenas programas normalizadores, enquanto o λ- cálcio não digitado contém termos não normalizadores. λλ
Martin Berger
Eu estava pensando no Sistema F e no cálculo lambda de tipo simples. Por função, quero dizer função turing-computable.
Timothy Zacchari

Respostas:

15

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.(NN)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.)

Neel Krishnaswami
fonte
Não entendo como isso é consistente com uma teoria extensional: considere fe extensionalmente iguais, mas com implementações diferentes e, portanto, códigos godel diferentes. Sua função retorna o mesmo número para feg?
Cody
3
Não é consistente com a extensionalidade! No entanto, em HA e são conectivos lógicos, não funções / registros. Portanto, eles precisam ser realizáveis, mas seus realizadores não precisam ser extensional. Andrej Bauer é um especialista nesse assunto, portanto, se você fizer uma pergunta, certamente receberá uma boa resposta.
Neel Krishnaswami
11

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 emff 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".ff

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.

Rob Simmons
fonte
10

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

Andrej Bauer
fonte
Por alguma razão que eu tinha na minha cabeça que você poderia fazer Ackermann no Sistema F ...
Rob Simmons
@ Rob, como eu entendo, Andrej não diz que não é o caso.
Kaveh
1
λλ
Ah, certo, eu estava apenas sendo burro. (Porque a questão era muito ambígua entre falando Sistema F e falando sobre STLC, eu escolhi o sistema mais forte e esqueceu a pergunta mais simples.)
Rob Simmons
λλm.m(λfn.nf(f1_)) suc(((((fe)fe)h)((((fe)fe)h) hg)g)(((bc)ab)(bc)ac)d)dY
Francisco Mota
6

a

Sam Tobin-Hochstadt
fonte
5
(pp)ppp
2
λ
@ Martin: Obrigado! Estou morando na Alemanha agora, então esse é um bom incentivo extra para praticar meu alemão. :)
Neel Krishnaswami
4

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.

gasche
fonte
0

Δ=λx.xxΔΔβ ΔΔΔAA=AA

Charles
fonte
λAAAA
Sim, você está certo, mas eu pensei (talvez eu esteja errado) que não era possível ter esse tipo no cálculo lambda simplesmente digitado ou no Sistema F, que estão fortemente normalizando.
Charles
ΔΔΔΔ
@ Kaveh Por que ter um tipo Acomo esse A \ident A \rightarrow Anão é estranho? Parece um absurdo para mim, o que estou negligenciando?
Martijn
Você provavelmente está pensando classicamente sobre conjuntos e espaços de função sobre eles. Pense, por exemplo, sobre cadeias binárias finitas e funções computáveis ​​sobre elas.
Kaveh