Vorrei un esempio di quine in puro calcolo lambda . Sono stato piuttosto sorpreso di non poterne trovare uno cercando su Google. La pagina Quine elenca le quines per molte lingue "reali", ma non per il calcolo lambda.
Naturalmente, questo significa definire cosa intendo per un quine nel calcolo lambda, che faccio di seguito. (Sto chiedendo qualcosa di abbastanza specifico.)
In alcuni punti, ad esempio Larkin and Stocks (2004), vedo quanto segue citato come espressione "autoreplicante": . Questo si riduce a se stesso dopo un singolo passaggio di riduzione beta, dandogli una sensazione in qualche modo simile a quella di un chinino. Tuttavia, è un po 'come se non terminasse: ulteriori riduzioni beta continueranno a produrre la stessa espressione, quindi non si ridurranno mai alla forma normale. Per me un quine è un programma che termina e genera se stesso, e quindi vorrei un'espressione lambda con quella proprietà.
Naturalmente, qualsiasi espressione che non contiene redexes è già in forma normale e pertanto terminerà e produrrà se stessa. Ma è troppo banale. Quindi propongo la seguente definizione nella speranza che ammetta una soluzione non banale:
definizione (provvisoria): una quina nel calcolo lambda è un'espressione della forma (dove rappresenta un'espressione specifica del calcolo lambda) tale che diventa (\ lambda x. A) , o qualcosa di equivalente ad esso in caso di modifiche ai nomi delle variabili, quando ridotto alla forma normale, per qualsiasi input y .
Dato che il calcolo lambda è equivalente di Turing come qualsiasi altra lingua, sembra che ciò dovrebbe essere possibile, ma il mio calcolo lambda è arrugginito, quindi non riesco a pensare a un esempio.
Riferimento
James Larkin e Phil Stocks. (2004) "Espressioni autoreplicanti nel calcolo di Lambda" Conferenze in ricerca e pratica in informatica, 26 (1), 167-173. http://epublications.bond.edu.au/infotech_pubs/158