Sappiamo che l'uguaglianza beta dei termini lambda semplicemente digitati è decidibile. Dato M, N: σ → τ, è decidibile se per tutti X: σ, MX NX?
Sappiamo che l'uguaglianza beta dei termini lambda semplicemente digitati è decidibile. Dato M, N: σ → τ, è decidibile se per tutti X: σ, MX NX?
Risposte:
Come ho detto nel mio commento, la risposta in generale è no.
Il punto importante da capire (lo dico per Viclib, che sembra apprendere su queste cose) è che avere un linguaggio di programmazione / set di macchine in cui tutti i programmi / calcoli terminano in nessun modo implica che la parità di funzioni (cioè se due programmi / macchine calcolano la stessa funzione) è decidibile. Un semplice esempio: prendi il set di macchine Turing con clock polinomiale. Per definizione, tutte queste macchine terminano su tutti gli input. Ora, data qualsiasi macchina di Turing di qualsiasi tipo , esiste una macchina di Turing M 0 che, data in input la stringa x , simula | x | passi del calcolo di M su un input fisso (diciamo, la stringa vuota) e accetta se Mtermina al massimo passaggi o rifiuta diversamente. Se N è una macchina di Turing che rifiuta sempre immediatamente, M 0 e N sono entrambi (ovviamente) con clock polinomiale, e tuttavia se potessimo decidere se M 0 e N calcolano la stessa funzione (o, in questo caso, decidiamo la stessa lingua ), saremmo in grado di decidere se M (che, ricordiamo, è una macchina di Turing arbitraria) termina sulla stringa vuota.
Nel caso del semplice -calculus (STLC), funziona un argomento simile, tranne per il fatto che misurare il potere espressivo dell'STLC non è così banale come nel caso precedente. Quando ho scritto il mio commento, avevo in mente un paio di articoli di Hillebrand, Kanellakis e Mairson dei primi anni '90, che mostrano che, usando tipi più complessi rispetto al solito tipo di numeri interi della Chiesa, si potrebbe codificare nello STLC sufficientemente complesso calcoli per il funzionamento dell'argomento sopra. In realtà, vedo ora che il materiale necessario è già nella dimostrazione semplificata di Mairson del teorema di Statman:
Harry G. Mairson, una semplice dimostrazione di un teorema di Statman. Theoretical Computer Science, 103 (2): 387-394, 1992. (Disponibile online qui ).
In tale documento, Mairson dimostra che, data una qualsiasi macchina di Turing , v'è un tipo semplice σ e λ -termine δ M : σ → σ codificante la funzione di transizione di M . (Questo non è ovvio a priori, se si ha in mente il potere espressivo estremamente scarso della STLC sugli interi della Chiesa. In effetti, la codifica di Mairson non è immediata). Da questo, non è difficile costruire un termine