Eu gostaria de um exemplo de quine no cálculo lambda puro . Fiquei bastante surpreso por não encontrar um pesquisando no Google. A página quine lista os quines para muitos idiomas "reais", mas não para o cálculo lambda.
Obviamente, isso significa definir o que quero dizer com uma solução no cálculo lambda, o que eu faço abaixo. (Estou pedindo algo bastante específico.)
Em alguns lugares, por exemplo, Larkin e Stocks (2004), vejo o seguinte citado como uma expressão "auto-replicante": . Isso se reduz a si próprio após uma única etapa de redução beta, dando a ele uma sensação de quine. No entanto, é incomparável, pois não termina: reduções beta adicionais continuarão produzindo a mesma expressão, portanto nunca se reduzirá à forma normal. Para mim, um quine é um programa que termina e gera saída, e, portanto, eu gostaria de uma expressão lambda com essa propriedade.
Obviamente, qualquer expressão que não contenha redexes já está na forma normal e, portanto, será encerrada e gerada por si mesma. Mas isso é muito trivial. Portanto, proponho a seguinte definição na esperança de que ela admita uma solução não trivial:
definição (provisória): Um quine no cálculo lambda é uma expressão da forma (onde representa alguma expressão específica de cálculo lambda) de forma que torna-se , ou algo equivalente a ele sob alterações de nomes de variáveis, quando reduzidas à forma normal, para qualquer entrada .
Dado que o cálculo lambda é tão equivalente a Turing quanto qualquer outro idioma, parece que isso seria possível, mas meu cálculo lambda está enferrujado, então não consigo pensar em um exemplo.
Referência
James Larkin e Phil Stocks. (2004) "Expressões auto-replicantes no Lambda Calculus" Conferences in Research and Practice in Information Technology, 26 (1), 167-173. http://epublications.bond.edu.au/infotech_pubs/158