Computabilità
Computabilità
Computabilità
Funzioni computabili
Il problema diventa allora quello di formalizzare un opportuno modello di calcolo che, data una
funzione, sappia trovare una procedura effettiva per calcolarla.
Nella storia della teoria del calcolo, sono stati proposti vari modelli, tra cui le Turing Machines (1936), il lambda-calcolo (Church, 1936), le funzioni parziali ricorsive (Gödel-
Kleene, 1936), i sistemi deduttivi canonici (Post, 1945), i sistemi di Markov (1951) e le Unlimited Register Machines (Sheperdson-Sturgis, 1963).
2. URM
1. Reset: Z (n)
0 se i n
Semanticamente, si ha k , r Z
(n)
k 1, r , dove ri ;
ri altrimenti
2. Successore: S (n)
r 1 se i n
Semanticamente, abbiamo k , r S
(n)
k 1, r , dove ri i ;
ri altrimenti
3. Trasferimento: T ( m, n )
r se i n
Semanticamente, si ha k , r T k 1, r , dove ri m
( m ,n)
;
ri altrimenti
4. Salto condizionato: J ( m, n, q )
q se rn rm
Semanticamente, abbiamo k , r J k , r , dove k
( m, n , q )
;
k 1 altrimenti
se ki s , k i , ri è la configurazione finale.
La computazione di P a partire da r viene indicata con Pr . Con la notazione Pa1 ,...a n
a se i n
indicheremo la computazione Pr tale che ri i , cioè considereremo il vettore
0 altrimenti
a1 ,...a n come input del programma.
3. Funzioni URM-computabili
Sia f : A B una funzione parziale, cioè tale che Dom f A , e scriveremo f (a ) se f è
definita in a A , altrimenti scriveremo f (a ) .
Indichiamo con Cn la classe delle funzioni n -arie UC, e con C (o CURM ) quella di tutte le funzioni
UC di qualsiasi arietà. Dalla definizione si ricava che C Cn .
n 1
4. Decidibilità
Un predicato n -ario è una funzione M : n 0,1 , tale cioè che dica se per un
vettore di interi una certa proprietà è vera (1 ) o falsa ( 0 ).
Nella nostra trattazione considereremo solo predicati totali.
1 se M x vale
Dato un predicato M , la funzione cM x è detta funzione
0 altrimenti
caratteristica (FC) di M .
2 z se z 0
Per esempio, una CE di potrebbe essere ( z) .
2 z 1 altrimenti
1
1
2 n se n è pari
Infatti possiamo invertirla in ( n) .
1 (n 1) altrimenti
2
1. Funzioni iniziali
Lemma
Le funzioni iniziali sono computabili
Mostriamo che esistono dei programmi che computano le funzioni iniziali:
1. Z (1) calcola la funzione identicamente nulla;
2. S (1) calcola la funzione successore;
3. T (i,1) calcola la funzione proiezione.
2. Concatenazione di programmi
Concatenare due programmi significa eseguire il secondo non appena il primo è terminato. Ciò pone il problema di
far concludere il primo con un salto alla prima istruzione del secondo e quello di riscrivere le etichette delle
istruzioni di salto del secondo tenendo conto dell’offset dovuto alle istruzioni del primo.
Si dice che un programma di lunghezza s è in forma standard se, per ogni sua
istruzione di tipo J (m, n, q) , vale q s 1 .
Lemma
Sia P un programma di lunghezza s in forma standard.
All’arresto di P, il contatore di programma vale s 1.
Lemma
Sia P un programma.
Esiste un programma P in forma standard tale che ogni sua computazione è
identica a quella di P , fatta eccezione per il contatore di programma quando
esso termina.
In particolare, a1 ,...,a n , b P a1 ,...,a n b P a1 ,...,a n b , cioè f P( n ) f P( n ) n .
J (m, n, s 1) se I j J (m, n, q ) e q s 1
Dato P I 1 ,..., I s , poniamo P I 1 ,..., I s , dove I j .
I j altrimenti
Lemma
1. La concatenazione gode della proprietà associativa ( ( PQ) R P(QR) );
2. Se P e Q sono programmi in forma standard, anche PQ lo è.
Pur risolvendo il problema delle etichette delle istruzioni, la concatenazione così definita pone l’ulteriore questione
della sovrapposizione delle aree di lavoro.
Allo scopo di gestire la concatenazione e risolvere nel contempo le problematiche connesse con
la sovrapposizione dei registri, definiamo la funzione nel modo seguente:
Z (n) n
S (n) n
T (m, n) max m, n
J (m, n, q ) max m, n
P I1 ,..., I s max I j
j 1,..., s
Z (n 1)
... (azzera l’area di lavoro di P )
Z ( P )
P (computa P )
Teorema
Siano f y1 ,..., y m , g x1 ,..., x n ,..., g m x1 ,..., x n delle funzioni computabili (e totali).
La funzione hx1 ,..., xn f g x1 ,..., xn ,..., g m x1 ,..., xn è computabile (e totale).
Intanto, osserviamo che h x1 ,..., x n f y1 ,..., y m , g x1 ,..., x n ,..., g m x1 ,..., x n . Quindi la
h sarà totale se e solo se tutte le funzioni dell’ipotesi sono totali.
Siano F , G1 ,..., Gm programmi in forma standard che computano rispettivamente f , g 1 ,..., g m e
sia k max F , G1 ,..., Gm , m, n . Per come è stato definito k , se utilizziamo i registri a
partire dal successivo, non andremo a “toccare” le aree di lavoro di F , G1 ,..., Gm . Di
conseguenza, è banale far vedere che il seguente programma computa h :
T (1, k 1)
...
T (n, k n)
Definiamo le seguenti funzioni che operano una sostituzione di variabili a partire da una certa
funzione f :
1. perm f x1 , x 2 f x 2 , x1
2. id f x f x, x
3. dummy f x1 , x 2 , x3 f x 2 , x 3
Corollario
Sia f y1 ,..., y m computabile (e totale) e i1 ,..., im 1,..., n, con possibili ripetizioni. Definiamo
h x1 ,..., x n f xi ,...x i .
1 m
Dal corollario si deduce che il teorema precedente vale anche quando le funzioni g non hanno
tutte la stessa arietà.
4. Ricorsione
Teorema
Siano date le funzioni f x e g x,y, z .
hx,0 f x
Esiste un’unica funzione hx, y che soddisfa le equazioni .
hx, y 1 g x,y, hx, y
hx,0 f x
Date le funzioni f x e g x,y, z , l’espressione è detta
hx, y 1 g x,y, hx, y
definizione per ricorsione di h (a partire) da f e g.
Il teorema precedente ci assicura che h è ben definita.
h0 a a
Nel caso in cui l’arietà di x sia nulla, le equazioni ricorsive diventano .
h y 1 g y , h y
Teorema
Siano f x e g x,y, z funzioni computabili (e totali) con x x1 ,..., x n , e sia hx, y definita
per ricorsione (primitiva) a partire da f e g .
La funzione h è computabile (e totale).
Siano F e G i programmi in forma standard che computano rispettivamente f e g , e sia
k max F , G , n 2 . Per come è stato definito k , se utilizziamo i registri a partire dal
successivo, non andremo a “toccare” le aree di lavoro di F e G . Di conseguenza, è facile
convincersi che il seguente programma computa h :
T (1, k 1) S (k n 2)
J (1,1, p )
T ( n 1, k n 1) I q : T ( k n 3,1)
Rk n 3 f F R k 1 ,..., Rk n
I p : J ( k n 1, k n 2, q )
Rk n 3 f G Rk 1 ,..., Rk n , Rk n 2 , R k n 3
Dall’ipotesi di totalità, per come sono costruite le equazioni ricorsive, ricaviamo la tesi di
totalità.
Adesso elenchiamo un’ampia lista di funzioni computabili, facendo vedere che è possibile definirle per
composizione o ricorsione (primitiva) a partire da quelle già definite:
x 0 x f x U 11 x
(somma)
x ( y 1) ( x y ) 1 g x, y, z s z
x 0 0 f x 0 x
(prodotto)
x ( y 1) x y x g x, y, z x z
x 0 1 f x s 0 x
(potenza) y 1
x x y x g x, y, z x z
0 1 0 a0
(predecessore)
( y 1) 1 y g y, z y
x 0 x f x U11 x
(differenza naturale)
x ( y 1) ( x y ) 1 g x, y, z z 1
sg 0 0 a0
(segno)
sg y 1 1 g y, z s 0 z
sg 0 1 a 1
(antisegno[1])
sg y 1 0 g y, z 0 y , z
(antisegno[2]) sg x 1 sg x
(differenza assoluta) x y ( x y ) ( y x)
0! 1 a 1
(fattoriale)
( y 1)! y! ( y 1) g y, z s y z
(minimo) min x, y x ( x y )
(massimo) max x, y x ( y x )
0% x 0 f x 0 x
(modulo)
( y 1)% x s y % x sg x s y % x g x, y, z s z sg x s z
0 / x 0 f x 0 x
(quoziente)
( y 1) / x ( y / x) sg x s y % x
g x, y, z z sg x s y % x
(codifica binaria) x, y 2 x (2 y 1) 1
even 0 1 a 1
(parità)
even y 1 1 even( y ) g y, z s 0 x z
f 1 x se M 1 x è vero
La funzione g x ... è computabile.
f x se M x è vero
k k
Teorema
Siano M x e Qx due predicati decidibili.
I seguenti predicati sono decidibili:
1. M x
2. M x Qx
3. M x Qx
Basta osservare che:
1. cM x 1 cM x
2. c M Q x c M x cQ x
3. c M Q x sg c M x cQ x max c M x , cQ x
Teorema
Sia f x, z una funzione computabile (e totale).
Le funzioni di sommatoria limitata f x, z e produttoria limitata f x, z
z y z y
Corollario
Siano f x, z e k x, w due funzioni computabili (e totali).
Le funzioni f x, z e f x, z sono computabili (e totali).
z k x , w z k x ,w
Si dimostra per composizione, sostituendo alla y del teorema precedente la funzione k x, w .
5. Minimalizzazione
Teorema
Sia f x, z una funzione computabile e totale.
La funzione z y f x, z 0 è computabile e totale.
Consideriamo la funzione hx, v sg f x, u e sia z 0 z y f x, z 0 .
u v
1 se v z 0
Osserviamo che hx, v , per cui z y f x, z 0 hx, v .
0 se z 0 v y v y
Corollario
Siano f x, z e k x, w due funzioni computabili e totali.
L’operatore z k x, w f x, z 0 è computabile e totale.
Si dimostra per composizione, sostituendo alla y del teorema precedente la funzione k x, w .
Corollario
Sia Rx, y un predicato decidibile.
1. La funzione f R x, y z y Rx, y è computabile,
2. Il predicato M x, y z y Rx, z è decidibile.
3. Il predicato M x, y z y Rx, z è decidibile.
1. Possiamo scrivere f R x, y z y sg cR x, z 0 , da cui la computabilità.
3. La FC di M può essere definita come c x, y sg c R x, y oppure come
z y
c x, y z y Rx, z , da cui la decidibilità.
Corollario
I predicati x y, x y e x y sono decidibili.
Estendiamo la precedente lista di funzioni computabili, definendone altre anche mediante l’OLM:
(divisori) D( x) z | x
zx
1 se D( x) 2
(primo) Pr x
0 altrimenti
p0 0
( n -esimo primo)
pn 1 z pn ! 1 z pn Pr x 1
Mediante la x y possiamo codificare una sequenza di interi a1 ,..., a n scrivendo b p1a1 1 ... pnan 1 .
.
La decodifica si esprime come n z b b z 1 0 e ai b i 1, 1 i n .
Mediante tale codifica, possiamo studiare la ricorsione con più di una base. Ad esempio i numeri di Fibonacci definiti
f 0 1
f y
come f 1 1 , possono essere trattati definendo g y 2 3 f y 1 per ricorsione
f y 2 f y f y 1
g 0 6
(osserviamo che g y 1 f y e g y 2 f y 1 ) : g y 2 .
g y 1 2 3 g y 1 g y 2
Per cui g è computabile e, come conseguenza dell’osservazione, anche f lo è.
L’utilizzo dell’OLM consente di costruire programmi che restituiscono un output in ogni caso.
Infatti l’ipotesi di totalità e computabilità ci consente di calcolare il valore della funzione per il
primo indice, poi per il secondo e così via, fino a trovare, se esiste, il minimo cercato, o
fermandosi al limite indicato dall’operatore, se esso non esiste. Osserviamo che anche per
funzioni non totali, ma computabili, possiamo ricavare una funzione totale definita mediante
OLM se esse sono definite per tutti gli indici inferiori al limite richiesto.
Per affrontare un discorso più generale, è meglio introdurre un operatore che non sia limitato e ci
consenta di trattare anche funzioni non totali. Una funzione scritta mediante tale operatore dovrà
prevedere il caso in cui essa sia non definita.
La funzione g è computabile.
Sia F un programma in forma standard che computa f e sia k max n 1, F .
Si evince facilmente che il seguente programma computa g :
T (1, k 1)
...
T (n, k n)
I p : R1 f F Rk 1 ,..., Rk n , Rk n1
J (1, k n 2, q )
S (k n 1)
J (1,1, p )
I q : T (k n 1,1)
Corollario
min y | R x, y se tale y
Sia Rx, y un predicato decidibile e g x y Rx, y .
altrimenti
La funzione g è computabile.
Basta osservare che g x y sg c R x, y 0 .
Per quanto visto, l’OM definito a partire da funzioni totali può generare funzioni non totali, mentre
se partiamo da funzioni totali e utilizziamo composizione e/o ricorsione otterremo ancora
funzioni totali.
6. Funzione di Ackermann
x 1 y 1 x x 1 y x x x 1 y 1 ( 2)
x x 1 y 1 x 1 y 2 ... x( y 1) x 1 0
( 3)
x
x( y 1) 1 .
Lemma
È possibile calcolare il valore di x y x, y 2 .
Dalla definizione, considerando i casi base, è evidentemente possibile calcolare 0 y y e
x 0 x .
Inoltre, per quanto visto, possiamo trovare i valori 1 y y , 2 y y , ... arrivando
ai casi base. Perciò è possibile calcolare x y x, y 2 .
Per dimostrare la computabilità della FA, è necessario costruire un insieme di triple connesse al
calcolo dei suoi valori.
a) 0, y, z S z 0 y ;
b) x,0, z S z 1 ;
c) x 1, y 1, z S u | x 1, y, u S x, u , z S .
Teorema
Data la FA definita per ricorsione, sia T un insieme valido.
1. è ben definita dalle equazioni ricorsive;
2. x, y, z T z x, y ;
( v è il codice di un ins finito di triple) is_set_of_ triples v i v v i 0 v i 1 is_triple i
2 i 0 3i 1
1i 0 2 i 1 3 i 2 ^
2 1 3 2 2
i i i
i v in i, v 2 i 0 3i 1
1i 0 2 i 0
u v in cod x, y
1 , u , v
in cod x 1, u , z , v
z v in cod x, y , z , v
Teorema
La FA è computabile.
Basta osservare che x, y z in cod x, y , z , vvalid_for v, x, y .
Dalla computabilità della funzione cod e dalla decidibilità dei predicati in e valid _for , segue la
tesi.
C. Tesi di church
Considerato che esiste almeno una funzione totale non PR (la FA), possiamo affermare che vale
l’inclusione stretta PR CTOT . Quindi, anche per quanto visto dai teoremi precedenti, pur
essendo C chiuso rispetto a composizione, ricorsione e minimalizzazione, la classe PR non lo è.
Consideriamo uno stato r r1 , r2 ,... dei valori dei registri (al più un numero finito di essi può
essere non nullo). Esso si può codificare in maniera effettiva con cod r 2r1 3r2 5r3 ... pi .
i 1
Quindi, possiamo codificare una configurazione istantanea (di una URM che deve eseguire la
j -esima istruzione) con j , cod r .
pn RP x, t se jP x, t 1, s I jP x, t S n
R x, t
R x , t m R x , t n
pn P ( RP x, t / pn P ) se jP x, t 1, s I jP x, t T m, n
RP x, t se ( jP x, t 1, s I jP x, t J m, n, q ) jP x, t 0
Da tutto ciò, segue che cP è PR. Inoltre, se f P (x) , il programma si ferma esattamente dopo
t passi, dove t t j P x , t 0 , per cui f P (x) RP x, t 1 ; invece, se f P (x) , abbiamo
t jP x , t 0 .
In ogni caso vale f (x) f P (x) RP x, t jP x, t 0 1
2 cP x, t 1 cP x, t 0 , per
1
cui f (x) è PAR f (x) R C R .
Corollario
RTOT CTOT .
Segue direttamente dal teorema precedente.
Corollario
RTOT R0 .
4. un’unità di controllo, che tiene conto dello stato interno corrente, contenente
una testina di lettura/scrittura che tiene traccia della casella su cui avvengono le
operazioni;
5. una lista finita di quadruple, detta controllo finito, del tipo qi , s j , , ql , dove
sk
R , con 1 i, l m , 0 j, k n e R, L s0 , s1 ,..., sn .
L
Supporremo che, per ogni coppia qi , s j vi sia al più una quadrupla qi , s j , , ql , cioè tratteremo
solo TM deterministiche.
Data una TM, definiamo azione specificata dalla quadrupla qi , s j , , ql quando essa
si trova nello stato qi e legge il simbolo sj , l’operazione tale che:
- fin quando esiste nel controllo finito una quadrupla qi , s j , , ql , dove qi è lo stato
corrente di M e sj è il simbolo letto dalla testina, esegui l’azione specificata da
tale quadrupla;
- altrimenti, fermati.
4. Funzioni Turing-computabili
Per convenzione, allo scopo di rappresentare i numeri naturali, supporremo sempre s1 1 e che i
numeri vengano scritti su nastro in forma “unaria”, quindi il valore di un numero equivarrà al
numero di simboli 1 che vi si trovano meno uno. Perciò, per rappresentare l’input unario x di
una funzione, il nastro apparirà con x 1 simboli 1 :
b 1 1 1 b
Invece, per rappresentare l’input k ario, separeremo gli elementi del vettore con dei blank:
b 1 1 1 b 1 1 1 b 1 1 b
Indichiamo con TCk la classe delle funzioni k -arie TC, e con TC (o C TUR ) quella di tutte le
funzioni TC di qualsiasi arietà.
Dalla definizione si ricava che TC TCk .
k 1
Teorema
TC R .
Si dimostra provando che un programma URM può simulare una TM e viceversa. Per cui,
avremo TC C e di conseguenza la tesi.
È stato dimostrato che tutte le varianti possibili delle TM (nastri multipli, testine multiple,
controllo finito non deterministico, …) sono computazionalmente equivalenti ad una TM
classica.
5. Tesi di Church
Le considerazioni sull’equivalenza dei vari approcci portano alla conclusione che se noi
riusciamo ad intuire una procedura effettiva per calcolare una funzione, potremo trovare un
qualsiasi modello per computarla effettivamente.
Tesi
(di Church)
2. È stata trovata un’ampia collezione di funzioni appartenenti a CURM , che può essere espansa
all’infinito tramite composizione, ricorsione e minimalizzazione.
3. I programmi URM ci permettono di scrivere effettivamente gli algoritmi che abbiamo solo
informalmente ideato.
4. Non sono state trovate ancora funzioni effettivamente calcolabili ma non UC.
Ogni volta che, data una funzione, possiamo scrivere un programma che la
computa (o provare indirettamente che tale programma esiste), oppure provare in
maniera rigorosa che esiste un algoritmo, seppur informale, che può calcolarla, per
la Tesi di Church (TdC), potremo considerarla effettivamente computabile.
Nel caso in cui possiamo applicare il secondo metodo suddetto per dimostrare la
computabilità di una funzione, diciamo che l’abbiamo fatto mediante la TdC.
La dimostrazione mediante TdC dev’essere considerata come un’ultima spiaggia per la dimostrazione della
computabilità di una funzione, quando altri metodi non riescono a portarci velocemente e senza ragionevoli dubbi
ad una dimostrazione formale. Quest’ultima dovrà essere comunque utilizzata se espressamente richiesta.
D. Enumerazione di funzioni computabili
1. Enumerazione di programmi
Teorema
1. 2 è EEN
2. è EEN
3. k è EEN
k 0
ha 1 x 1 1 x 1, 2 1 x 1, 2 x 1 . Si vede subito che entrambe le funzioni sono
effettivamente calcolabili e quindi è EEN.
3. Consideriamo : k | a1 ,..., ak 2a1 2 a1 a2 1 2 a1 a2 ak k 1 1 e siano b1 , , bk gli
k 0
indici dei bit 1 nella rappresentazione binaria del numero x 1 , con 0 b1 bk . Allora,
possiamo calcolare l’inversa 1 x b1 , b2 b1 1,, bk bk 1 1 . È evidente che entrambe le
funzioni sono effettivamente calcolabili, perciò
k 0
k
è EEN.
Denotiamo con I l’insieme di tutte le istruzioni URM e con P l’insieme di tutti i programmi
URM.
Teorema
I e P sono EEN.
Consideriamo : I tale che:
Z (n) 4(n 1)
S (n) 4(n 1) 1
T (m, n) 4 (m 1, n 1) 2
J (m, n, q) 4 (m, n, q) 3
Se rappresentiamo un numero naturale x come 4u v , possiamo calcolare l’inversa:
Z (u 1) se v 0
S (u 1) se v 1
1 x
T (m, n) con m 1 u +1, n 2 u +1 se v 2
J (m, n, q) con (m, n, q) 1 u se v 3
È facile convincersi che e 1 sono effettivamente calcolabili, per cui I è EEN.
Ora consideriamo : P , tale che, se P è un programma le cui istruzioni sono I1 , , I s ,
allora P I1 ,, I s . Per quanto visto e per come sono costruite, e 1 sono
effettivamente calcolabili, quindi P è EEN.
Indichiamo con a( n ) la funzione n -aria calcolata dal programma di codice a (cioè a( n ) f P(an ) ),
con Wa( n )
il suo dominio (cioè Wa( n ) Dom a( n) ) e con Ea( n ) il suo codominio (cioè
Ea( n) Ran a( n ) ). Per brevità, scriveremo a , Wa e Ea per indicare rispettivamente a( n) , Wa( n ) e
( n)
E a .
l’enumerazione senza ripetizioni (fnn)0 , (fnn)1 , (fnn)2 , equivalente a quella di partenza perché
fatta da tutte le funzioni computabili n -arie. Perciò Cn è EN.
Corollario
C è EN.
Essendo C Cn , per i teoremi precedenti, C è EN.
n 0
Teorema
Esiste una funzione totale e unaria che non è computabile.
n 1 se n n
Applicando il MDC, definiamo f n n .
0 altrimenti
Sia f x, y computabile.
Teorema
(s-m-n, forma generale)
Siano m, n 1, x x1, xm , y y1 , yn .
T ( n, m n) Q (1, x1 )
T (n 1, m n 1) Q (2, x2 )
T (1, m 1) Q (m, xm )
P
Per costruzione, si ha z( m n ) x, y s(mn) z , x y ; inoltre snm è computabile per la TdC, in quanto
n
Osserviamo che le funzioni snm sono PR e che la loro dipendenza da n può essere eliminata, cioè
m, n 1 s m : m 1 | z( m n ) x, y s(mn) z , x y .
3. Programmi universali
Teorema
Sia n 1 .
U( n ) è computabile.
(dimostrazione informale)
1. Si generi il programma Pe ;
2. Si simuli Pe sull’input x
n xi
c
n e, x,0 pi ,1
i 1 , dove, posti 1 cn e, x, t e j 2 cn e, x, t , e j si
c e, x, t 1 , j
n
ottengono mediante la seguente procedura effettiva:
- se j 0 , poniamo e j 0 ;
Dato che possiamo scrivere U( n ) e, x n e, x, t jn e, x, t 0 , deduciamo che la FU è
1
computabile.
Lemma
Sia n 1 .
1. S n e, x, y , t " Pe x y in al più t passi" è un predicato decidibile.
2. H n e, x, t " Pe x in al più t passi" è un predicato decidibile.
1. S n e, x, y, t jn e, x, t 0 n e, x, t 1 y
2. H n e, x, t jn e, x, t 0
Una dimostrazione più formale consente di provare che tali predicati sono anche PR.
Corollario
(1° teorema della forma normale di Kleene (FNK1))
Sia n 1 .
U y , funzione computabile, e Tn e, x, z , predicato decidibile, tali che:
1. e( n ) x z | Tn e, x, z ;
2. e( n ) x U z Tn e, x, z .
Poniamo Tn e, x, z Sn e, x, z 1 , z 2 .
1. Abbiamo e( n ) x u, v | Sn e, x, u, v z | S n e, x, z 1 , z 2 z | Tn e, x, z .
2. Si ha anche e( n ) x z Sn e, x, z 1 , z 2 z T e, x, z .
1
n 1
Dal fatto che S n è PR, si ricava che anche Tn è PR. Quindi il teorema precedente stabilisce che:
x, x 1 se g x 1
Osserviamo che f x U . Quindi, se g x fosse computabile, anche
0 altrimenti
f x lo sarebbe e ciò è assurdo. Di conseguenza, x TOT è indecidibile.
Teorema
Esiste una funzione totale computabile che non è PR.
Si può verificare che è possibile generare in modo sistematico tutte le funzioni PR, nonché i
codici dei programmi che le computano.
Adottiamo la seguente notazione:
Sub f , g1 ,, g m , con f funzione m -aria e gi , 1 i m funzioni n -arie, indica la funzione
ottenuta per composizione, prendendo le gi come argomento della f ;
Rec f , g , con f funzione n -aria e g funzione (n 2) -aria, indica la funzione ottenuta per
ricorsione da f e g .
In tal modo, per ogni funzione, possiamo stabilire un piano di definizione che, utilizzando la
notazione suddetta, parta dalle funzioni iniziali e arrivi passo passo a definirla esattamente. Tale
piano è molto simile ad un programma che calcola effettivamente tale funzione.
Adesso, per semplicità, restringiamo il campo alle sole funzioni unarie. Come per i programmi,
possiamo enumerarne i piani in modo effettivo e chiamiamo i la funzione PR unaria definita
dall’ i -esimo piano di definizione. In tal modo, la sequenza 0 ,1 , 2 , è un’enumerazione
effettiva di tutte le funzioni PR unarie. Essendo esse totali e computabili, sia p i il codice del
programma che computa i , cioè i p (i ) .
Per come è stata definita p , essa è anche totale e computabile, in quanto possiamo costruire
programmi che simulino la sostituzione e la ricorsione (cfr. B3 e B4). Allora, se definiamo la
funzione f x x x 1 , avremo f x p x x 1 U ( p x , x ) 1 . Essa è la funzione della
nostra tesi in quanto, per costruzione, è totale e computabile, ma non è PR perchè costruita
mediante MdC e quindi diversa da i , i .
Analogamente si procede per le funzioni di arietà qualsiasi.
Lemma
Siano date x e y .
Lemma
Sia data x .
Lemma
(unione dei domini)
Dato che f x, y , z 1 t H x, z , t H y, z , t , segue che f è computabile. Per il teorema
s-m-n, s x, y , totale e computabile, tale che f x, y , z s x , y z Ws x , y Wx Wy .
Lemma
(codice dell’inversa)
Per l’iniettività, si ha
Dom x1 Ran x Ex . Sia y E x ; per la (b), g x, y e
1
x g x, y y x k x y y k x y x1 y y E x . Cioè x k x .
E. Decidibilita’
1. Problemi indecidibili
Vi sono vari modi per dire che un predicato è decidibile.
Teorema
Sia dato il predicato I x x Wx .
I x è indecidibile.
Osserviamo innanzitutto che I x è logicamente equivalente ai predicati x x , Px x ,
x, x .
U
1 se x Wx
Ddc f x cI x non è computabile. Per assurdo lo sia, e costruiamo la
0 altrimenti
0 se x Wx 0 se f x 0
funzione g x . È ragionevolmente possibile pensare ad una
altrimenti altrimenti
procedura effettiva che, a partire dalla f computabile, calcoli anche la g . Quindi, per la TdC,
essa è computabile.
D’altra parte, x Dom g x Wx x , cioè Dom g Wx x . Pertanto, g è diversa
da tutte le funzioni computabili, che è assurdo. L’assurdo nasce dall’aver supposto che la FC di
I fosse computabile, quindi il predicato x Wx è indecidibile.
Questo teorema dice che non esiste alcun metodo generale per stabilire se, dato un certo x ,
x x sia definita o meno.
Corollario
h computabile tale che x Dom h e x Ran h sono entrambi indecidibili.
x se x Wx
Poniamo h x
, che è computabile per la TdC (o anche h x x 1 U x, x ).
altrimenti
Si ha x Dom h x Wx x Ran h x . Pertanto, i predicati x Dom h e
x Ran h sono equivalenti al predicato I del teorema precedente. Quindi sono
indecidibili.
Teorema
(problema della fermata, o dell’arresto)
Halt ( x, y ) è indecidibile,
Osserviamo innanzitutto che Halt x, y è logicamente equivalente ai predicati y ,
x
P y , x, y .
x U
Molti problemi di indecidibilità possono essere risolti mostrando che essi sono almeno “difficili” quanto un altro di
cui si è già dimostrata l’indecidibilità. Tale tecnica è detta “riduzione”.
M 1( h ) x M 2( n ) k1 x ,, kn x x .
h
Teorema
Il predicato x 0 è indecidibile.
0 se x Wx
Definiamo f x, y , che risulta computabile per la TdC (o anche mostrando che
altrimenti
f x, y 0 U U12 x, y ,U12 x, y ). Per il teorema s-m-n, k x , totale e computabile, tale
che f x, y k x y .
La conseguenza di questo corollario è che non esiste alcun metodo generale per stabilire se due
programmi computino la medesima funzione.
Teorema
(problemi dell’Input e dell’Output)
Sia c .
I predicati c W e c E sono indecidibili.
x x
y se x Wx
Definiamo f x, y , che è computabile per la TdC. Allora, per il teorema s-m-n,
altrimenti
k x , totale e computabile, tale che f x, y k x y .
k2 ( x) k x ), perciò c Wx e c E sono indecidibili.
x
Il significato di questo teorema è che non esiste alcun metodo generale per stabilire se un certo
input sarà accettato da un programma o se tale programma darà un certo output. Per questo
motivo, tali problemi vengono chiamati anche “problema dell’accettazione” e “problema della
stampa”.
Teorema
(di Rice)
RB x è indecidibile.
Per assurdo, sia R B x decidibile e sia c B x la sua FC. Sia inoltre f x x .
Possiamo supporre SPdG che f x B , in quanto, se così non fosse, potremmo sostituire
C1 B al posto di B in quanto cC1 - B x sg c B x , che è computabile.
g y se x Wx
Prendiamo g B e definiamo f x, y , che è computabile per la TdC.
f
y altrimenti
Quindi, per il teorema s-m-n, k x , totale e computabile, tale che f x, y k x y .
Lemma
1. Il predicato I x è PD.
2. Il problema della fermata è PD.
3. Il predicato I x x Wx non è PD.
1 se x Wx
1. Scriviamo la FCP di I x : cI x . Essa è computabile per la TdC, ovvero
altrimenti
osservando che cI x 1 U x, x .
1 se x y
2. Scriviamo la FCP di Halt x, y : cHalt x, y . Essa è computabile per la TdC,
altrimenti
ovvero osservando che cHalt x, y 1 U x, y .
3. È banale, in quanto x Dom cI x Wx . Quindi Dom cI Wx x , quindi cI non può
essere computabile.
Lemma
(dell’inclusione)
Lemma
Sia g x computabile.
Teorema
(1ª caratterizzazione dei predicati PD)
Teorema
(2ª caratterizzazione dei predicati PD: ricerca non limitata)
Il teorema precedente mostra che le PdSD possono essere sempre convertite nella forma di una
ricerca illimitata di un numero avente una proprietà espressa sotto forma di predicato decidibile.
In maniera naturale questa ricerca verrà effettuata provando per 0,1,2, fino a trovare tale numero, se il
programma si ferma. Se tale numero non esiste, il programma non si fermerà e ciò è proprio il significato della
parziale decidibilità di un predicato.
Teorema
(Quantificazione esistenziale dei predicati PD)
Il predicato y | M x, y è PD.
Dal teorema precedente, R x, y, z , decidibile, tale che M x, y z | R x, y , z . Abbiamo
y | M x, y y z | R x, y , z w | R x, w 1 , w 2 , dove w è una CE della coppia y, z .
Quindi R x, w R x, w 1 , w 2 è decidile e, per il teorema precedente, y | M x, y è PD.
Questo teorema indica che i predicati PD sono chiusi rispetto alla quantificazione esistenziale.
Corollario
Sia M x, y1 , ym un predicato PD.
Il predicato y , y
1 m | M x, y1, ym è PD.
Lemma
1. Il predicato x E è PD. ( n)
y
2. Il predicato W è PD.x
Teorema
(decidibilità dagli opposti)
Il teorema precedente fornisce una dimostrazione alternativa della non parziale decidibilità di I x .
Teorema
(predicabilità di una funzione)
3. Insiemi ricorsivi
insiemi non sono ricorsivi: x | x TOT , x | x W , x |
x x
0 .
Teorema
Siano A e B insiemi ricorsivi.
Gli insiemi A B, A B, A B e A sono ricorsivi,
Siano M A x x A e M B x x B . Per ipotesi, essi sono decidibili. Allora, tali saranno
pure M A x M B x x A x B M A B x , M A x M B x x A x B M A B x ,
M A x M B x x A x B M A B x e M A x x A M A x .
Elenchiamo alcuni insiemi RE, ma non ricorsivi, noti: x | x Wx , x | Wx , Ran f (con f computabile).
Lemma
(dell’inclusione)
Teorema
(del dominio)
Sia A .
A è RE sse A è il dominio di una funzione unaria computabile.
A è RE x A è PD (per la 1ª caratterizzazione dei predicati PD)
g C1 | x A x Dom g g C1 | A Dom g .
Secondo il teorema precedente, possiamo enumerare (con ripetizioni) tutti gli insiemi RE,
enumerando i vari domini W0 , W1 ,W2 , .
Teorema
Sia A .
A è RE sse R x, y decidibile tale che x A y | R x, y .
L’insieme x | y1 , ym | M x, y1 , ym è RE.
Per il corollario al teorema sulla quantificazione esistenziale dei predicati PD, anche
y1 , ym | M x, y1, ym è PD, per cui x | y1 , ym | M x, y1 , ym è RE.
Teorema
(enumarabilità dagli opposti)
Sia A .
A è ricorsivo sse A e A sono entrambi RE.
) Sia A ricorsivo. Anche A lo è. Per il lemma dell’inclusione, entrambi sono PD.
) Siano A e A entrambi RE. Allora R x, y , S x, y decidibili, tali che x A y | R x, y
e x A y | S x, y . Di conseguenza, x y | vale R x, y o S x, y , ma non entrambi.
Teorema
(Caratterizzazione degli insiemi RE)
Sia A .
Le seguenti asserzioni sono equivalenti:
a) A è RE
b) A oppure A è il codominio di una funzione unaria computabile e totale
c) A è il codominio di una funzione n -aria computabile (parziale)
a b) Sia A RE e non vuoto, e sia a A . Allora, f | A Dom f e sia e | f e .
x se Pe x in al più t passi
Definiamo g x, t : nel primo caso, otteniamo x , che
a altrimenti
appartiene ad A perché A Dom f e Pe computa f ; nel secondo caso, a A per ipotesi.
Quindi, A Ran g , e g è computabile e totale, per com’è definita. Per trovare la funzione
della tesi, che chiamiamo h , basta porre h z g z 1 , z 2 e osservare che Ran g Ran h .
Un’altra caratterizzazione informale degli insiemi RE è quella per cui esiste una procedura
effettiva in grado di generare tutti gli elementi. Infatti, se un insieme è così generato, possiamo
definire la funzione f tale che, per ogni i , f i sia l’ (i 1) -esimo elemento generato da tale
procedura. Per la TdC, f è computabile, e avremo A Ran f .
Teorema
Sia Tx x | x TOT .
Tx non è RE.
Per assurdo, Tx sia RE. Allora, per il teorema precedente, f C1 | Tx Ran f e poniamo
g x f x x 1 , che sarà totale e computabile. Per questo motivo, n | g f n , e
avremo f n n g n f n n 1 , che è assurdo. Quindi Tx non è RE.
Teorema
Siano A e B RE.
A B e A B sono RE.
Ovviamente se A e B , A B e A B sono entrambi vuoti e quindi RE.
Altrimenti, per il teorema sulla caratterizzazione degli insiemi RE, f , g C1 , totali, tali che
A Ran f , B Ran g .
x
f 2 se x è pari
Definiamo h x e, dato che h C1 e A B Ran h , A B è RE.
g x 1 altrimenti
2
Sia A infinito.
A è ricorsivo sse è il codominio di una funzione unaria, totale e computabile,
crescente.
) Sia A ricorsivo. Allora può essere enumerato dalla seguente funzione definita per
f 0 y y A
ricorsione: . Essa è ovviamente crescente e unaria, ed è totale
f n 1 y y A f n y
e computabile, perché ottenuta mediante composizione e ricorsione, e per la ricorsività di A .
) Sia f C1 | A Ran f , con f totale e crescente, cioè n f n n .
Teorema
(Ricorsività dei sottoinsiemi)
Lemma
Sia f finita.
f è computabile,
Teorema
(di Rice-Shapiro)
Sia A C1 | x | x A è RE.
Bibliografia