Problemi senza Soluzione
3.8 I teoremi di Kleene e di Rice
In questa sezione presentiamo due risultati di notevole importanza sulle funzioni calcolabili e sui linguaggi decidibili. Il primo è dovuto a Kleene ed è anche noto come
Teorema del punto fisso,
il secondo a Rice.Il
Teorema di Kleene
contiene uno dei risultati più affascinanti della teoria della calcolabilità. Utilizza e sottolinea, infatti, una proprietà per certi verso parados-sale che la codifica delle macchine di Turing conferisce alle MdT stesse, e cioè la capacità di riprodursi e determinare nuovi algoritmi. In effetti ogni funzione calcolabile totalet
da N a N permette, per ogni x E N, alla MdT Mx e alla corri-spondente funzioneO,
di "generare" rispettivamente la MdT Mt (x ) e la funzione Ot( x ). Anzi, se prestiamo fede alla tesi di Church-Turing, ogni procedimento ef-fettivo che a partire da vecchi algoritmi ne produce di nuovi corrisponde a una tale funzionet.
Il contesto suggerisce in particolare la possibilità di definire una funzione cal-colabile non solo esplicitamente, ma anche implicitamente, tramite condizioni quali
O
X = O 2 o, più in generale,qix = Ot(x)
per
t
totale calcolabile, identificando quindi q come una delle funzioni che ope-rano allo stesso modo di quelle che esse determinano tramite x H2
, o unagenerica trasformazione t.
Il meccanismo di codifica conduce poi al notevole fenomeno dell'
autoriferimento
di un algoritmo: infatti ogni funzione può applicarsi a se stessa, più precisa-mente al proprio indice x, e usare x al proprio interno. Possiamo allora immagina-re di identificaimmagina-re le funzioni calcolabili q5x tramite condizioni di autoriferimento.per esempio chiedendo
(y) = x, per ogni y E N
e cioè che la MdT Mx produca come output di ogni input il proprio indice x. In realtà, a proposito di quest'ultimo esempio, l'intuizione provoca qualche fondato dubbio sulla sua attuabilità: infatti, una MdT
M
che include x nelle sue istruzioni riceve una codifica maggiore di x. Ma possiamo comunque ammettere che una MdTM
possa calcolare un certo indice x e poi coinvolgere4
nelle sue com-putazioni, come suo sottoprogramma. Del resto, la dimostrazione del teorema di Kleene si basa essenzialmente su questa idea.Il teorema di Kleene si riferisce ai meccanismi di produzione di programmi appe-na descritti e afferma che, per ogni procedura
t
con cui ogni MdTn
genera una MdT Mt(x ), c'è sempre un programma che resta invariato, e cioè un e E N tale che= Ot(e),
dunque Me 7 Mt ( e ) calcolano la stessa funzione. Per questo motivo il risultato di Kleene è anche chiamato
Teorema del punto fisso:
infattit
lascia invariato, se non il numero e, almeno il programmaOe
che gli corrisponde.Teorema (Kleene) 3.8.1 Per ogni funzione calcolabile totale t da in
N
esiste e EN
tale cheOe = Ot(e) •
Dimostrazione. Per ogni naturale u, si consideri la MdT M(u) che, dato un in-put x, calcola dapprima 0,,,(u) e poi, se Ou (u) _1,, applica la funzione 00u (u) a x con relativo output q50.(u) (x); se invece Ou (u) 1`, anche M(u) diverge su x. Così M(u) prima computa l'indice On (u) di un programma e poi applica questo pro- gramma. È facile convincersi che per ogni u una MdT M(u) come descritta si può effettivamente costruire. Anzi la funzione g che associa ad ogni u il codice di M(u), cioè M(u) = Mg ( u ), è totale e calcolabile. Si noti che, per ogni u, la funzione Og (n ) è definita ponendo, per ogni x E N,
{00 (u)(x) se Ou (u) è definita,
Og(u)(X) = u
t altrimenti
(ovviamente
09
( u ) (x) può essere divergente anche nel primo caso, se x non è nel dominio di q5,ku (u)). Sia ora t una funzione calcolabile totale. Allora anche la computazione t o g è calcolabile totale, e dunque t o g =4
per qualche naturale v. Inoltre, per ogni xE N,
Og(v)(X) = Och(v)(x) = Ot(g(v))(x)-
Quindi
e = t(v)
soddisfa la tesi del teorema. ❑Il teorema di Kleene permette di dimostrare uno dei più forti risultati negativi della teoria della computabilità e cioè il Teorema di Rice; esso, infatti, asseri-sce che qualunque proprietà non banale delle funzioni calcolabili (e quindi degli algoritmi) è indecidibile.
Teorema (Rice) 3.8.2 Sia F una famiglia di funzioni calcolabili. L'insieme S = {x E
N i O,
E F}è decidibile se e solo se F = 0 oppure F coincide con l'intera classe delle funzioni calcolabili.
Dimostrazione. Se F = 0, S = O è decidibile; se F coincide con la classe di tutte le funzioni calcolabili, S =
N
è ancora decidibile. Supponiamo allora che F non sia vuoto né contenga tutte le funzioni calcolabili, e mostriamo che S è indecidibile. Useremo per questo obiettivo un argomento di diagonalizzazione.Ammettiamo per assurdo S decidibile. Le ipotesi su F ci assicurano che ci sono funzioni calcolabili dentro e fuori di F: siano i e j rispettivamente il primo indice per cui qi.j E F, cioè i E S, il primo indice per cui Oi F, cioè j O S. Siccome S è decidibile, possiamo calcolare esplicitamente i e j, ricorrendo a una MdT M
che decide S. Basta che facciamo operare M su O, poi su 1, e così via finché necessario. Se M stabilisce che O è in S, si pone i = O, altrimenti si deduce
j = O; dopo di che si passa a 1. Se si è ottenuto i = O, e M dichiara che 1 O S,
si pone j = 1; altrimenti per i = O e 1 E S, si passa a 2, certi di incontrare prima o poi nella sequenza dei naturali il nostro j. Analogamente si procede per j = O.
Di conseguenza la funzione g tale che, per ogni x E N,
J i sex¢S g (x) — I j se x E S
risulta calcolabile, e anche ovviamente totale. Inoltre si ha, per ogni x E N, che
g(x) E S se e solo se x ¢ S,
cioè
4) g (x) E F se e solo se 4 O F.
Ma, siccome g è totale calcolabile, il teorema di Kleene ci fornisce un naturale e tale che 09 (e) = (/),, e questo conduce alla contraddizione
Oe E F se e solo se O, O F.
Dunque S non può essere decidibile. ❑
Il teorema di Rice conferma l'indecidibilità di certi linguaggi già incontrati in questo capitolo.
Esempio. L'insieme T = {x E N : cpx è totale} corrisponde alla famiglia F
delle funzioni calcolabili totali, che non è vuota ma neppure esaurisce la classe delle funzioni calcolabili. Così il teorema di Rice si applica e garantisce che
T = {x E N : (,ox E F} non è decidibile.
Lo stesso si può affermare di E = {x E N : c,ox = id}, per il quale F si riduce alla sola funzione identità.
Le conseguenze del Teorema di Rice in termini di teoria della programmazione sono particolarmente significative. Infatti, in tale contesto, si deve ammettere l'impossibilità di provare esplicitamente specifiche proprietà, come la costanza, la crescenza, la monotonia, e così via, delle funzioni calcolate da programmi.
Infatti la classe delle funzioni che verificano una di queste proprietà corrisponde alle ipotesi del teorema di Rice.
In particolare, un'interessante applicazione, già discussa precedentemente, riguar-da l'impossibilità di decidere la correttezza di un programma. Infatti la questione si traduce nel considerare l'insieme:
S= {x EN` : Ox = f}
dove f è la specifica del programma e le varie 4 rappresentano le implementa-zioni di f . Dal teorema di Rice segue che S è indecidibile.
3.9 Esercizi
1. Si dimostri che la funzione
1 se (0) O se 0, (0) t
non è calcolabile (suggerimento: ci si riduca al problema dell'arresto).
2. Si dica se la funzione D tale che, per ogni x E
N,
1 se Dio esiste, O altrimenti è calcolabile.
3. Si discuta la semidecidibilità degli insiemi
= {(x,y) E N 2 : _IVIx y}, T = {x E
N : O,
è totale}, I= {x EN q5x
id}, E = {(x,y) E N2 :O x
-q5y }
e dei loro complementari 1q2 — K', N — T,
N —
I,N2 —
E.4. Si provi che 0,
N
sono decidibili, e che unioni e intersezioni di insiemi decidi-bili restano decididecidi-bili. Si discutano gli stessi problemi per la semidecididecidi-bilità.5. Sia U la MdT universale. Allora l'insieme {x E N : 1 i i x} è decidibile o no?
Semidecidibile o no?
6. Si dimostri che se t è una funzione calcolabile totale allora esiste un numero infinito di indici x tali che = Ot (x ).
7. Si dimostri che esiste un naturale x tale che per ogni naturale y vale Ox (y) = Oy (X).
8. L'insieme dei naturali x tali che 5 è nella immagine di
4 è
o no decidibile?9. Si dimostri che, se I è un insieme finito o I ha complementare
N —
I finito, allora I è un insieme decidibile.10. È possibile applicare il teorema di Rice all'insieme {x
E N 4
converge in x passi su x}? E a K = {x EN Ox (x) 4}?
Riferimenti bibliografici [66] presenta molti esempi di problemi risolvibi-li e problemi non risolvibirisolvibi-li algoritmicamente. Altri interessanti problemi non algoritmicamente risolvibili sono stati discussi in [27] e più recentemente in [93].
Per una descrizione dettagliata della macchina di Turing Universale, presentata inizialmente sempre in [108], si può fare riferimento a [7]. Per un risultato analogo in un contesto più vicino alla programmazione classica si faccia riferimento al libro [66].
Maggiori notizie sulla E di Rado si trovano in [39]. Si veda anche l'articolo di Brady in [52]. Il decimo problema di Hilbert è stato proposto originariamente in [53]. La prova della sua indecidibilità può essere trovata in [77] e in versione più elementare in [28]. Per una completa trattazione del problema si può anche consultare [93]. I suoi più recenti sviluppi sono discussi in [30]. j