Eu tenho três subquestões relacionadas, destacadas pelos pontos abaixo (não, eles não podem ser divididos, se você estiver se perguntando). Andrej Bauer escreveu, aqui , que algumas funções são realizáveis através de uma máquina de Turing, mas não através do cálculo lambda. Um passo fundamental de seu raciocínio é:
Entretanto, se usarmos o cálculo lambda, então [o programa] c deve calcular um numeral representando uma máquina de Turing a partir de um termo lambda representando uma função f. Isso não pode ser feito (posso explicar por que, se você fizer isso como uma pergunta separada).
- Eu gostaria de ver uma explicação / prova informal.
Não vejo como aplicar o teorema de Rice aqui; isso se aplicaria ao problema "essa máquina de turing T e esse termo lambda em L equivalente?", porque a aplicação desse predicado em termos equivalentes gera o mesmo resultado. No entanto, a função necessária pode calcular TMs diferentes, mas equivalentes, para termos lambda diferentes, mas equivalentes.
- Além disso, se o problema é com a introspecção de um termo lambda, acho que passar uma codificação de Gödel de um termo lambda também seria aceitável, não seria?
Por um lado, dado que seu exemplo envolve calcular, no cálculo lambda, o número de etapas necessárias para uma máquina de Turing para concluir uma determinada tarefa, não estou muito surpreso.
- Mas como aqui o cálculo lambda não pode resolver um problema relacionado à máquina de Turing, pergunto-me se é possível definir um problema semelhante para o cálculo lambda e provar que ele é insolúvel em máquinas de Turing, ou se há realmente uma diferença de poder em favor de Máquinas de Turing (o que me surpreenderia).