1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo...

50
Premessa La presente raccolta di appunti fornisce un aiuto per la preparazione dell’esame di Informatica 2, corso di laurea triennale in Matematica, Università di Udine. Al momento queste note sono largamente incomplete, e probabilmente anche nella forma finale certi argomenti visti a lezione non compariranno. 1 La tesi di Church L’obbiettivo è dare il quadro generale al cui interno si sviluppa la teoria della calcolabilità. Le definizioni di macchine di Turing, lambda calcolo, macchine URM, etc. non vengono date, ma basta sapere che descrivono modelli computazionali astratti attraverso i quali è possibile svolgere computazioni. La classe di funzioni Ric sui numeri naturali verrà definita in seguito. TEOREMA 1 Una funzione f N k N è calcolata da una macchina di Turing se e solo se è ricorsiva. TEOREMA 2 Una funzione f N k N è rappresentabile nel λ-calcolo se e solo se è ricorsiva. TEOREMA 3 Una funzione f N k N è calcolata da un macchina URM se e solo se è ricorsiva. .....TEOREMI SIMILI APPROSSIMAZIONE TESI DI CHURCH Ogni metodo di computazione basato su un sistema di regole di calcolo meccaniche si scontra contro un limite apparentemente non valicabile: riesce a calcolare, sui numeri naturali, tutte le funzioni ricorsive, ma le funzioni non ricorsive non vengono calcolate. Precisiamo meglio il quadro. Metodo effettivo ha il significato specializzato di: metodo nel quale ogni passo è predeterminato con precisione ed è inoltre certo di produrre la risposta in un numero finito di passi.” 1 (Rosser 1939) “Un metodo, o procedura M , per aggiungere un risultato desiderato è chiamato effettivo o meccanico solo nel caso in cui: 1. M consiste di un numero finito di istruzioni non ambigue (ogni istruzione essendo espressa attraverso un numero finito di simboli); 2. M , se eseguito senza errori, produrrà il risultato desiderato in un numero finito di passi; 3. M può (in pratica o in linea di principio) essere eseguito da un essere umano, senza alcun aiuto da parte di un macchina, servendosi solo di carta e penna; 4. Per essere eseguito, M non richiede da parte dell’utente umano nessuna intuizione, né ingegno.” 2 (Stanford Encyclopedia of Philosophy - 2002) La Tesi di Church-Turing 3 Le macchine di Turing possono fare qualunque cosa che possa essere portata a termine da un metodo effettivo. Se accettiamo la Tesi di Church (congettura non dimostrabile!), otteniamo alcune conseguenze notevoli, fra le quali: 1 Effective method is used in the rather special sense of a method each step of which is precisely predetermined and which is certain to produce the answer in a finite number of steps” 2 A method, or procedure, M, for achieving some desired result is called effective or mechanical just in case: M is set out in terms of a finite number of exact instructions (each instruction being expressed by means of a finite number of symbols); M will, if carried out without error, produce the desired result in a finite number of steps; M can (in practice or in principle) be carried out by a human being unaided by any machinery save paper and pencil; M demands no insight or ingenuity on the part of the human being carrying it out. 3 spesso abbreviata semplicemente in “Tesi di Church” 1

Transcript of 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo...

Page 1: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

PremessaLa presente raccolta di appunti fornisce un aiuto per la preparazione dell’esame di Informatica 2, corso dilaurea triennale in Matematica, Università di Udine.Al momento queste note sono largamente incomplete, e probabilmente anche nella forma finale certi argomentivisti a lezione non compariranno.

1 La tesi di ChurchL’obbiettivo è dare il quadro generale al cui interno si sviluppa la teoria della calcolabilità. Le definizioni dimacchine di Turing, lambda calcolo, macchine URM, etc. non vengono date, ma basta sapere che descrivonomodelli computazionali astratti attraverso i quali è possibile svolgere computazioni. La classe di funzioni Ricsui numeri naturali verrà definita in seguito.

TEOREMA 1Una funzione f ∶ Nk → N è calcolata da una macchina di Turing se e solo se è ricorsiva.

TEOREMA 2Una funzione f ∶ Nk → N è rappresentabile nel λ-calcolo se e solo se è ricorsiva.

TEOREMA 3Una funzione f ∶ Nk → N è calcolata da un macchina URM se e solo se è ricorsiva.

.....TEOREMI SIMILI

APPROSSIMAZIONE TESI DI CHURCHOgni metodo di computazione basato su un sistema di regole di calcolo meccaniche si scontracontro un limite apparentemente non valicabile: riesce a calcolare, sui numeri naturali, tuttele funzioni ricorsive, ma le funzioni non ricorsive non vengono calcolate.

Precisiamo meglio il quadro.

“Metodo effettivo ha il significato specializzato di: metodo nel quale ogni passo è predeterminatocon precisione ed è inoltre certo di produrre la risposta in un numero finito di passi.”1

(Rosser 1939)

“Un metodo, o procedura M , per aggiungere un risultato desiderato è chiamato effettivo omeccanico solo nel caso in cui:

1. M consiste di un numero finito di istruzioni non ambigue (ogni istruzione essendo espressaattraverso un numero finito di simboli);

2. M , se eseguito senza errori, produrrà il risultato desiderato in un numero finito di passi;3. M può (in pratica o in linea di principio) essere eseguito da un essere umano, senza alcun

aiuto da parte di un macchina, servendosi solo di carta e penna;4. Per essere eseguito, M non richiede da parte dell’utente umano nessuna intuizione, né

ingegno.”2

(Stanford Encyclopedia of Philosophy - 2002)

La Tesi di Church-Turing3

Le macchine di Turing possono fare qualunque cosa che possa essere portata a termine da unmetodo effettivo.

Se accettiamo la Tesi di Church (congettura non dimostrabile!), otteniamo alcune conseguenze notevoli, frale quali:

1“Effective method is used in the rather special sense of a method each step of which is precisely predetermined and whichis certain to produce the answer in a finite number of steps”

2A method, or procedure, M , for achieving some desired result is called effective or mechanical just in case:M is set out in terms of a finite number of exact instructions (each instruction being expressed by means of a finite number ofsymbols);M will, if carried out without error, produce the desired result in a finite number of steps;M can (in practice or in principle) be carried out by a human being unaided by any machinery save paper and pencil;M demands no insight or ingenuity on the part of the human being carrying it out.

3spesso abbreviata semplicemente in “Tesi di Church”

1

Page 2: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

1. Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f ∶ Nk → N, alloraquesta funzione è necessariamente ricorsiva.

2. la nozione di algoritmo (da intendersi come sinonimo di “metodo effettivo”) si chiarifica completamente,senza possibilità di ambiguità: un procedimento è algoritmico se e solo se può essere implementato dauna macchina di Turing;

3. da un punto di vista tecnico, la tesi di Church è uno strumento potente per semplificare dimostrazionialtrimenti lunghe e complicate: per dimostrare, ad esempio, che una data funzione è calcolata da unamdT, è sufficiente esibire un qualunque algoritmo A che la calcola: per la tesi di Church, dobbiamo soloessere sicuri che A sia effettivo: se è così, allora ad A potrà essere associata un mdT che lo implementa(ovviamente non conosceremo i dettagli della mdT, ma la Tesi di Church ci garantirà la sua esistenza).

2 DominiFissiamo la notazione.

Notazione 2.1. Sia data f ∶X → Y funzione, non necessariamente totale.

1. Scriviamo f(x) ↓ se il valore f(x) ∈ Y è definito, ossia se esiste y ∈ Y tale che f(x) = y. Se f(x) = yscriveremo anche f(x) ↓ y “sull’argomento x la funzione f converge al valore y”.

2. Se ¬f(x) ↓, scriveremo f(x) ↑ (“f diverge sull’argomento x”).

3. Il dominio di f è l’insieme dom(f) = x ∈X ∣ f(x) ↓

4. Il codominio o range di f è l’insieme cod(f) = y ∈ Y ∣ ∃x ∈ dom(f).f(x) = y

5. Una funzione si dice totale se dom(f) =X.

6. Quando si parla di funzioni parziali, si vuole enfatizzare il fatto che si sta lavorando non solo con lefunzioni totali, ma anche con funzioni tali che dom(f) ⊂ N(inclusione propria).

7. Sia X = N, quindi f ∶ N→ Y . Dato un sottinsieme B ⊆ Y , diciamo che f è una enumerazione di B, se:

(a) f è totale;

(b) f è surgettiva su B, ossia B = cod(f) = f(0), f(1), f(2), . . .

Non si richiede che f sia iniettiva. Esempio: f(x) = xmod2 è una (inutile) enumerazione dell’insieme0,1.

8. Sia Y = N, quindi f ∶X → N. Diciamo che f è una codifica di X se:

(a) f è totale;

(b) f è iniettiva.

Non si richiede che f sia anche surgettiva. Quando ciò si verificasse, seguirebbe che f−1 sarebbe unaenumerazione di X.

Il problema della calcolabilità di una funzione

f ∶X → Y

richiede innanzitutto la possibilità di una rappresentazione effettiva degli elementi di X e Y . Se Y è l’insiemedei numeri reali, ed X = 0, la funzione

f(0) = πnon risulta calcolabile, per l’impossibilità di una rappresentazione finita esatta di π. Di fatto, se un dominioX consente di rappresentare in modo effettivo (quindi finito) i suoi elementi, allora tali rappresentazioniconsisteranno di sequenze più o meno lunghe, ma sempre finite, di elementi di qualche alfabeto (un alfabeto èun qualunque insieme di caratteri). Tali sequenze potranno essere codificate in modo iniettivo (spesso anchebigettivo) attraverso numeri naturali, e quindi X verrà rappresentato, modulo codifica, attraverso qualcheopportuno sottinsieme di N. Stiamo in sostanza dicendo che la teoria della calcolabilità può essere fattoavendo come unico insieme di riferimento l’insieme dei numeri naturali. Chiariremo sotto tale aspetto.

2

Page 3: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Esercizio 2.2. Provare che l’insieme N × N delle coppie (n,m) di numeri naturali può essere messo incorrispondenza bigettiva con N, e che tale bigezione è effettiva.

Soluzione Consideriamoπ(n,m) = (n2 + 2nm +m2 + n + 3m)/2

π è effettiva (delle operazioni di somma, elevamento a potenza, prodotto, quoziente, conosciamo gli algoritmi).Determiniamo l’inversa π−1, che consiste di due funzioni

π1 ∶ N→ Nπ2 ∶ N→ N

tali che

π1(π(n,m)) = nπ2(π(n,m)) =m

e inoltre

π(π1(z), π2(z)) = z

Ecco l’algoritmo per calcolare entrambe le funzioni:- dato z ∈ N, determina il più piccolo naturale s tale che

(s + 1)(s + 2)/2 > z

π1(z) = (s + 1)(s + 2)/2 − z − 1π2(z) = z − s(s + 1)/2

π1 e π2 sono calcolabili e determinano π−1. Ad esempio, se z = 30, si ottiene s = 7, π1(z) = 5, π2(z) = 2.D’altra parte

π(5,2) = (49 + 5 + 6)/2 = 30

Esercizio 2.3. Determinare una bigezione fra triple di numeri naturali e IN.

Soluzione la bigezione cercataζ ∶ N ×N ×N→ N

puoò essere definta così:

ζ(a, b, c) = π(π((a, b), c)ed ha per inversa la terna di funzioni (ζ1, ζ2, ζ3) definite così:

ζ1(p) = π1(π1(p))ζ2(p) = π2(π1(p))ζ3(p) = π2(p)

Si ha ad esempio:

ζ1(ζ(a, b, c)) = π1(π1(π(π(a, b), c)))= π1(π(a, b))= a

Esercizio 2.4. Generalizzare l’Esercizio 2.3: determinare, per ogni arietà k ∈ N, una bigezione fra Nk e N.

3

Page 4: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

3 Funzioni primitive ricorsivePer una funzione g ∶ Nk → N, scriveremo spesso g(n) al posto di g(n1, . . . , nk). All’inizio trattiamo le funzionitotali (quindi dom(g)) = N). Ma in seguito verranno considerate anche funzioni parziali: occorrerà quindiprestare attenzione, nel formulare definizioni/dimostrare risultati, alle ipotesi: se le funzioni sono totali, oparziali, perché tecnicamente alcuni dettagli cambiano. Per una funzione parziale, scriviamo

f(x) ↑ ⇔ f(x) non è definita, ossia x ∉ dom(f)

Definiamo

C = f ∶ Nk → N ∣ f è calcolata da qualche metodo effettivo

Definizione 3.1. Definiamo le funzioni zero Z ∶ N → N, successore succ ∶ N → N e proiezione i-esimaP(k)i ∶ Nk → N: ∀n,n1, . . . nk ∈ N,

Z(n) = 0succ(n) = n + 1

P(k)i (n1, . . . , nk) = ni

Ad esempio, P(5)2 (n1, n2, n3, n4, n5) = n2. Spesso nelle funzioni proiezioni ometteremo l’apice.

La prossima definizione definisce l’usuale composizione di funzioni, per funzioni non necessariamente totali.

Definizione 3.2. Siano date funzioni g ∶ Nk → N e per ogni 1 ≤ i ≤ k, fi ∶ Np → N. Definiamo percomposizione la funzione h ∶ Np → N, mediante

h(n) = z⇔ ∃u1, . . . uk ∈ N.[∀1 ≤ i ≤ k.fi(n) = ui] ∧ g(u1, . . . , uk) = z

(e quindi: h(n) ↑ se e solo se fi(n) ↑ per qualche i, oppure g(u1, . . . , uk) ↑).Scriveremo anche h = Compk(g, f1, . . . , fk), oppure ancora g (f1, . . . , fk).

Ad esempio, la funzione f(x, y) = x + 1 può essere ottenuta come composizione Comp(succ,P(2)1 ), ovvero

succ P(2)1 .

La prossima definizione introduce la ricorsione primitiva.

Definizione 3.3. Siano date funzioni f ∶ Nk → N e g ∶ Nk+2 → N. Definiamo la funzione h ∶ Nk+1 → N perricorsione primitiva mediante

h(n1, . . . , nk,0) = f(n1, . . . nk)h(n1, . . . , nk, y + 1) = g(n1, . . . , nk, y, h(n1, . . . , nk, y))

Scriveremo anche h =R(g, f).

Osservazione 3.4. Si osservi che, attraverso una semplice dimostrazione per induzione su y, si prova cheR(g, f) è ben definita e totale, se f e g sono funzioni totali.

Quando k = 1, la funzione f ∶ N0 → N è identificabile con un numero, poiché N0 = ⋆, quindi f = f(⋆) ∈ N.Da un punto di vista intuitivo, se f, g ∈ C, anche h = R(g, f) ∈ C: per calcolare h(x, y) si determina unacomposizione “telescopica” della forma g(x, y − 1, g(x, y − 2, g(. . . g(x,0f(x) . . .))). Ad esempio:

h(x,3) = g(x,2, h(x,2))= g(x,2, g(x,1, h(x,1)))= g(x,2, g(x,1, g(x,0, h(x,0))))= g(x,2, g(x,1, g(x,0, f(x))))

Questo processo è chiaramente effettivo.

Definizione 3.5. 1. La classe PRIM delle funzioni primitive ricorsive è la più piccola classe di funzionisui naturali tali che:- Z, succ,P

(k)i ∈ PRIM (i, k ∈ N);

- se g ∶ Nk → N, fi ∶ Np → N ∈ PRIM (1 ≤ i ≤ k) allora Comp(g, f1, . . . , fk) ∈ PRIM;- se g ∶ Nk+2 → N, f ∶ Nk → N ∈ PRIM, allora R(g, f) ∈ PRIM.

4

Page 5: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

2. Chiamiamo PRIM(k) la classe di tutte le funzioni primitive ricorsive di arietà k.

Definiamo T OT come la classe di tutte le funzioni totali sui naturali. Il prossimo lemma è ovvio per il fattoche le funzione base P

(k)i ,Z, succ sono in T OT , e che Comp(g, f1, . . . , fk), R(g, f) sono totali quando gli

argomenti sono funzioni totali (si veda anche l’Osservazione 3.4).

Lemma 3.6. PRIM ⊆ T OT .

Lemma 3.7 (Lemma di scambio). Sia f ∶ Nk → N primitiva ricorsiva e sia σ ∶ [1, k] → [1, p] una qualunquefunzione surgettiva (quindi p ≤ k). Possiamo definire la funzione

h(x1, . . . xp) = f(xσ(1), . . . , xσ(k))

Allora h è primitiva ricorsiva.

Dimostrazione Immediata per chiusura rispetto alla composizione, poiché (scriviamo x per (x1, . . . , xp),

h(x) = f(P(k)σ(1)(x), . . . ,P

(k)σ(k)(x))

Esempio: Supponiamo che f(x, y, z, t) sia primitiva ricorsiva. Segue allora dal precedente lemma che lafunzione h(x, y) = f(y, y, y, x) è primitiva ricorsiva.

Nonostante la definizione sia limitata a pochi e semplici elementi, RIC è molto vasta. Vedremo nel seguitoche cattura tutte le funzioni aritmetiche note.

Esercizio 3.8. Si provi che la funzione sum(x, y) = x + y è primitiva ricorsiva.

Soluzione sum è definibile attraverso lo schema di ricorsione primitiva, come segue:

sum(x,0) = xsum(x, y + 1) = succ(sum(x, y))

Ossia: sum =R(f, g), dove f = P(1)1 (ovvero la funzione identità Id), g = succP

(3)3 , per cui g(x, y, z) = succ(z).

La conclusione segue allora dalla chiusura di PRIM per composizione e ricorsione primitiva.

Corollario 3.9. Se ∀1 ≤ i ≤ m, f1 . . . fm ∶ Nk → N sono primitive ricorsive, allora h(x) = ∑mi=1 fi(x) èprimitiva ricorsiva.

Dimostrazione h può infatti essere definita attraverso m − 1 composizioni successive:

h = sum (f1, sum (f2, . . . , sum (fm−1, fm) . . .))

Esercizio 3.10. Si provi che la funzione prod(x, y) = x ∗ y è primitiva ricorsiva.

Soluzione prod è definibile attraverso lo schema di ricorsione primitiva, come segue:

prod(x,0) = 0prod(x, y + 1) = sum(x,prod(x, y))

Ossia: prod = R(f, g), dove f = Z, g = Comp(sum,P(3)1 ,P

(3)3 ), o meno formalmente g(x, y, z) = x + z. La

conclusione segue allora dalla chiusura di PRIM per composizione e ricorsione primitiva, usando l’esercizioprecedente per il risultato sum ∈ PRIM.

Esercizio 3.11. Si provi che l’elevamento a potenza pot(x, y) = xy è primitiva ricorsiva.

Soluzione Si ha

pot(x,0) = 1pot(x, y + 1) = prod(x,pot(x, y))

Quindi pot =R(f, g) dove f = Cost1, e g(x, y, z) = prod(x, z) sono entrambe primitive ricorsive.

Corollario 3.12. Se f1 . . . fm ∶ Nk → N sono primitive ricorsive, allora la produttoria h(x) =∏1≤i≤m fi(x) èprimitiva ricorsiva.

Dimostrazione Come per la somma (dimostrazione Corollario 3.9): h è infatti definita attraverso m − 1composizioni successive che usano prod.

5

Page 6: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Esercizio 3.13. Provare che per ogni arietà k, la funzione Z(k)(x1, . . . , xk) = 0 è primitiva ricorsiva.

Soluzione Serve solo lo schema di composizione: Z(k) = Z P(k)1 .

Esercizio 3.14. Provare che ogni funzione costante Cost(cx1, . . . , xk) = c è primitiva ricorsiva.

Soluzione Anche in questo caso basta il solo schema di composizione, iterato c volte:

Cost=cComp(succ,Comp(succ, . . .Comp(succ,Z(k)) . . .))

Esercizio 3.15. Si provi che la funzione predecessore pred(y) definita mediante

pred(0) = 0pred(y) = y − 1 se y > 0

è primitiva ricorsiva.

Soluzione È sufficiente riformulare la definizione così:

pred(0) = 0pred(y + 1) = y

pred =R(f, g), dove scegliamo f = 0 (ricordarsi che siamo nel caso k = 0), e g = P(2)2 , per cui g(y, z) = y.

Esercizio 3.16. Si provi che la funzione differenza sui naturali diff(x, y) definita mediante

diff(x, y) = x − y se x ≥ y0 altrimenti

è primitiva ricorsiva. Scriveremo spesso x y al posto di diff(x, y).

Soluzione diff può essere definita per ricorsione primitiva come segue:

diff(x,0) = xdiff(x, y + 1) = pred(diff(x, y))

diff =R(f, g) dove f = Id, g = pred P(3)3 , per cui g(x, y, z) = pred(z).

Esercizio 3.17. Si provi che a funzione segno sg(x) definita mediante

sg(x) = 0 se x = 01 altrimenti

è primitiva ricorsiva.

Soluzione Usare lo schema di ricorsione primitiva considerando f = 0 e g = Cost1.

Esercizio 3.18. Si provi che a funzione segno complementato sg(x) definita mediante

sg(x) = 1 se x = 00 altrimenti

è primitiva ricorsiva.

Soluzione Come esercizio precedente, con f = 1, g = Z.

Esercizio 3.19. Provare che la funzione modulo mod(x, y) = ∣x − y∣ è primitiva ricorsiva.

Soluzione Basta osservare che ∣x − y∣ = diff(x, y) + diff(y, x). Per esteso

mod = sum (diff (P(2)1 ,P

(2)2 ),diff (P

(2)2 ,P

(2)1 ))

Esercizio 3.20. Provare che le funzioni min e max che restituiscono rispettivamente il minimo e il massimofra due argomenti sono primitive ricorsive.

Soluzione Basta osservare max(x, y) = x + diff(y, x). min(x, y) = x − diff(x, y). Entrambe le funzioni sonoquindi ottenute per compozione a partire da funzioni primitive ricorsive.

6

Page 7: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

3.1 Funzioni resto rm e quoziente qt

rm(x, y) e qt(x, y) sono definiti rispettivamente come come il resto e il quoziente della divizione y/x (esempio:rm(3,13) = 1, qt(3,13) = 4). Al fine di avere funzioni totali si pone rm(0, y) = y, qt(0, y) = 0. Si osservi checon questa scelta resta valida la proprietà che vale con divisore non nullo:

y = x ∗ qt(x, y) + rm(x, y)(quale nota proprietà è invece falsificata dalla convenzione sopra adottata, quando x = 0?)

Definizione ricorsiva di rm.

rm(x,0) = 0rm(x, y + 1) = (rm(x, y) + 1)sg(∣x − rm(x, y) − 1∣)

Quindi rm = Ric(f, g), dove f(x) = Cost0 e g(x, y, z) = (z + 1)sg(∣x − z − 1∣).Definizione per ricorsione primitiva del quoziente.

qt(x,0) = 0qt(x, y + 1) = qt(x, y) + sg(rm(x, y + 1))

qt = Ric(f, g), dove f(x) = Cost0 e g(x, y, z) = z + sg(rm(x, y + 1)).

3.2 Sommatorie/ProduttorieData una funzione g ∶ Nk+1 → N, possiamo definire:

h(x, z) = ∑w<z

g(x,w)

k(x, z) = ∏w<z

g(x,w)

In base alla definizione, qualunque sia la funzione g, si ha h(x,0) = 0, k(x,0) = 1, per via delle convenzioninote su sommatorie e produttorie vuote.

Lemma 3.21. Se g ∈ PRIM, allora anche h, k ∈ PRIM.

Dimostrazione È sufficiente osservare:

h(x,0) = 0h(x, y + 1) = h(x, y) + g(x, y)

k(x,0) = 1k(x, y + 1) = k(x, y) ∗ g(x, y)

Pertanto risulta:h = Ric(u, v), dove u(x) = 0, e v(x, y, z) = z + g(x, y);k = Ric(u′, v′), dove u′(x) = 1, e v′(x, y, z) = z ∗ g(x, y).

3.3 Su predicati e insiemiUn predicato P su Nk è una funzione P ∶ Nk → Bool, dove Bool = tt,ff. Si scrive spesso P (x) comeabbreviazione di P (x) = tt (“P (x) è vero”), e ¬P (x) come abbreviazione di P (x) = ff. (“P (x) è falso”).Diciamo che un predicato P è infinito se tale è il suo dominio di verità, definito come x ∣ P (x (questoinsieme è chiamato, più sotto, Truth(P )).Nel definire un predicato, useremo il simbolo ≡, quindi

P (x) ≡ [definizione]

7

Page 8: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

La equivalenza di predicati viene invece espressa attraverso l’usuale simbolo ⇔: ad esempio, scriveremo

[x + 2 > 1]⇔ [x + 1 > 0]

A P si associa la funzione caratteristica:

χP (x) = 1 se P (x)0 se ¬P (x)

che in sostanza compone il predicato con la mappa b ∶ Bool→ 0,1 che manda “vero” in 1, “falso” in 0.

A ogni predicato corrisponde in modo bigettivo un insieme Truth(P ):

Truth(P ) = x ∣ P (x)

Viceversa, dato A ⊆ Nk, gli si associa il predicato E(A):

E(A)(x) = tt⇔ x ∈ AE(A)(x) = ff ⇔ x ∉ A

Le due corrispondenze sono l’una l’inversa dell’altra

E(Truth(P )) = PTruth(E(A)) = A

e “rispettano le operazioni”. Ad esempio:

E(A ∪B) = E(A) ∨ E(B)E(A ∩B) = E(A) ∧ E(B)E(A) = ¬E(A)

E(A ∪B) = E(A)⇒ E(B)E(A ∖B) = ¬(E(A)⇒ E(B))

Questa corrispondenza fra insiemi a predicati porta spesso a confondere le operazioni (ad esempio: spesso sidice “intersezione fra due predicati” in luogo di “congiunzione di due predicati”): tale confusione è comunquedel tutto innocua.Nel seguito introdurremo definizioni, classificazioni e risultati per i predicati, con immediata implicita esten-sione agli insiemi. Se si vuole trasferire una nozione dai predicati agli insiemi, basta applicare la mappa E(_)e le corrispondenze del caso. Ad esempio, la definizione di funzione caratteristica per un insieme A è comesegue:

χA(x) = χE(A)(x) = 1 se x ∈ A0 se ¬(x ∈ A) = 1 se x ∈ A

0 se x ∈ A

3.4 Predicati (e insiemi) primitivi ricorsiviDefinizione 3.22. Dato P ∶ Nk → Bool, diciamo che P è primitivo ricorsivo se la sua funzione caratteristicaχP è in PRIM.PRIMIT(Nk) è la famiglia di tutti i predicati (e anche di tutti gli insiemi) primitivi ricorsivi su Nk. PRIMITè abbreviazione di ⋃k∈N PRIMIT(Nk), pertanto P ∈ PRIMIT significa che P è primitivo ricorsivo (senzainformazione sull’arietà).

ESEMPI01. Sia P ≡ [x è pari]. Si ha χP (x) = sg(rm(2, x)). Quindi, essendo composta di funzioni che stanno inPRIM, χA ∈ PRIM.02. B = (x, y) ∣ x ≤ y. B ∈ PRIMIT, infatti χB(x, y) = sg(x y).03. Q ≡ [x = y]. Q ∈ PRIMIT. Infatti χQ(x, y) = sg(∣x − y∣).04. D = (a, b, c) ∣ a3 = b3 + c3. D ∈ PRIMIT. Infatti χD(a, b, c) = sg(∣a3 − b3 − c3∣).In molti casi i predicati P si usano hanno questa forma:

P (x) ≡ [f(x) = k]per qualche opportuna funzione f e numero k ∈ N. Il prossimo lemma tratta questo tipo di predicati.

8

Page 9: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Lemma 3.23. Sia f ∶ Nk → N ∈ PRIM, k ∈ N. Allora P (x) ≡ [f(x) = k] è primitivo ricorsivo.

Dimostrazione χP (x) = sg(∣f(x) − k∣) è primitiva ricorsiva.

Esercizio 3.24. Si provi che il predicato

div(x, y) ≡ x divide y

è primitivo ricorsivo (poniamo div(0,0) = tt e div(0, y + 1) = ff).

Soluzione div(x, y)⇔ [rm(x, y) = 0]. La soluzione deriva allora dal precedente Lemma 3.23.

Esercizio 3.25. Si provi che la funzione ND ∶ N → N (numero divisori) che conta quanti divisori ha unnumero (si ponga (ND(0) = 1) è primitiva ricorsiva.

Soluzione Si ha

ND(x) = ∑y<x+1

χdiv(y, x)

Basta pertanto usare il Lemma 3.21 e l’esercizio precedente.

Esercizio 3.26. Si provi che la funzione lg ∶ N→ N logaritmo intero in base 2 è primitiva ricorsiva (esempi:lg(17) = 4; lg(68) = 6). Si ponga lg(0) = 0.

Soluzione lg può essere definito per ricorsione primitiva tenendo conto che lg(y + 1) = lg(y), salvo quandoy + 1 è una potenza di due, nel qual caso il valore precedente lg(y) va incrementato di una unità. Per saperese y + 1 è una potenza di due possiamo sfruttare questa proprietà: y + 1 è potenza di due se e solo se 2lg(y)

divide y + 1.4. Consideriamo allora

h(1) = 0

h(y + 1) = h(y) + sg(rm(2lg(y), y + 1))

Si ha h = Ric(0, g) dove g(y, z) = z + sg(rm(2z, y + 1). g ∈ PRIM, essendo composta di funzioni primitivericorsive, e quindi anche h ∈ PRIM. Tuttavia h non è ancora la soluzione corretta: i risultati, per n ≠ 0, sono“shiftati” di una unità: h(n) = lg(n) + 1: ad esempio: h(4) = 3. Basterà allora comporre con il predecessore:

lg(y) = h(pred(y))

3.5 Proprietà di chiusura di funzioni, predicati, insiemi primitivi ricorsiviLemma 3.27. Siano P,Q ∈ PRIMIT(Nk). Allora P ∨Q, P ∧Q e ¬P appartengono a PRIMIT.

Dimostrazione χP e χQ sono per ipotesi in PRIM. Abbiamo quindi:

χP∨Q(x) = sg(χP (x) + χQ(x))χP∧Q(x) = χP (x) ∗ χQ(x)χ¬P (x) = sg(χP (x))

In tutti e tre i casi le nuove funzioni caratteristiche sono state ottenute componendo funzioni primitivericorsive, e sono quindi primitive ricorsive.

Diamo, per una volta, la traduzione da predicati a insiemi: il Lemma 3.27 diventa:

Lemma 3.28. Siano A,B insiemi primitivi ricorsivi. Allora A ∪B, A ∩B e A sono primitivi ricorsivi.

Dato un predicato P (x, y) su Nk+1 formiamo due nuovi predicati:

Q1(x,w) ≡ ∃z < w.P (x, z)Q2(x,w) ≡ ∀z < w.P (x, z)

Lemma 3.29. P ∈ PRIMIT ⇒ Q1,Q2 ∈ PRIMIT.4Osservazione dello studente Davide Martincigh.

9

Page 10: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Dimostrazione Sia χP la funzione caratteristica di P . Abbiamo

χQ1(x,w) = sg(∑z<w

χP (x, z))

χQ1(x,w) = ∏z<w

χP (x, z))

Concludiamo allora per il Lemma 3.21.

Consideriamo ora funzioni f1, . . . fk primitive ricorsive, dove k è la arietà di un predicato P . Possiamo alloraformare il nuovo predicato

Q(u) ≡ P (f1(u), . . . , fk(u))

Lemma 3.30. Se P ∈ PRIMIT e tutte le funzioni f1, . . . , fk sono primitive ricorsive, allora Q ∈ PRIMIT.

Dimostrazione Immediata:

χQ(u) = χP (f1(u), . . . , fk(u))

Quindi χQ è primitiva ricorsiva per chiusura di PRIM rispetto alla composizione, essendo tutte le funzioni asecondo membro primitive ricorsive.

Siano f1 . . . fn ∶ Nk → N e P1 . . . Pn ⊆ Nk. Richiediamo che i predicati Pi siano a due a due mutuamenteesclusivi (quindi (Pi ∧Pj)(x) = ff, per ogni 1 ≤ i ≠ j ≤ q) e che ⋁1≤i≤n Pi(x) = tt. Possiamo allora definire unafunzione per casi

h(x) =

⎧⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎩

f1(x) se P1(x)f2(x) se P2(x). . .fn(x) se Pn(x)

Con riferimento a quanto sopra, vale

Lemma 3.31. Se f1 . . . fn ∈ PRIM e P1 . . . Pn ∈ PRIMIT, allora h ∈ PRIM.

Dimostrazione Immediata, poichèh(x) = ∑

1≤i≤n(fi(x) ∗ χPi(x))

La tesi segue dalla chiusura di PRIM rispetto a composizione, somme e prodotti di funzioni primitive ricorsive.

3.6 Minimizzazione limitataLa minimizzazione limitata produce una funzione a partire da un predicato: a P (x, y) si associa la funzionemP (x, y) definita mediante

mP (x, y) = µz < y.P (x, z)La funzione mP viene calcolata con questo algoritmo:

(†) Cerca il più piccolo z < y tale che P (x, z) valga. Se tale valore esiste, restituiscilo comerisultato. Se non esiste, restituisci come risultato y.

Da questa definizione segue che, qualunque sia il predicato P , h(x,0) = 0.

Esercizio 3.32. Si rifletta sull’effettività della procedura (†). Si consideri in particolare il caso di un predicatodel tipo P (x, y) ≡ [g(x, y) = 0], dove g è una funzione calcolabile, ma non totale. (†) è effettivo?

ESEMPI01.Sia P (x, y) ≡ [x = y]. Allora

mP (x, y) = x se x ≤ yy altrimenti

10

Page 11: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

02. Sia P (x, y) ≡ [∣x − y∣ multiplo di 5 ∧ x pari ]. Si ha ad esempio:

mP (9,2) = 2mP (8,2) = 2mP (9,6) = 6mP (8,6) = 3

Verificare quanto segue:

mP (x, y) = rm(5, x) se x pari e rm(5, x) − 1 < yy altrimenti

Vale il seguente importante risultato.

Lemma 3.33. Se P (x, y) ∈ PRIMIT, allora mP (x, y) ∈ PRIM.

Dimostrazione mP può essere definita per ricorsione primitiva come segue:

mP (x,0) = 0

mP (x, y + 1) = mP (x, y) se ∃z ≤ y.P (x, z)y + 1 altrimenti

Osservando la definizione sopra, si vede che

mP = Ric(Cost0, g)

dove g è così definita

g(x, y, t) = t se ∃z ≤ y.P (x, z)y + 1 altrimenti

La dimostrazione è allora completa se dimostriamo che g è primitiva ricorsiva. Basta all’uopo osservare cheg è definita per casi da funzioni e predicati primitivi ricorsivi, e quindi è possibile applicare il Lemma 3.31:ricordiamo infatti che per il Lemma 3.29 il predicato ∃z ≤ y.P (x, z) ottenuto per quantificazione limitata dalpredicato P ∈ PRIMIT, è esso stesso primitivo ricorsivo. Possiamo allora concludere che g, e quindi mP , èprimitiva ricorsiva.

Osservazione 3.34. Si osservi che il lemma precedente risponde in parte alla domanda dell’Esercizio 3.32:se scegliamo P è primitivo ricorsivo, allora la procedura (†) si rivela effettiva.

3.7 Composizione con funzioni primitive ricorsiveQuesta breve sottosezione ha carattere di osservazione. I predicati primitivi ricorsivi restano tali quandocomposti con funzioni primitive ricorsive. I principali casi sono riassunti nel seguente lemma.

Lemma 3.35. Sia P (x, y) ∈ PRIMIT e g(x, u) ∈ PRIM. Consideriamo i seguenti predicati e funzioni, ottenutiper quantificazione limitata e minimizzazione limitata con limite dato da g:

Q1(x, u) = ∃z < g(x, u).P (x, z)Q2(x, u) = ∀z < g(x, u).P (x, z)m′(x, u) = µz < g(x, u).P (x, z)

Allora Q1,Q2 ∈ PRIMIT e m′ ∈ PRIM.

Dimostrazione È sufficiente applicare, nell’ordine, i Lemmi 3.29 e 3.33, e poi il Lemma 3.30.

ESEMPIO. Si consideri il seguente predicato.

Q(x,u) ≡ [∃z < 2(x2 + u2) + 1. x < z ∧ (z + 1) divide 10x]

Osserviamo che la funzione g(x,u) = 2(x2 + u2) + 1, è primitiva ricorsiva e che il predicato P (x, y) ≡ x <y∧ (y+1) divide 10x è primitivo ricorsivo. Pertanto applicando il precedente lemma risulta che Q ∈ PRIMIT.

11

Page 12: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

3.8 Predicati/funzioni di primalitàDefinizione 3.36. Introduciamo il predicato di primalità su N:

Prime(x) ≡ [x è un numero primo]

Lemma 3.37. Prime(x) è primitivo ricorsivo.

Dimostrazione Si osservi che se x = 1, ND(x) = 1, mentre se x ≠ 1 è non primo, allora ND(x) > 2. Quindi

Prime(x)⇔ [ND(x) = 2]

Si conclude in base all’Esercizio 3.25 e al Lemma 3.23.Introduciamo la nota funzione

p ∶ N→ N

che enumera i numeri primi (convenzione: lo “0-esimo” numero primo è 0, e ovviamente non è da considerarsiun numero primo). Quindi:

p(0) = 0p(1) = 2p(2) = 3p(3) = 5 . . .

Lemma 3.38. p è primitiva ricorsiva.

Dimostrazione Una volta calcolato p(y), p(y + 1) può essere calcolato come il più piccolo numero primo qstrettamente più grande di p(y). Ora, se tale q non si trova nell’intervallo [p(n)+1, p(n)!], allora dovrà essereper forza q = p(n)! + 1 (poiché in questo caso p(n)! + 1 non sarebbe diviso da alcuno dei primi precedenti,quindi sarebbe esso stesso primo: si veda la dimostrazione di Euclide sull’infinità dei numeri primi). Possiamoquindi definire la funzione p attraverso una combinazione di ricorsione primitiva e minimizzazione limitata:sia P il predicato primitivo ricorsivo

P (u, v) ≡ [v > u ∧ Prime(v)]

Per il Lemma 3.33 la funzione

g(y, z) = µv < z! + 2. [P (z, v)]

è primitiva ricorsiva.Possiamo allora definire p per ricorsione primitiva:

p(0) = 0p(y + 1) = g(y, p(y))

3.9 Alcuni eserciziGli esercizi marcati con asterisco sono in realtà dei lemmi che hanno un impatto rilevante in alcune dimo-strazioni teoriche. Andrebbero quindi considerati con una certa attenzione.

*Esercizio* 3.39. Consideriamo la bigezione π ∶ N2 → N che realizza la corrispondenza:

π(0,0) = 0π(1,0) = 1π(0,1) = 2π(2,0) = 3π(1,1) = 4π(0,2) = 5π(3,0) = 6

. . .

Provare che π e la sua inversa π−1 = (π1, π2) sono funzioni primitive ricorsive.

12

Page 13: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Soluzione La funzione π viene immediatamente riconosciuta come primitiva ricorsiva in quanto è unpolinimio, quindi primitiva ricorsiva:

π(x, y) = (x + y)2 + x + 3y2

Conosciamo il metodo per calcolare π1 e π2: Dato un argomento n,- determina il più piccolo numero s tale che n < (s + 1)(s + 2)/2;- Si ha: π1(n) = (s + 1)(s + 2)/2 − n − 1; π2(n) = n − s(s + 1)/2.(ad esempio, provare che π1(23) = 4, π2(23) = 2, e π(4,2) = 23).Per dimostrare che π1, π2 ∈ PRIM, consideriamo il predicato

P (n,m) ≡ [n < (m + 1)(m + 2)2

]

P ∈ PRIMIT in quanto ottenuto per composizione dal predicato < con un polinomio. Consideriamo poi lafunzione definita per minimizzazione limitata:

s(n) = µz < n.[n < (z + 1)(z + 2)2

]

s è primitiva ricorsiva per il Lemma 3.35 (la funzione g del Lemma è in questo caso l’identità). Abbiamoinfine:

π1(n) =(s(n) + 1)(s(n) + 2)

2− n − 1

π2(n) = n −s(n)(s(n) + 1)

2

π1, π2 sono entrambe ottenute per composizione con funzioni primitive ricorsive, e quindi sono primitivericorsive.

Esercizio 3.40. Si consideri la funzione radice quadrata intera sqrt(x) (esempi: sqrt(18) = 4, sqrt(45) = 6).Provare che sqrt è primitiva ricorsiva.

Soluzione Dato un argomento n, si tratta di trovare il più grande numero naturale r tale che r ∗ r ≤ n. Laminimizzazione limitata cerca i valori più piccoli che realizzano una data proprietà, ma è facile modificare laproprietà in modo da forzare la ricerca dei valori massimi. Nel caso specifico, la funzione scritta nella rigasotto non serve ovviamente a nulla:

g(n) = µz < n + 1.[(z ∗ z) ≤ n]

in quanto produrrà sempre come risultato 0. Ecco la modifica che serve:

sqrt(n) = µz < n + 1.[(z ∗ z) ≤ n ∧ (z + 1) ∗ (z + 1) > n]

sqrt è definita a partire da una congiunzione di predicati primitivi ricorsivi. Nell’ordine, i lemmi che con-sentono di dimostrare che g è ricorsiva primitiva sono allora il Lemma 3.27, il Lemma 3.33 e il Lemma3.35.

Esercizio 3.41. Provare che la funzione di Fibonacci è primitiva ricorsiva.

Soluzione Consideriamo la corrispondenza sotto: i valori della funzione di Fibonacci sono la secondacomponente della coppia:

0↦ (0,1)1↦ (1,1)2↦ (1,2)3↦ (2,3)4↦ (3,5)5↦ (5,8). . .

13

Page 14: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Data la coppia y-esima, sia essa (a, b) possiamo costruire la coppia y + 1-esima come la coppia (b, a + b). Latabella sopra può pertanto essere tradotta in una definizione per ricorsione primitiva, come segue:

h(0) = π(0,1)h(y + 1) = π( π2(h(y)), π1(h(y)) + π2(h(y)) )

Nella definizione sopra abbiamo h = R(f, g), dove f = π(0,1) = 2, e g(y, z) = π( π2(z), π1(z) + π2(z) ). g èprimitiva ricorsiva in quanto ottenuta per composizione da primitive ricorsive (si veda l’Esercizio 3.39). Comedetto, la seconda componente di h dà i valori della funzione di Fibonacci. Si ha pertanto fib(y) = π2(h(y)),che quindi risulta essere primitiva ricorsiva.

*Esercizio* 3.42. Si consideri la bigezione η ∶ Pfin(N) → N data da questa enumerazione dei sottinsiemifiniti:

∅,0,1,0,1,2,0,2,1,2,0,1,2,3, . . .(ossia η(0) = ∅, η(1) = 0, η(2) = 1 etc). Scrivere una formula che definisce tale bigezione, e dimostrareche η e la sua inversa sono effettive.

Soluzione Dato X ⊆ N, si ha

η(X) = ∑x∈X

2x

Tenuto conto che la funzione 2(_) è primitiva ricorsiva, η risulta effettiva, in quanto calcolata dal metodoindicato dalla definizione soprastante:- Dato l’insieme finito X, fai la somma finita delle quantità 2x, per ogni x ∈X.Per quanto riguarda l’inversa, dobbiamo mostrare che il processo che da una codifica n ∈ N fa risalireall’insieme η−1(n) è effettivo. In realtà faremo qualcosa di più. Proveremo che le funzioni che consentono lacompleta ricostruzione di η−1(n) sono primitive ricorsive. Sia X = η−1(n). La conoscenza di X è completaquando si hanno queste informazioni:- (a) la cardinalità ∣X ∣ di X;- (b) per ogni 1 ≤ i ≤ ∣X ∣, l’i-esimo elemento di X (supponendo di ordinare gli elementi di X in sensocrescente).

Introduciamo quindi queste funzioni:- λ(n), che calcola la cardinalità di X;- a(n, i), che calcola l’i-esimo elemento di X.Ad esempio, se n = 74, segue X = η−1(n) = 1,3,6, e deve quindi essere:

λ(74,0) = 3a(74,1) = 1a(74,2) = 3a(74,3) = 6

Nel seguito proveremo che λ(n) e a(n, i) sono primitive ricorsive, ma occorre qualche definizione e risultatopreliminare.

Dalla definizione:() n = ∑

i∈X2i

discende subitoλ(n) = ∣X ∣ ≤ lg(n) + 1

dove la funzione lg logaritmo intero in base 2 è stato introdotta e studiata nell’Esercizio 3.26: essa è primitivaricorsiva. Trasformiamo ora l’uguaglianza (): riprendendo l’esempio sopra, con n = 74 e X = 1,3,6:

74 = 21 + 23 + 26

= 0 ∗ 20 + 1 ∗ 21 + 0 ∗ 22 + 1 ∗ 23 + 0 ∗ 24 + 0 ∗ 25 + 1 ∗ 26

Alla luce di ($), () può essere riscritta così:

n = ∑i∈X

2i

=lg(x)+1

∑i=0

α(n, i) ∗ 2i

14

Page 15: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

dove le quantità α(n, i) sono definite come segue:

α(i, n) = 1 se i ∈X (ossia se i ∈ η−1(n))0 se i ∉X

Ora, la funzione α è primitiva ricorsiva. Infatti, sia h(x) = qt(2, x). h è ovviamente primitiva ricorsiva. Siaq(x, i) l’iterata i-esima di h, ovvero

q(x, i) = h(h(. . . (h(x)) . . .)) (nel membro di destra h compare i volte )

q è ovviamente primitiva ricorsiva, essendo definita mediante

q(x,0) = xq(x, i + 1) = h(q(x, i))

Si ha (provate a dimostrarlo per esercizio)

α(x, i) = rm(2, q(x, i))

che prova α(x, i) ∈ PRIM.

Segue immediatamente dalla definizione di α che

λ(n) = ∑i<lg(n)+2

α(n, i)

e quindi anche λ risulta primitiva ricorsiva, essendo ottenuta per sommatoria dalla funzione primitiva ricorsivaα: basta applicare il Lemma 3.21, e comporre con la funzione lg(n) + 2.

Resta da studiare la funzione a(n, i) che calcola l’i-esimo elemento di X. Rivediamo di nuovo l’esempio,n = 74, X = η−1(n) = 1,3,6. Abbiamo:

α(74,0) = 0;α(74,1) = 1;α(74,2) = 0;α(74,3) = 1;α(74,4) = 0;α(74,5) = 0;α(74,6) = 1;

Gli elementi di X sono stati scritti in grassetto. Osserviamo ora le somme:

α(74,0) = 0α(74,0) + α(74,1) = 1 ⇐ (primo elemento di X)

α(74,0) + α(74,1) + α(74,2) = 1α(74,0) + α(74,1) + α(74,2) + α(74,3) = 2 ⇐ (secondo elemento di X)

α(74,0) + α(74,1) + α(74,2) + α(74,3) + α(74,4) = 2α(74,0) + α(74,1) + α(74,2) + α(74,3) + α(74,4) + α(74,5) = 2

α(74,0) + α(74,1) + α(74,2) + α(74,3) + α(74,4) + α(74,5) + α(74,6) = 3 ⇐ (terzo elemento di X)

Per calcolare a è sufficiente osservare con attenzione l’esempio sopra e la definizione di α(n, k), che restituisce1 quando k ∈X, 0 altrimenti. Si osserva questo: a(n, i) (ossia: l’i-esimo elemento di X) è il più piccolo valorek tale che la somma degli α(n, j) incontrati da j = 1 fino a j = k è esattamente i. In formule:

a(n, i) = µk < (lg(n) + 2). [k

∑j=0

α(n, j) = i]

La formula sopra va completata: se vogliamo che a sia una funzione totale, dobbiamo definirla anche al difuori del range i ∈ [1, λ(n)]. È chiaro al di fuori di tale range le quantità a(n, i) non hanno alcun significato;stabiliamo un valore convenzionale: 0. La definizione completa di a è questa:

a(n, i) = 0 se i = 0 ∨ i > λ(n)µk < (lg(n) + 2). [∑kj=0 α(n, j) = i] se 1 ≤ i ≤ λ(n)

15

Page 16: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

La funzione che compare nella seconda linea è ottenuta per minimizzazione limitata da funzioni in PRIM,ed è quindi primitiva ricorsiva per il Lemma 3.33. I predicati della definizione sopra usano la funzione λche abbiamo visto essere primitiva ricorsiva, e sono quindi primitivi ricorsivi. Possiamo allora applicare ilLemma 3.31 e concludere che a è primitiva ricorsiva.

Riassumiamo i risultati ottenuti:- l’informazione su X = η−1(n) è completa conoscendo λ(n) e a(n, i);- le funzioni λ(n) e a(n, i) sono primitive ricorsive. Quindi il processo che porta a determinare η−1(n) apartire da n è effettivo, e quindi η−1 è calcolabile.

Esercizio 3.43. Definiamo la seguente operazione υ ∶ N ×N→ N:

υ(n, k) = η(X ∪ k)

dove X = η−1(n). Ad esempio, con riferimento all’esempio del precedente Esercizio 3.42, sia n = 74, X =η−1(74) = 1,3,6, quindi υ(74,2) è la codifica secondo η dell’insieme 1,3,6 ∪ 2 = 1,2,3,6, ovvero

υ(74,2) = 21 + 22 + 23 + 26

= 78

Provare che υ è primitiva ricorsiva.

Soluzione Se k ∈X, segue che X ∪ k =X, quindi υ(n, k) = n. Se invece k ∉X, υ(n, k) = n + 2k. Quindi

υ(n, k) = n se k ∈Xn + 2k se k ∉X

Basta ora osservare che k ∈X se e solo se α(n, k) = 1. Quindi

υ(n, k) = n se α(n, k) = 1n + 2k se α(n, k) = 0

Dal Lemma 3.31 segue che υ è primitiva ricorsiva, in quanto α ∈ PRIM.

Esercizio 3.44. Il presente esercizio generalizza il precedente. Consideriamo ogni numero n ∈ N come unacodifica (secondo la mappa η) di un insieme X. Definiamo l’“unione” di due numeri n ∪ n′ come

n ∪ n′ = η(X ∪X ′)

dove X = η(n), X ′ = η(n′).Ad esempio 3 ∪ 13 = 15. Infatti η−1(3) = 0,1, η−1(13) = 0,2,3, l’unione dei due insiemi è 0,1,2,3: lacodifica secondo η di questo insieme è 20 + 21 + 22 + 23 = 15.Provare che ∪ ∶ N ×N→ N è primitiva ricorsiva.

Soluzione Possiamo esprimere la funzione caratteristica di X ∪X ′ in funzione di n ed n′:

i ∈X ∪X ′⇔ α(n, i) + α(n′, i) ≠ 0

e pertanto

χ(X∪X′)(i) = sg(α(n, i) + α(n′, i)

Abbiamo allora:

n ∪ n′ = η(X ∪X ′)= ∑i∈X∪X′

2i per definizione di η

=∑i∈Nχ(X∪X′) ∗ 2i

= ∑i≤max(λ(n),λ(n′))

sg(α(n, i) + α(n′, i)) ∗ 2i

La funzione dell’ultima riga è ottenuta come sommatoria da una funzione primitiva ricorsiva, ed è quindiprimitiva ricorsiva.

16

Page 17: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Esercizio 3.45. Definiamo l’“intersezione” di due numeri n ∩ n′ come

n ∩ n′ = η(X ∩X ′)

dove X = η(n), X ′ = η(n′).Ad esempio 3 ∪ 13 = 1. Infatti η−1(3) = 0,1, η−1(13) = 0,2,3, l’intersezione dei due insiemi è 0 la cuicodifica è 20 = 1.Provare che ∩ ∶ N ×N→ N è primitiva ricorsiva.

*Esercizio* 3.46. Sia Seq(N) l’insieme delle sequenze finite di numeri naturali. Sia ϑ ∶ Seq(N) → N labigezione determinata come segue: per ogni σ = [a1, a2, . . . , ak],

ϑ(σ) = 2a1 + 2a1+a2+1 + 2a1+a2+a3+2 + . . . + 2[a1+a1+...+ak+(k−1)]

=k

∑i=1

2[(∑ij=1 aj)+(i−1)]

Ad esempio, per la sequenza σ = [1,0,1,4,4,2] si ha:

ϑ(σ) = 21 + 21+0+1 + 21+0+1+2 + 21+0+1+4+3 + 21+0+1+4+4+4 + 21+0+1+4+4+2+5

= 21 + 22 + 24 + 29 + 214 + 217

= 147990

Provare che ϑ e ϑ−1 sono effettive.

Soluzione L’effettività di ϑ è immediata dalla sua definizione, coinvolgendo operazioni primitive ricorsive.Per quanto riguarda ϑ−1, osserviamo che data una codifica n, la sequenza σ = ϑ−1(n) è completamentericostruita quando si conosce la lunghezza λ(σ) della sequenza, e per ogni 1 ≤ i ≤ λ(σ) l’i-esimo elemento diσ che chiamiamo b(n, i). Ad esempio, nel caso di n = 147990, σ = ϑ−1(n) = [1,0,1,4,4,2] si ha

b(n,1) = 1b(n,2) = 0b(n,3) = 1

. . .

La verifica che λ e b sono primitive ricorsive sfrutta l’Esercizio 3.42. Infatti, λ(n) è definita in modo identicoal caso degli insiemi (in entrambi i casi conta infatti gli addendi che concorrono alla sommatoria di potenzedi 2 che come risultato dà n). Per quanto riguarda le quantità b(n, i), si ricavano direttamente da a(n,1),come segue:

a(n,1) = b(n,1)a(n,2) = b(n,1) + b(n,2) + 1a(n,3) = b(n,1) + b(n,2) + b(n,3) + 2

. . .

e quindi, invertendo le relazioni:

b(n,1) = a(n,1)b(n,2) = a(n,2) − a(n,1) − 1b(n,3) = a(n,3) − a(n,2) − 1 . . .

Per i valori di i non significativi (i = 0 oppure i > λ(n)) poniamo per convenzione b(n, i) = 0. Perveniamoquindi a questa definizione della funzione b:

b(n, i) =⎧⎪⎪⎪⎨⎪⎪⎪⎩

0 se i = 0 ∨ i > λ(n)a(n,1) se 1 = i ∧ i ≤ λ(n)a(n, i) − a(n, i − 1) se 1 < i ≤ λ(n)

La funzione b è definita per casi a partire da funzioni e predicati primitivi ricorsivi, ed è quindi primitivaricorsiva. Ciò completa la dimostrazione.

17

Page 18: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Esercizio 3.47. Consideriamo i numeri naturali come codifiche di sequenze finite di naturali, secondo labigezione ϑ introdotta nell’Esercizio 3.46. Possiamo allora considerare la “concatenazione” n m di duenumeri: se σ = ϑ−1((n) e τ = ϑ−1(m), allora

n m = ϑ(σ ∶∶ τ)

dove σ ∶∶ τ è l’usuale concatenazione di stringhe.Ad esempio, 9 10 = 169, poiché

σ = ϑ−1(9) = [0,2]τ = ϑ−1(10) = [1,1]

σ ∶∶ τ = [0,2,1,1]

e quindi

9 10 = ϑ([0,2,1,1])= 20 + 23 + 25 + 27

= 169

Provare che ∶ N ×N→ N è primitiva ricorsiva.

Soluzione

n m = n + 2[(∑i<λ(n)(a(n,i))+λ(n)] ∗m

*Esercizio* 3.48. Consideriamo un alfabeto finito di simboli Σ = a1, a2, . . . , aβ, dove i simboli sono messiin bigezione con l’intervallo di naturali [1, β]. Ad esempio, se Σ = A,B,C, possiamo assegnare i numerid’ordine come segue: 1 ad A, 2 a B, 3 a C, per cui avremmo a1 = A, a2 = B, a3 = C (la bigezione fra Σ e[1, β] può essere stabilita a piacimento). Sia

Σ∗ = σ ∣ σ sequenza finita di elementi di Σ

Introduciamo la seguente bigezione γ ∶ Σ∗ → N:

γ([ap1 , ap2 , . . . , apk]) = p1 ∗ βk−1 + p2 ∗ βk−2 + . . . + pk

=k

∑i=1

pi ∗ β(k−i)

Un esempio: con riferimento all’esempio sopra, sia σ = [C,C,A,B]. Allora, tenendo conto che β = 3

γ(σ) = γ([a3, a3, a1, a2])= 3 ∗ 33 + 3 ∗ 32 + 1 ∗ 31 + 2= 81 + 27 + 3 + 2= 113

Provare che γ ∶ Σ∗ → N e γ−1 ∶ N→ Σ∗ sono effettive.

*Esercizio* 3.49 (variante dell’Esercizio 3.48). Sia dato un alfabeto finito Σ di cardinalità pari a β ∈ N.Diamo ai simboli di Σ numeri d’ordine da 0 a β − 1 (in questo punto sta la differenza con l’esercizio 3.48),per cui scriviamo Σ = a0, a1, . . . , aβ−1, e per scrivere le sequenze usiamo la notazione ap1ap2 . . . apk al postodi [ap1 , ap2 , . . . , apk]. Consideriamo ora

Σ∗ = a0 ∪ ap1ap2 . . . apk ∣ k > 0 ∧ ap1 ≠ a0 ∧ ∀1 ≤ i ≤ k.ap1 ∈ Σ

Quindi: a1a0a0 ∈ Σ∗, a0a1a1 ∉ Σ∗. Consideriamo la bigezione γ ∶ Σ∗ → N:

γ(σ) = 0 se σ = a0

∑ki=1(pi ∗ βk−i) se σ = ap1ap2 . . . apk ≠ a0

Dimostrare che γ e γ−1 sono effettive.

18

Page 19: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

4 Minimizzazione e funzioni ricorsiveSappiamo che le funzioni primitive ricorsive non coprono tutte le funzioni calcolabili, perchè fra queste ci sonoanche funzioni parziali: ad esempio la funzione ovunque divergente Ω è senz’altro calcolabile, ma non sta inPRIM. Allarghiamo ora in modo proprio la classe PRIM, con un nuovo schema di definizione. Lo schema diminimizzazione è definito, in generale, per funzioni qualunque.Ci serve questa notazione:

g(x) ↓≠ k

significa che sull’argomento x la funzione g converge a qualche valore differente da k. Quindi g(x) ↓≠ k è lanegazione del predicato

g(x) ↑ ∨ g(x) = k

Definizione 4.1. Sia g ∶ Nk+1 → N. Definiamo per minimizzazione una nuova funzione

mg(x) = µz. [g(x, z) = 0]

dove la strategia per calcolare mg(x) è questa:cerca il più piccolo (unico) z∗ tale che valgano le seguenti due proprietà:(i) g(x, z∗) = 0;(ii) ∀z′ < z∗.g(x, z′) ↓≠ 0.Se trovi un tale z∗, restituiscilo come risultato: mg(x) = z∗. Altrimenti mg(x) ↑.

Se g è una funzione calcolabile (anche parziale) la strategia della Definizione 4.1 è effettiva: restituisce ilrisultato, quando esso esiste, in un numero finito di passi. Infatti, la strategia può essere dettagliata comesegue:(a) munisciti del metodo effettivo per calcolare g e poni z∗ = 0;(b) calcola mg(x), regolandoti come segue:

1. se g(x, z∗) = 0, allora restituisci z∗ e termina;

2. se g(x, z∗) ↓≠ 0, allora incrementa z∗ di una unità, e riesegui il presente punto (b);

3. se g(x, z∗) ↑, allora sei entrato in un loop infinito, e quindi mg(x) ↑.

Ad esempio, si supponga di avere una funzione g ∶ N ×N tale che

g(5,0) = 4g(5,1) ↑

g(5,2) = 0

Segue dalla definizione mg(5) ↑. Se invece fosse g(5,1) = 3, avremmo mg(5) = 2.

Definizione 4.2. 1. Definiamo la classe RIC come la più piccola classe di funzioni che contiene Z, succ

e P(k)i ed è inoltre chiusa per composizione, ricorsione primitiva e minimizzazione (non limitata).

2. Dato k ∈ N, RIC(k) indica la classe delle funzioni ricorsive di arietà k.

Segue subito dalla definizione PRIM ⊆ RIC. Il prossimo esercizio mostra che l’inclusione è stretta, in quantotutte le funzioni primitive ricorsive sono totali.

Esercizio 4.3. Sia Ω(x) ↑ per ogni x. Provare Ω ∈ RIC.

Soluzione Ω(x) = µz.[Cost1(x) = 0].

Esercizio 4.4. Definire attraverso lo schema di minimizzazione e funzioni primitive ricorsive la seguentefunzione

sqrt(x) = z se z ∗ z = x↑ se altrimenti

Soluzione sqrt(x) = µz.[∣x − z ∗ z∣ = 0].

19

Page 20: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Esercizio 4.5. Definire attraverso lo schema di minimizzazione la funzioni resto e quoziente, in modo taleche si abbia la divergenza quando il divisore è 0.

Soluzione

qt(x, y) = (µz.[y + 1 z ∗ x = 0]) − 1rm(x, y) = y − x ∗ qt(x, y)

La centralità della classe RIC trova un primo riscontro nel prossimo teorema (non dimostrato): RIC coincideesattamente con la classe delle funzioni Turing computabili.

Teorema 4.6 (Turing calcolabilità = ricorsività). Data una funzione f ∶ Nk → N, essa è calcolata da unamacchina di Turing se e solo se è ricorsiva.

Il teorema precedente, integrato con altri simili, afferma la sostanziale coincidenza della ricorsività con tuttele altre nozioni di calcolabilità basate su metodi effettivi. Raccogliendo le varie equivalenze fra modellicomputazionali, abbiamo infatti:

f ∶ Nk → N è ricorsiva:- se e solo se è Turing calcolabile;- se e solo se esiste un termine del λ-calcolo che la computa;- se e solo se esiste una macchina URM che la calcola;- se e solo se esiste una grammatica dipendente dal contesto che la colcola;- se e solo se esiste un algoritmo normale di Markov che la calcola;etc etc

Il quadro che emerge è noto dall’inizio di queste note e viene riassunto in questa nuova variante della Tesi diChurch:

Tesi di Church. Una funzione f ∶ Nk → N è calcolabile da qualche metodo effettivo se e solo è ricorsiva.

4.1 Funzioni ricorsive totali vs funzioni primitive ricorsiveIn questa sottosezione proviamo che l’ampliamento della classe delle funzioni primitive ricorsive prodottodall’operatore di minimizzazione va al di là della possibilità di avere funzioni parziali. Diamo infatti unesempio di funzione totale e ricorsiva che non è primitiva ricorsiva: la funzione di Ackermann.

Teorema 4.7. Definiamo Ack ∶ N ×N→ N mediante

Ack(x,0) = x + 1Ack(0, y + 1) = Ack(1, y)

Ack(x + 1, y + 1) = Ack(Ack(x, y + 1), y)

Allora Ack è totale ed è ricorsiva. Tuttavia Ack ∉ PRIM.

La dimostrazione della ricorsività di Ack non viene riportata immediatamente, perché con le attuali cono-scenze, sarebbe troppo laboriosa. Questa dimostrazione “di basso livello” si trova ad esempio in [1] (non contutti i dettagli, tuttavia). Nelle Sezione 11 mostreremo che Ack è ricorsiva, come conseguenza di risultatimolto generali.Per dimostrare che Ack è totale, si può osservare che Ack è definita secondo una schema induttivo che prevededi ordinare le coppie di numeri naturali nel modo seguente:

(a, b) ⊑ (c, d) ⇔ b < d ∨ [b = d ∧ a ≤ c]

Ad esempio: (1000,2) ⊑ (0,3), (4,5) ⊑ (7,5) etc. L’ordinamento ⊑ su N ×N è totale (due coppie di numerisono sempre confrontabili) e ben fondato: non esiste una catena discendente infinita

(a1, b1) ⊐ (a2, b2) ⊐ (a3, b3) . . .

A causa di quest’ultimo fatto, è possibile usare il Principio di Induzione per dimostrare che Ack è sempreben definita. Il caso delicato è Ack(x + 1, y + 1). Si ha:- (x, y + 1) ⊏ (x + 1, y + 1);- quindi, per ipotesi induttiva, Ack(x, y + 1) è definita;- si ha (Ack(x, y + 1), y) ⊏ (x + 1, y + 1), poichè y < y + 1;- quindi, di nuovo per ipotesi induttiva, Ack(Ack(x, y + 1), y) è definita, e quindi è definita Ack(x + 1, y + 1).Vediamo un secondo esempio, più astratto di funzione ricorsiva totale, ma non primitiva ricorsiva.

20

Page 21: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Osservazione 4.8. PRIM è un insieme enumerabile in modo effettivo, attraverso qualche mappa ρ ∶ N ∈ PRIM(scriviamo rhon al posto di rho(n)). Non diamo i dettagli della dimostrazione ma l’idea:- ρ0 = Z; ρ2 = succ; con gli altri indici pari 2j si coprono tutte le funzioni di proiezione;- agli indici del tipo 4i + 1 si associano funzioni definite per composizione; agli indici del tipo 4i + 3 funzionidefinite per ricorsione primitive. Tale associazione deve seguire una strategia che porti a considerare tutte lecomposizioni e tutte le ricorsioni possibili (compatibili con le arietà) delle funzioni che via via si definiscono;- La enumerazione ρn riguarda tutte le possibili funzioni primitive ricorsive, di ogni arietà.

Dalla enumerazione (ρn)n∈N estraiamo la sottosuccessione (ρnk)n∈N che consiste di tutte le funzioni primitivericorsive di arietà 1. Sia ρ′k = ρnk . Allora (ρ′k)k∈N è una enumerazione effettiva di PRIM(1), l’insieme dellefunzioni primitive ricorsive di un argomento. Osserviamo che f(n,m) = ρ′n(m) è calcolabile da un metodoeffettivo (“dato n, ricava in numero finito di passi la funzione primitiva ricorsiva ρ′n e applicala all’argomentom: dopo un numero finito di passi otterrai il risultato”), e quindi per la tesi di Church è ricorsiva. Inoltre fè totale. Di conseguenza, la funzione

h(n) = f(n,n) + 1

è ricorsiva e totale (applicare la composizione con il successore ed il Lemma di scambio, si veda il Lemma4.11(4)). Si osservi ora che h non può essere primitiva ricorsiva. Se lo fosse, esisterebbe n∗ ∈ N tale cheh = ρ′n∗ , e quindi si otterrebbe l’assurdo seguente:

ρ′n∗(n∗) = h(n∗)= f(n∗, n∗) + 1= ρ′n∗(n∗) + 1

Quindi h è ricorsiva e totale, ma non primitiva ricorsiva.

4.2 Predicati ricorsivi e loro proprietà di chiusuraLa definizione ed i successivi risultati sono l’analogo di quanto visto con i predicati e gli insiemi primitiviricorsivi.

Definizione 4.9. Sia P ∶ Nk → Bool. Diciamo che P è ricorsivo o decidibile se χP ∈ RIC. Similmente per gliinsiemi. Chiamiamo RICOR la classe di tutti predicati (e degli insiemi) ricorsivi, mentre RICOR(Nk) denotala classe dei predicati ricorsivi di arietà k.

Osservazione 4.10. La nozione di predicato/insieme ricorsivo è centrale: se si accetta la tesi di Church,i predicati ricorsivi sono tutti e soli i predicati P per i quali esiste una procedura di decisione effettiva ingrado di rispondere sì/no alla domanda “P (x) = tt?”: una tale procedura è in corrispondenza con l’esistenzadi χP ∈ RIC. Sapere che un predicato è decidibile non vuol dire d’altra parte avere risolto ogni aspettoproblematico di P . Se si è dimostrata l’esistenza di un algoritmo che decide un dato predicato ciò nonsignifica essere in grado di determinare tale algoritmo. D’altra parte, se sappiamo che un predicato P nonè ricorsivo, allora possiamo abbandonare la ricerca di un qualunque metodo effettivo che possa decidere conrisposta sì/no la domanda “P (x) è vero?”

Per i predicati ricorsivi valgono le stesse proprietà di chiusure come nel caso primitivo ricorsivo: unione eintersezione finita, complementazione, quantificazioni limitate, e composizioni con funzioni ricorsive. Perquanto riguarda le funzioni, c’è la chiusura rispetto alle definizioni per casi. Le dimostrazioni sono identichea quelle viste nel caso primitivo ricorsivo, e sono quindi omesse.

Lemma 4.11. 1. Siano P,Q ∈ RICOR. Allora P ∧Q,P ∨Q,¬P ∈ RICOR.

2. (sommatorie, produttorie) Siano f ∶ Nk+1 → N. Allora

h1(x,w) = ∑z<w

f(x, z) ∈ RIC

h2(x,w) = ∏z<w

f(x, z) ∈ RIC

3. (quantificazioni limitate) Sia P di arietà k + 1. Allora

Q1(x,w) ≡ ∃z < w. P (x, z) ∈ RICOR

Q2(x,w) ≡ ∀z < w. P (x, z) ∈ RICOR

21

Page 22: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

4. (Lemma di scambio) Sia f ∶ Nk → N e P ∶ Nk → Bool ricorsivi. Sia σ ∶ [1, k] → [1, p] una qualunquefunzione surgettiva. Allora

h(x1, . . . xp) = f(xσ(1), . . . , xσ(k))Q(x1, . . . , xp) = P (xσ(1), . . . , xσ(k))

sono rispettivamente una funzione e un predicato ricorsivi.

5. (Definizione per casi) Siano Pi ∈ RICOR(Nk) e fi ∶ Nk → N ∈ RIC, per ogni 1 ≤ i ≤ n. Inoltre, siaPi(x) ∧ Pj(x) = ff, per ogni i ≠ j, e sia P1(x) ∨ P2(x) ∨ . . . ∨ Pn(x) = tt. Allora h ∈ RIC, dove

h(x) =

⎧⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎩

f1(x) se P1(x)f2(x) se P2(x). . .fn(x) se Pn(x)

6. Siano, per 1 ≤ i ≤ k, fi ∶ Np → N ∈ RIC e sia P ∈ RICOR(Nk). Allora il predicato

Q(x) ≡ P (f1(x), . . . , fk(x))

è ricorsivo.

Lemma 4.12. 1. Sia g ∈ RIC funzione totale. Sia k ∈ N. Allora il predicato

P (x) ≡ [g(x) = k]

è ricorsivo.

2. Sia P (x, y) ∈ RICOR. Allora la funzione

mP (x) = µz. P (x, z)

è ricorsiva.

3. Sia P (x, y) ∈ RICOR. Supponiamo che per un dato x esista y∗ ∈ N tale che P (x, y∗) = tt. AlloramP (x) ↓. In particolare, se ∀x.∃y.P (x, z), allora la funzione mP è totale.

Dimostrazione (1) χP (x) = sg(∣g(x) − k∣), è composizione di funzioni ricorsive, quindi ricorsiva.(2) Basta osservare che

mP (x) = µz. [sg(χP (x, z)) = 0]

e quindi rientriamo nel caso della definizione 4.1.(3) Se P è ricorsivo, si osservi che la sua funzione caratteristica è totale. Quindi la minimizzazione porteràa individuare nell’intervallo [0, y∗] il primo z tale che P (x, z).

Osservazione 4.13. Riprendiamo il punto (1) del precedente Lemma, ma considerando una g non totale:

P (x) ≡ [g(x) = 0]

In questo caso sg(g(x)) non è la funzione caratteristica di P , poiché se g(x) ↑, allora seguirebbe sg(g(x)) ↑,mentre χP (x) dovrebbe dare come risultato 0. In generale, non si potrà concludere che P è ricorsivo, ma cheè ricorsivamente enumerabile. Caso per caso, può comunque succedere che P sia ricorsivo, a seconda dellecaratteristiche della funzione parziale g: ad esempio P è decidibile se dom(g) è finito o cofinito (ossia g(x) ↓per ogni x ∉ A, dove A è finito): provate a fare la dimostrazione.

4.3 I predicati S e HFissiamo un modello computazionale che consente di calcolare tutte le funzioni ricorsive. Ad esempio, lemacchine di Turing. Abbiamo visto a lezione che è possibile produrre una numerazione effettiva di tutte lemacchine di Turing

M0,M1, . . . ,Mn,Mn+1

22

Page 23: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

e questo si riflette nella possibilità, per ogni arietà k, di enumerare effettivamente tutte le funzioni ricorsive,ossia di avere un mappa surgettiva ed effettiva

ϕ0, ϕ1, ϕ2, . . . , ϕn, ϕn+1 . . .

dove ciascuna ϕn è calcolata dalla macchina Mn. Dalla effettività di questa enumerazione discende lacalcolabilità della funzione universale ψ(k) ∶ Nk+1 → N

ψ(k)(e, x) = ϕe(x)

La procedura effettiva per calcolare ψ(k) è facilmente individuata attraverso la tesi di Church:- risalire, da e, alla macchina di TuringMe: per fare questo è sufficiente generare tutte le stringhe sull’alfabetodelle codifiche delle macchine di Turing ed individuare la e-esima macchina;- applicare Me alla codifica di x = (x1, . . . , xk), ovvero al nastro #Ix1#Ix2# . . .#Ixk#;- svolgere tutti i passi di computazione. “Passo di computazione” è una nozione chiara se si lavora con lemacchine di Turing: corrisponde a consultare la funzione di transizione e svolgere uno dei passi elementariprescritti: spostamento a destra, oppure a sinistra, oppure riscrittura di qualche simbolo nella cella del nastroscandita dalla testina. Se questi passi sono in numero finito, allora si ha

(q0,#Ix1#Ix2# . . .#Ixk#) ⊢∗M (h,αa . . .)

dove α è la stringa prodotta come risultato a sinistra della testina e h è lo stato finale che indica la terminazionedella computazione. Da questa stringa qualche opportuna convenzione (vista a lezione) estrae il risultatonumerico sotto forma di sottostringa #Iy, e questo determina il risultato: ϕe(x) = y. Se invece il numero dipassi è infinito, ossia Me entra in loop infinito, allora ϕe(x) ↑.Alla luce di quanto appena visto, introduciamo questa notazione:

• ϕe(x) ↓t y significa che la macchina di TuringMe che calcola ϕe, dopo t (o meno) passi di computazioneelementari a partire dalla configurazione iniziale (q0,#Ix1#Ix2# . . .#Ixk#), ha raggiunto lo statofinale h, restituendo y come risultato. Diremo più brevemente: “la funzione ϕe, applicata a x, restituisceil risultato y entro t passi di computazione”.

• ϕe(x) ↓t significa cheMe riesce, dopo t passi di computazione, a produrre un risultato (senza specificarequale);

• ϕe(x) /↓t y significa che Me dopo t passi di computazione ha prodotto un risultato differente da y,oppure non ha ancora terminato la computazione;

• ϕe(x) /↓ significa che Me non è in grado di fornire il risultato entro t passi di computazione: potrebberoessere necessari un numero maggiore di passi, oppure la computazione potrebbe divergere.

Introduciamo ora un predicato che “approssima” la funzione universale nel senso seguente: il numero di passit è un parametro del predicato, che risponderà sì/no alla domanda se ψ(e, x) converge a y entro t passi.

Definizione 4.14. Per ogni arietà k ∈ N definiamo il predicato S(k) su Nk+3:

S(k)(e, x, y, t) ≡ ϕe(x) ↓t y

Teorema 4.15. S(k) è ricorsivo.

Dimostrazione Usiamo la tesi di Church per provare che la funzione caratteristica χS(k) è calcolabile, quindiricorsiva.- Dato e ∈ N risaliamo a Me;- applichiamo Me alla codifica di x e svolgiamo i passi di computazione: se dopo t passi (o meno) dicomputazione è stato prodotto y come risultato, restituiamo 1 come risultato finale; se invece è stato prodottoun risultato differente da y, oppureMe non ha ancora terminato la computazione, restituiamo 0 come risposta.La procedura sopra è effettiva e calcola χS(k) .

Da ora in avanti si ometterà l’apice (k) nella scrittura di S.Di fatto si può migliorare il teorema precedente. La dimostrazione del prossimo risultato è molto lunga,quindi omessa.

Teorema 4.16. S è primitivo ricorsivo.

Ora vediamo il collegamento fra S e la funzione universale.

23

Page 24: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Teorema 4.17. Per ogni e ∈ N e x ∈ Nk, si ha

1. For all y ∈ N,

ψ(e, x) = y⇔ ∃t. S(e, x, y, t)

2.

ψ(e, x) = π1(µz. S(e, x, π1(z), π2(z)))

Dimostrazione Il primo fatto è ovvio dalla definizione di S. Proviamo (2). Sia ψ(e, x) = y. Sia t i più piccolovalore per cui ϕe(x) ↓t y, ossia S(e, x, y, t). Sia z∗ = π(y, t). Allora π1(z∗) = y, π2(z∗) = t e quindi z∗ è il piùpiccolo valore per cui S(e, x, π1(z∗), π2(z∗)) = tt. Infine, per definizione stessa di z∗, si ha

π1(µz. S(e, x, π1(z), π2(z)) = π1(z∗)= y

Viceversa, sia

π1(µz. S(e, x, π1(z), π2(z))) = y

Sia z∗ = µz. S(e, x, π1(z), π2(z))) = y. Allora π1(z∗) = y. Per definizione di S otteniamo ϕe(x) ↓π2(z∗) y.Pertanto abbiamo mostrato che

ψ(e, x) = y⇔ π1(µz. S(e, x, π1(z), π2(z))) = y

che prova il teorema.

Il precedente teorema ha un corollario sorprendente: nel definire le funzioni ricorsive possiamo usare l’ope-razione di minimizzazione una sola volta, senza perdere alcuna generalità.

Corollario 4.18 (Teorema di Kleene). Sia g una qualunque funzione ricorsiva. È sempre possibile definire gusando al massimo una volta l’operatore di minimizzazione. In particolare, per ogni g esistono una funzioneprimitiva ricorsiva di un argomento, u, ed un predicato primitivo ricorsivo P tale che

g(x) = u(µz. P (x, z))

Dimostrazione È sufficiente determinare e ∈ N tale che ϕe = g, e poi considerare

u = π1

P (x, y) ≡ S(e, x, π1(y), π2(y))

Si conclude allora per il Teorema 4.17.

Introduciamo un secondo predicato, meno informativo di S.

Definizione 4.19.

H(e, x, t) ≡ ϕe(x) ↓t

Teorema 4.20. H è ricorsivo.

Dimostrazione Si utilizzi la tesi di Church, e si proceda come nella dimostrazione del Teorema 4.15.

Osservazione 4.21. Come nel caso del predicato S, è possibile provare che H è primitivo ricorsivo.

5 Riassunto di alcuni risultati teoriciQuesta sottosezione mette in sequenza una serie di teoremi fondamentali dimostrati in modo più o menocompleto a lezione.

Teorema 5.1. Per ogni arietà k, esiste una enumerazione effettiva (ϕ(k)n )n∈N delle funzioni ricorsive da Nk

in N (quando k = 1 omettiamo il soprascritto).

Conseguenza del teorema precedente: per ogni arietà, l’esistenza di una funzione universale che, da sola,contiene tutta l’informazione di tutte le funzioni ricorsive di quella arietà.

24

Page 25: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Teorema 5.2 (Funzione universale). Per ogni arietà k, esiste una funzione universale ψ(k) ∶ Nk+1 → N taleche, per ogni e ∈ N e x ∈ Nk, si ha

ψ(k)(e, x) = ϕ(k)e (x)

ed inoltre tale funzione è ricorsiva.

Teorema 5.3. Per ogni k, esiste una enumerazione effettiva di PRIM(k), realizzata attraverso una funzionetotale ricorsiva ep(k) ∶ N→ N: per ogni f ∈ PRIM(k), esiste a ∈ N tale che

f = ϕep(a)

Teorema 5.4 (Teorema smn). Sia data una funzione ricorsiva f ∶ Nn+m → N. Esiste una funzione totale ericorsiva s ∶ Nn → N che fornisce in modo effettivo indici per le funzioni f(x,_) ∶ Nm → N, ovvero:

∀x, y. ϕs(x)(y) = f(x, y)

Sia f ∶ N → N una funzione ricorsiva totale. Considerando i numeri naturali come indici di funzioni com-putabili (sulla base della corrispondenza n ↦ ϕn) f può essere vista, per ogni k, come un “trasformatore diprogrammi”:

ϕn ↦ ϕf(n)

In questa ottica, diciamo che a ∈ N è un punto fisso di f , se

ϕa = ϕf(a)

Teorema 5.5 (2o Teorema di ricorsione). Data f ∶ N → N ricorsiva totole, esistono (infiniti) e ∈ N tali cheper ogni x ∈ Nk

ϕe(x) = ϕf(e)(x)

Teorema 5.6 (2o Teorema di ricorsione parametrico). Sia f ∶ Np+1 → N una funzione ricorsiva totale. Alloraesiste una funzione totale ricorsiva s ∶ Np → N tale che per ogni x ∈ Np, z ∈ Nk

ϕs(x)(z) = ϕf(x,s(x))(z)

6 Predicati r.e. e loro proprietà di chiusuraFino ad ora sono stati presentati esempi di predicati (primitivi) ricorsivi. Si tenga conto che RICOR hacardinalità ℵ0, ossia la stessa di N. Infatti è una classe numerabile, poichè le funzioni caratteristiche deipredicati ricorsivi sono un sottinsieme di RIC, che sappiamo dal Teorema 5.1 essere numerabile. D’altraparte, l’insieme dei predicati su N ha cardinalità 2ℵ0 . Siccome ℵ0 < 2ℵ0 , segue che devono esistere predicatinon ricorsivi, e che questi sono la maggioranza.Vediamo allora i primi esempi di predicati non ricorsivi. Consideriamo il predicato che esprime il Problemadella Fermata:

P (x, y) ≡ ϕx(y) ↓

Se P (x, y) fosse ricorsivo avremmo come notevole conseguenza l’esistenza di un algoritmo A, associato allafunzione caratteristica χP , con questa proprietà: data una qualunque macchina di Turing/programma M(identificato dalla sua codifica x ∈ N), e un qualunque dato di ingresso y ∈ N, A saprebbe dirci se il programmaM termina sull’input y. L’impatto sull’Informatica sarebbe della massima importanza: saremmo in grado divalutare correttamente ogni temporeggiamento del programma (dovuto a cicli in esecuzione o altro), saperecioé se l’attesa della terminazione sarà fruttuosa (“il programma M sta ancora girando, ma A garantisce cheM terminerà l’esecuzione e ci darà il risultato: restiamo pertanto in fiduciosa attesa”), oppure vana (“M staancora girando, e A ci ha detto che è in loop infinito: inutile quindi aspettare una risposta”).Purtroppo P non è un predicato ricorsivo. La dimostrazione è per assurdo. Supponiamo che P sia ricorsivo,quindi χP (x, y) è ricorsiva. Di conseguenza, per il Lemma di scambio, sarebbe ricorsivo

K(x) ≡ P (x,x) (⇔ ϕx(x) ↓)

Potremmo poi definire per casi la funzione

h(x) = ↑ se K(x)0 se ¬K(x)

25

Page 26: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Per il Lemma 4.11 (5) che h sarebbe ricorsiva, e quindi potremmo determinare un indice e ∈ N tale che ϕe = h.Ora, le definizioni di Q e di h implicano:

ϕx(x) ↓ ⇒ h(x) ↑ϕx(x) ↑ ⇒ h(x) ↓

D’altra parte ϕe(x) = h(x), quindi in base quanto sopra, ϕe(x) ↓ ⇔ h(x) ↓ ⇔ ϕx(x) ↑. Se x = e si arrivaall’assurdo: ϕe(e) ↓ ⇔ ϕe(e) ↑. Abbiamo quindi dimostrato il seguente risultato.

Teorema 6.1. Sia K(x) ≡ ϕx(x) ↓ (o equivalentemente, sia K = x ∣ ϕx(x) ↓). K non è ricorsivo.

[Nel seguito riguardaremo prevalentemente K come insieme (non come predicato)].Possiamo osservare che K ammette una procedura di semidecisione. Prendiamo la funzione universale ψ didue argomenti, per cui ψ(x, y) = ϕx(y). Abbiamo x ∈ K se e solo se ψ(x,x) ↓. La ricorsività di ψ fornisceallora questo metodo effettivo per stabilire almeno la risposta affermativa alla domanda “x ∈K?”.

Dato x, applica l’algoritmo che calcola ψ alla coppia (x,x) e resta in attesa: se l’algoritmoconverge, allora sai con certezza che x ∈ K, e puoi restituire il risultato 1. Altrimenti, in caso diloop infinito non potrai mai avere la risposta: in quel caso si avrà divergenza.

L’esistenza di questo metodo effettivo prova, attraverso la tesi di Church, che la seguente funzione semica-ratteristica di K è ricorsiva.

χ(s)K (x) = 1 se x ∈K

↑ se x ∉K

Possiamo comunque evitare la tesi di Church e dimostrare formalmente tale risultato.

Lemma 6.2. χ(s)K (x) ∈ RIC.

Dimostrazione Basta osservare

χ(s)K (x) = Cost1(ψ(x,x))

e concludere, essendo χ(s)K è ottenuta per composizione di funzioni ricorsive.

K è un esempio di insieme semidecidibile.

Definizione 6.3. Diciamo che un predicato P ⊆ Nk è parzialmente decidibile o semidecidibile o ricorsiva-mente enumerabile (r.e.) se la sua funzione semicaratteristica

χ(s)P (x) = 1 se P (x)

↑ se ¬P (x)

è ricorsiva. Similmente viene definita la nozione di semidecidibilità (o ricorsiva enumerabilità) sugli insiemi.Indichiamo con RE la classe dei predicati (o degli insiemi) ricorsivamente enumerabili.

Lemma 6.4. K è il primo esempio di insieme r.e. in quanto χ(s)K è ricorsiva per il Lemma 6.2.

La nozione di semidecidibilità è più debole di quella di decidilità: non è quindi sorprendente che esserericorsivo implica essere r.e.

Lemma 6.5. Ogni predicato ricorsivo P è anche r.e.

Dimostrazione Due dimostrazioni, la prima usando la tesi di Church. Se abbiamo la procedura effettiva checalcola χP , possiamo operare questa modifica:

dato x, calcola con il metodo effettivo che hai a disposizione χP (x). Se il risultato è 1, restituiscilo.Se il risultato è 0, vai in loop infinito.

Questa seconda procedura è chiaramente effettiva (il risultato 1, quando c’è, viene prodotto da χP (x) in unnumero finito di passi), e quindi χ(s)

A è ricorsiva.Senza tesi di Church: sia P ricorsivo con χP ∈ RIC. Produciamo una “apparente ricerca”, che in realtà creail loop infinito desiderato, nel caso in cu si abbia i ¬χP (x). Basta allora porre

χ(s)P (x) = Cost1(µz.[1 − χP (x) = 0])

P r.e. non implica P ricorsivo (un controesempio è K), ma vale il seguente risultato.

26

Page 27: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Lemma 6.6. Siano P e la sua negazione ¬P r.e. Allora P è ricorsivo.

Dimostrazione La procedura di decisione è quella ovvia: prendiamo i due algoritmi A e A che semidecidonoP e ¬P rispettivamente. Dato x, è chiaro che uno dei due terminerà. Per garantirsi la risposta basta portareavanti in parallelo i due algoritmi: se P (x) = tt, terminerà A; se P (x) = ff, ovvero ¬P (x) = tt, terminerà A.In tutti e due casi avremo la risposta in un tempo finito. Ciò che non si deve fare è dedicare tutti gli sforzi aun solo algoritmo, lasciando l’altro inoperoso: perchè se è il secondo quello che può rispondere in un tempofinito, tale risposta non arriverà mai se esso resta in attesa della terminazione del primo. La traduzioneformale del metodo sopra è come segue. Siano a, a ∈ N tali che

ϕa = χ(s)P

ϕa = χ(s)P

Consideriamo la seguente funzione ricorsiva:

h(x) = χS(a, x,1, µt.[H(a, x, t) ∨H(a, x, t)])

Proviamo che h è la funzione caratteristica di P . Infatti, sia t∗ = µt.[H(a, x, t) ∨ H(a, x, t)] Si osserviche per quanto detto sopra, t∗ è sempre definito, poiché, comunque si scelga x, una delle due funzionisemicaratteristiche converge sempre. Abbiamo

χS(a, x,1, t∗) = 1⇔ S(a, x,1, t∗) = tt

⇔ ϕa(x) ↓t∗ 1

⇔ χ(s)P (x) ↓t∗ 1

⇒ P (x) = tt

E abbiamo anche

χS(a, x,1, t∗) = 0⇔ S(a, x,1, t∗) = ff

⇔ ϕa(x) /↓t∗ 1⇔ ϕa(x) ↓t∗ per definizione di t∗

⇔ χ(s)P

(x) ↓t∗ 1

⇒ ¬P (x) = tt

⇔ P (x) = ff

Riassumendo

h(x) = 1 se P (x)0 se ¬P (x)

e quindi h(x) = χP (x).

Osservazione 6.7. Una importante conseguenza del Lemma 6.6 è la non-chiusura degli r.e. per nega-zione/complementazione. Infatti, se assumessimo tale chiusura, dalla semidecidilità di K deriveremmo lasemidecidibilità di K e quindi, per il lemma, la ricorsività di K, il che sarebbe in contraddizione con ilTeorema 6.1.

Molte delle proprietà di chiusura dei predicati ricorsivi valgono anche per gli insiemi r.e. Cambiano peròalcune dimostrazioni, in quanto le funzioni semicaratteristiche sono parziali, ed eventuali sotto-processi di-vergenti talora creano divergenze indesiderate nel processo globale (si veda ad esempio il caso della chiusuradegli r.e. per unione/disgiunzione).

Lemma 6.8. Siano P,Q ∈ RE(Nk). Allora P ∧Q,P ∨Q ∈ RE.

Dimostrazione Proviamo che P ∧Q è r.e. Dalle due funzioni semicaratteristiche χ(s)P e χ(s)

Q , definiamo

χ(s)(P∧Q)(x) = χ

(s)P (x) ∗ χ(s)

Q (x)

Se P (x) = Q(x) = tt, segue dalla definizione che χ(s)(P∧Q)(x) = 1. Se invece P (x) = ff oppure Q(x) = ff, allora

χ(s)P (x) ↑ oppure χ(s)

Q (x) ↑, e quindi il prodotto a secondo membro diverge.

27

Page 28: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Per quanto riguarda P ∨Q, diamo dapprima una dimostrazione che fa ricorso alla tesi di Church. χ(s)(P∨Q)

può essere calcolata da questo metodo effettivo:- Dato x, procedi alternativamente con entrambe le computazioni di χ(s)

P (x) e χ(s)Q (x). Appena una delle due

restituisce come risultato 1, termina il processo e restituisci 1 come risultato. Se entrambe le computazionidivergono, allora χ(P∨Q(x) deve divergere, quindi non devi dare alcun risultato.Procediamo ora in modo più formale. Si osservi che la dimostrazione vista nel caso primitivo ricorsivo ericorsivo in questo caso non è corretta:

Cost1(χ(s)P (x) + χ(s)

Q (x))

è infatti la funzione semicaratteristica della congiunzione dei due predicati! (ad esempio, se P (x) è vero, maQ(x) no, si osservi che il risultato non è 1, ma la divergenza).Siano a, b tali che ϕa = χ(s)

P , ϕb = χ(s)Q . Osserviamo che χP (x) = 1 se e solo se esiste t tale che H(a, x, t)

(ovvero (χH(a, x, t) = 1) e similmente χQ(x) = 1 se e solo se esiste t′ tale che H(b, x, t′). Abbiamo allora che

χ(s)(P∨Q)(x) = Cost1(µz. [H(a, x, z) ∨ H(b, x, z)])

A secondo membro abbiamo una funzione definita per composizione di due funzioni ricorsive, la secondadella quali ottenuta per minimizzazione a partire dal predicato ricorsivo H (si veda il Teorema 4.20). Quindiχ(s)(P∨Q) ∈ RIC.

Lemma 6.9. Sia P (x, y) ∈ RE. Formiamo i due predicati

Q1(x,w) = ∀z < w.P (x, z)Q2(x,w) = ∃z < w.P (x, z)

Allora Q1 e Q2 sono r.e.

Dimostrazione Per Q1 la dimostrazione è come nel caso degli insiemi ricorsivi. Basta definire

χ(s)Q1

(x,w) = ∏z<w

χ(s)P (x, z)

Nel caso di Q2 non si può procedere come nel caso ricorsivo, per il problema evidenziato sopra nel caso didisgiunzione di predicati. La dimostrazione corretta usa il predicato H. Sia e ∈ N tale che χ(s)

P = ϕe, quindi

P (x, z)⇔ ∃t. H(e, (x, z), t)

Abbiamo allora

χ(s)Q2

(x,w) = Cost1(µt.[sg(∑z<w

χ(s)H (e, (x, z), t)) = 0]

(fare le osservazioni finali per completare la dimostrazione).

Lemma 6.10. Siano Pi ∈ RE(Nk) e fi ∶ Nk → N ∈ RIC, per ogni 1 ≤ i ≤ n. Sia Pi(x) ∧ Pj(x) = ff, per ognii ≠ j . Allora la funzione definita per casi:

h(x) =

⎧⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎩

f1(x) se P1(x)f2(x) se P2(x). . .fn(x) se Pn(x)↑ altrimenti

è ricorsiva.

Dimostrazione Siano a1, . . . an, b1, . . . , bn tali che

ϕai = χ(s)P1

ϕbi = fiper ogni 1 ≤ i ≤ n. Allora h può essere espressa come segue:

h(x) = π1(µz. [(S(b1, x, π1(z), π2(z)) ∧H(a1, x, π2(z))) ∨ . . . ∨ (S(bn, x, π1(z), π2(z)) ∧H(an, x, π2(z)))]

Supponiamo che sia h(x) = y come conseguenza del fatto che Pi∗(x) = tt e fi∗(x) = y. Allora esiste unminimo t′ ∈ N tale che H(ai∗ , x, t) ∧ S(bi∗ , x, y, t′). Pertanto z∗ = π(y, t′) è il valore cercato dall’operatore diminimizzazione e soddisfa π1(z∗) = y.In molte applicazioni il precedente lemma viene utilizzato con n = 1. Vale la pena scrivere la forma semplificataper questo caso.

28

Page 29: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Corollario 6.11. Sia f ricorsiva e P r.e. Allora

h(x) = f(x) se P (x)↑ se ¬P (x)

è ricorsiva.

Dimostrazione Applicare al caso n = 1 il Lemma 6.10, oppure procedere alla osservazione diretta:

h(x) = χ(s)P (x) ∗ f(x)

Esercizio 6.12. Siano fi ricorsive e Pi r.e. con Pi(x)∧Pj(x) = ff per ogni i ≠ j. A differenza del precedenteLemma 6.10, richiediamo inoltre P1(x) ∨ . . . ∨ Pn(x) = tt. Possiamo definire h come segue

h(x) =

⎧⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎩

f1(x) se P1(x)f2(x) se P2(x). . .fn(x) se Pn(x)

h risulta ricorsiva. Ma tale risultato non necessita di una nuova dimostrazione, in quanto è ovvia conseguenzadi un risultato precedente e di una osservazione. Quale è questa osservazione?

Lemma 6.13. Siano, per 1 ≤ i ≤ k, fi ∶ Np → N ∈ RIC e sia P ∈ RE(Nk). Allora il predicato

Q(x) = P (f1(x), . . . , fk(x))

è ricorsivamente enumerabile.

Dimostrazione Basta osservare

χ(s)Q (x) = χ(s)

P (fi(x), . . . , fk(x))

quindi χ(s)Q è ottenuta per composizione di funzioni ricorsive.

7 Rapporto fra predicati ricorsivi ed r.e.Esiste una caratterizzazione che chiarisce completamente il rapporto fra predicati ricorsivi ed r.e. Il primopasso è provare che la quantificazione esistenziale di un predicato ricorsivo produce un predicato r.e.

Lemma 7.1. Sia P (x, y) un predicato ricorsivo. Allora il predicato

Q(x) ≡ ∃z. P (x, z)

è r.e.

Dimostrazione Usando la tesi di Church: dato x, si può stabilire se Q(x) vale (ovvero χ(s)Q (x) = 1), come

segue:

1. poni z = 0;

2. calcola χA(x, z): dopo un tempo finito avrai la risposta. Se è 1, hai finito: Q(x) vale. Se inveceχA(x) = 0, incrementa z di una unità e riapplica il presente punto (2).

È chiaro che se esiste z ∈ N tale che χA(x, z) = 0, con la strategia sopra lo determiniamo; se invece tale z nonesiste, entriamo in un loop infinito. La strategia è effettiva, in quanto determina la risposta affermativa dopoun numero finito di iterazioni, usando come subroutine la strategia effettiva che calcola χA.Vediamo ora la dimostrazione che non usa la tesi di Church. L’intuizione su cui si basa è la stessa: utilizzarela minimizzazione per fare una ricerca che inizia da 0.

χ(s)Q (x) = Costa(µz. [1 − χP (x, z) = 0])

χ(s)Q è definita per composizione di funzioni ricorsive, di cui una ottenuta per minimizzazione da funzioni

ricorsive, e quindi è essa stessa ricorsiva. Ciò prova che Q è r.e.

29

Page 30: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Esercizio 7.2. Indeboliamo l’ipotesi del precedente lemma. Sia P (x, z) r.e. e definiamo

Q(x) = ∃z.P (x, z)

Provare, utilizzando la tesi di Church, che anche in questo caso Q è r.e. (questo esercizio viene risolto frapoco per via teorica: fatelo subito!).

Ecco la caratterizzazione degli insiemi r.e. in termini di insiemi ricorsivi e quantificazione esistenziale.

Teorema 7.3 (Teorema di Proiezione). 1. Sia P (x) r.e. Allora esiste un predicato ricorsivo R(x, y) taleche

P (x)⇔ ∃z.R(x, z)

2. Sia R(x, y) ricorsivo. Allora

P (x) ≡ ∃z.R(x, z)

è r.e.

Dimostrazione (1) Sia P r.e. di arietà k. Si ha χ(s)P ∈ RIC, e quindi esiste e ∈ N tale che ϕe = χ(s)

P . Abbiamoallora

P (x)⇔ χ(s)P (x) = 1

⇔ ϕe(x) = 1⇔ ∃t.ϕe(x) ↓t 1⇔ ∃t.H(e, x, t)

Per il Teorema 4.20 H è primitivo ricorsivo. Scegliendo R(x, y) ≡ H(e, x, y) (con e fissato, indice di χ(s)P )

otteniamo

P (x)⇔ ∃z.R(x, z)

(2) Sia R(x, y) ricorsivo. Allora P (x) ≡ ∃z.R(x, z) è r.e, poiché

χ(s)P (x) = Cost1(µz.[χR(x, z) = 1])

Osservazione 7.4. Si osservi che il punto (1) del Teorema di Proeizione può essere rafforzato richiedendoche R sia primitivo ricorsivo. Infatti come R viene scelto il predicato H che è primitivo ricorsivo.

Corollario 7.5. 1. Sia P (x, y) r.e. Allora Q(x) = ∃z.P (x, z) è r.e.

2. Sia P (x, y1, . . . yp) r.e. Allora Q(x) = ∃y1.∃y2. . . . .∃yp.P (x, y1, . . . , yp) è r.e.

Dimostrazione (1) Per il Teorema di Proiezione esiste R(x, y, u) (primitivo) ricorsivo tale che

P (x, y)⇔ ∃u.R(x, y, u)

Quindi Q(x)⇔ ∃w.∃u.R(x,w, u). Ora basta osservare che la ricerca della coppia di valori (w,u) può essereridotta alla ricerca di un solo numero naturale z, usando la codifica π ∶ N2 → N (quindi z = π(w,u)):

Q(x)⇔ ∃z.R(x, π1(z), π2(z))

(2) Iterare p volte il punto (1).

Esercizio 7.6. Stabilire una relazione fra il Teorema di Kleene e il Teorema di Proiezione.

Lemma 7.7. Data una funzione g ∶ Nk → N, si definisca il predicato

P (x, y) ≡ [g(x) = y]

Allora g è ricorsiva se e solo se P è r.e.

30

Page 31: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Dimostrazione (⇒) Sia g ricorsiva e sia e un suo indice, quindi ϕ(k)e = g. Allora

P (x, y)⇔ [g(x) = y]⇔ [ϕ(k)

e (x) = y]⇔ ∃t.S(e, x, y, t)

Essendo il predicato S (primitivo) ricorsivo, segue dal Teorema di Proiezione che P è r.e.(⇐) Supponiamo che P sia r.e. Allora per il Teorema di Proiezione esiste un predicato ricorsivo R tale che

P (x, y)⇔ ∃t.R(x, y, t)

Definiamo per composizione e minimizzazione la seguente funzione h, che risulta ricorsiva per il Lemma4.12(2):

h(x) = π1(µz.R(x, π1(z), π2(z)))

Se h(x) = y, allora esiste z∗ tale che

R(x, π1(z∗), π2(z∗)) (1)π1(z∗) = y (2)

(1) implica che vale P (x, y), ovvero g(x) = π1(z∗), e quindi, per (2), segue g(x) = y.Viceversa, sia g(x) = y. Allora vale P (x, y), e quindi

∃t.R(x, y, t)

Sia t∗ il più piccolo valore per cui si ha R(x, y, t∗), e sia z∗ = π(y, t∗). Allora z∗ = µz.R(x, π1(z), π2(z)), einoltre

h(x) = π1(z∗)= π1(π(y, t∗))= y

Abbiamo quindi provato

g(x) = y⇔ h(x) = y

g e h coincidono, h è ricorsiva, e quindi lo è anche g.

8 Altre caratterizzazioni dei predicati/insiemi r.e.Oltre al Teorema di Proiezione esistono altre interessanti caratterizzazioni degli r.e. [In questa sottosezionescriviamo esplicitamente la caratterizzazione anche per gli insiemi].

Definiamo, per ogni x ∈ N, i seguenti sottinsiemi di N:

Wx = dom(ϕx)Ex = cod(ϕx)

Le funzioni ϕx sono di arietà 1. Vedremo che gli insiemi Wx e Ex descrivono completamente tutti i predicatir.e. su N.

Lemma 8.1. P ∶ N→ Bool è r.e. se e solo se esiste un indice a ∈ N tale che

P (x)⇔ x ∈Wa

[Similmente: A ⊆ Nk è r.e se e solo se esiste a ∈ N tale che A =Wa]

Dimostrazione Dato un qualunque P predicato su Nk, si osservi che P (x) ⇔ x ∈ dom(χ(s)A ). Se P è r.e.

segue che χ(s)P è ricorsiva, quindi esiste a ∈ N tale che ϕa = χ(s)

A . Quindi P (x) ⇔ x ∈ dom(ϕa) ⇔ x ∈ Wa.Viceversa, ogni predicato del tipo x ∈Wa è r.e. in quanto

x ∈Wa⇔ ∃t.H(a, x, t)

quindi si conclude per il Teorema di Proiezione.

31

Page 32: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Lemma 8.2. Sia P predicato su N. P è r.e. se e solo se esiste a ∈ N tale che

P (x)⇔ x ∈ Ea

[A ⊆ N è r.e. se e sole se esiste a ∈ N tale che A = Ea].

Dimostrazione Usiamo il Corollario 6.11 per concludere che la funzione

h(x) = x se P (x)↑ se ¬P (x)

è ricorsiva. Quindi esiste a ∈ N tale che ϕa = h. Segue dalla definizione di h:

P (x)⇔ x ∈ dom(χ(s)A )

⇔ x ∈Wa

⇔ x ∈ Ea per definizione di h

Viceversa, il predicato P (x) ≡ [x ∈ Ea] è r.e. per ogni a ∈ N. Infatti

[x ∈ Ea]⇔ ∃u.∃t.S(a, u, x, t)

e la tesi segue applicando il Corollario 7.5(2).

Finora “X è un insieme ricorsivamente enumerabile” significa, sulla base della Definizione 6.3, che l’insiemeX è semidecidibile, ovvero la sua funzione semicaratteristica è ricorsiva. Il perché della scelta del nome “ri-corsivamente enumerabile”, oscuro fino a questo momento, viene spiegato dal prossimo teorema: un predicatodi P è semidecidibile se e solo se esiste una enumerazione ricorsiva del suo dominio di verità (si riveda laNotazione 2.1(7)).

Teorema 8.3. Sia P un predicato su N vero per almeno un punto x0. Allora P è semidecidibile se e solose esiste una funzione g ∶ N→ N, ricorsiva, totale, tale che x ∈ cod(g)⇔ P (x), ovvero se e solo se esiste unaenumerazione ricorsiva del dominio di verità di P .[∅ ≠ A ⊆ N è semidecidibile se e solo se esiste una enumerazione ricorsiva g tale che cod(g) = A].

Dimostrazione (⇒) Sia P semidecidibile, e sia e ∈ N tale che ϕe = χ(s)P . Allora abbiamo

(†) P (x)⇔ ∃t.H(e, x, t)

Definiamo

h(x, t) = x se H(e, x, t)x0 se ¬He, x, t

La funzione h è ricorsiva per il Lemma 4.11(5). Consideriamo ora la funzione ricorsiva g(z) = h(π1(z), π2(z)).Abbiamo

g(z) = π1(z) se H(e, π1(z), π2(z))x0 se ¬H(e, π1(z), π2(z))

Proviamo che vale [P (x)⇔ x ∈ cod(g)].Abbiamo P (x)⇒ x ∈ cod(g). Infatti, per (†) esiste t∗ tale che H(e, x, t∗), quindi, scelto z∗ = π(x, t∗), segue

g(z∗) = π1(z∗)= π1(π(x, t∗))= x

Proviamo x ∈ cod(g)⇒ P (x). Sia x ∈ cod(g). Se x = x0 è ovvio che vale P (x). Altrimenti, esiste z ∈ N taleche x = π1(z) ed inoltre H(e, x, π2(z)). Quindi, ancora per (†), segue P (x).(⇐) Se P (x) ≡ [x ∈ cod(g)] con g ricorsiva, esiste a ∈ N tale che g = ϕa, quindi cod(g) = Ea, ed è allorasufficiente applicare il Lemma 8.2, implicazione (⇐).

Corollario 8.4. P predicato su N è r.e. se e solo se esiste una funzione totale ricorsiva g tale che

() P (x)⇔ µz.[g(z) = x] ↓

32

Page 33: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Dimostrazione (⇒) Sia g la enumerazione di P data dal Teorema 8.3. g realizza (). Infatti, se P (x) vale,allora l’insieme A = z ∣ g(z) = x è non vuoto, poiché x ∈ cod(g). Sia z∗ = minA. Inoltre, per ogni z′ < z∗,g(z′) ↓≠ x, poiché g è totale. Pertanto l’algoritmo su cui si basa la minimizzazione porta a individuare z∗

come risultato di µz.[g(z) = x]. In particolare, (µz.[g(z) = x]) ↓.Viceversa, se µz.[g(z) = x] ↓, allora esiste z∗ tale che g(z∗) = x, e quindi concludiamo x ∈ cod(g), ovveroP (x), per definizione di g come enumerazione di P .(⇐) La semicaratteristica di P è ricorsiva, poiché si ha

χ(s)P (x) = Cost1(µz.[g(z) = x])

Esercizio 8.5. Supponiamo che valga P (x) ⇔ x ∈ cod(g), con g ricorsiva ma non totale. Vale ancora ilCorollario 8.4?

Abbiamo visto la caratterizzazione dei predicati r.e. su N come codominio di funzioni totali ricorsive. Pos-siamo chiederci se per i predicati ricorsivi esiste una specializzazione della caratterizzazione precedente. Larisposta è data dal prossimo teorema.

Teorema 8.6. Un predicato P su N, infinito, è ricorsivo se e solo se esiste una funzione ricorsiva totale estrettamente crescente g tale che

P (x)⇔ [x ∈ cod(g)]

Dimostrazione (⇒) Sia P ricorsivo infinito. Definiamo il predicato

Q(z, u) ≡ [χP (z) = 1 ∧ z > u]

Q è ricorsivo, quindi per il Lemma 4.12(2) la funzione

k(u) = (µz.Q(z, u))

è ricorsiva. Inoltre, essendo P infinito, vale l’ipotesi del Lemma 4.12(3), quindi k è totale. Per composizione(con una funzione di proiezione) la funzione q(y, u) = k(u) è anch’essa ricorsiva e totale. Sia x0 = minx ∣P (x). Definiamo ora g =R(x0, q). Esplicitamente:

g(0) = x0

g(y + 1) = µz.[χP (z) = 1 ∧ z > g(y)]

Dal fatto che q è ricorsiva e totale, segue che anche g lo è. Abbiamo inoltre i seguenti fatti:- g è strettamente crescente per definizione;- ordiniamo in senso crescente gli elementi di Truth(P ) = x ∣ P (x), sia quindi

Truth(P ) = xn ∣ n ∈ N

con xi < xi+1 per ogni i ∈ N. Proviamo che tale ordinamento coincide con la enumerazione prodotta da g,ossia per ogni i si ha g(i) = xi. Infatti: si ha g(0) = x0 per definizione. Si abbia g(i) = xi. Segue

g(i + 1) = µz.[χP (z) = 1 ∧ z > g(i)]= µz.[P (z) ∧ z > xi] per ipotesi induttiva= xi+1

Abbiamo pertanto provato cod(g) = x ∣ P (x).(⇐) Sia

() P (x)⇔ [x ∈ cod(g)]

con g ricorsiva totale strettamente crescente. Vogliamo provare che P è ricorsivo. Si osservi che, essendo gstrettamente crescente, z ≥ x + 1 ⇒ g(z) ≥ x + 1, quindi

(♯) [x ∈ cod(g)]⇔ ∃z < x + 1.[g(z) = x]

Il predicato [g(z) = x] è ricorsivo per il Lemma 4.12(1). Per il Lemma 4.11(3) segue che il predicato in x

∃z < x + 1.[g(z) = x]

è ricorsivo, e quindi, utilizzando le equivalenze (♯) e (), otteniamo che anche P (x) ricorsivo.

Un commento per predicati di arietà k ≠ 1. Ovviamente in questo caso la caratterizzazione di un r.e. comecodominio di funzioni ricorsive totali non può valere, essendo ogni codominio un sottinsieme di N.Invece si dimostra facilmente questo risultato

33

Page 34: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Lemma 8.7. P predicato r.e. su Nk se e sole se esiste un a ∈ N tale che

P (x)⇔ x ∈W (k)a

dove W (k)a = dom(ϕ(k)

a ).

Dimostrazione Scegliere un indice a della funzione semicaratteristica di P .

In modo più sostanziale, possiamo osservare che lo studio degli r.e. (o dei ricorsivi) su Nk può essereintegralmente ricondotto al caso monodimensionale. Vediamo i dettagli nel caso di arietà 2.

Lemma 8.8. Sia P un predicato su N2. Consideriamo il predicato P π−1 definito mediante composizionenel modo ovvio:

P π−1(x) ≡ P (π1(x), π2(x))

dove π ∶ N2 → N è la bigezione introdotta nell’Esercizio 2.2. Viceversa, dato Q su N definiamo il predicatoQ π su N2:

(Q π)(x, y) ≡ Q(π(x, y))

Allora

1. P (x, y)⇔ ((P π−1) π)(x, y);

2. Q(z)⇔ ((Q π) π−1)(z);

3. P [primitivo ricorsivo]/[r.e.]/[ricorsivo] se e solo se P π−1 è [primitivo ricorsivo]/[r.e.]/[ricorsivo];

4. Q [primitivo ricorsivo]/[r.e.]/[ricorsivo] se e sole se Q π [primitivo ricorsivo]/[r.e.]/[ricorsivo].

Dimostrazione Per (1) e (2) basta svolgere i calcoli. Per quanto riguarda (3) e (4) applicare le proprie-tà di chiusura per composizione delle funzioni ricorsive/primitive ricorsive alla funzioni caratteristiche esemicaratteristiche. Svolgere per esteso la dimostrazione per esercizio.Utilizzando il punto 3 del Lemma 8.8, la classificazione di un predicato P su N2 è determinata dallaclassificazione del predicato unario P π−1.

Esercizio 8.9. Sia P un predicato r.e. su N2. Provare che esiste a ∈ N tale che

P ⇔Wa π

Osservazione 8.10. Ovviamente, utilizzando una opportuna bigezione primitiva ricorsiva γ ∶ Nk → N(indotta da π) il Lemma 8.8 si estende ad arietà arbitrarie.

9 m-riduzioniLa nozione di m-riduzione è fondamentale per collegare fra loro problemi. Dato un predicato Q su N,supponiamo di voler studiare il problema “Q(x)?”. La scrittura Q ≤m P (“Q si m-riduce a P ”) vuol direintuitivamente quanto segue:

esiste un metodo effettivoM che, preso un argomento x ∈ N, lo trasforma inM[x], in modo taleche

(†) Q(x)⇔ P (M[x])

Se vale (†), allora tutte le proprietà e i risultati su P invarianti per trasformazioni ricorsive (adesempio: essere ricorsivo, essere r.e.) possono essere trasferiti a Q. Si esprime di solito questofatto dicendo “il predicato Q è meno o ugualmente complesso di P ”.

Ad esempio, supponiamo che P sia ricorsivo. Se Q ≤m P possiamo concludere che anche Q è ricorsivo. Infatti,per decidere Q(x), è sufficiente trasformare x in x′ =M(x), e poi applicare l’algoritmo di decisione di P ax′.Vediamo ora la definizione formale. Il metodo effettivo M che trasforma i naturali altro non può essere,per via della tesi di Church, che una funzione ricorsiva, che deve altresì essere totale, in quanto deve fornirela trasformazione su ogni argomento x ∈ N. Questa osservazione è sufficiente per dare la definizione dim-riduzione.

34

Page 35: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Definizione 9.1. Dati due predicati P , Q, diciamo che Q si m-riduce a P (notazione Q ≤m P , o piùbrevemente Q ≤ P ) se esiste una funzione totale ricorsiva s tale che

Q(x)⇔ P (s(x))

s viene chiamata riduzione da Q a P .Diremo che P e Q sono m-equivalenti (P ≡m Q) se Q ≤m P e P ≤m Q.[Per gli insiemi: A ≤m B se e solo se esiste s totale ricorsiva tale che x ∈ A ⇔ s(x) ∈ B.]

Si vede subito componendo le funzioni di riduzione, che la relazione ≤m è transitiva.

Esercizio 9.2. Provare che s è una riduzione da Q a P se e solo se s−1(Truth(P )) = Truth(Q).

Vediamo ora comeQ ≤m P si rifletta effettivamente nel fatto di poter ottenere informazioni sulla classificazionedi Q attraverso P .

Lemma 9.3. Sia Q ≤m P . Allora

1. P ricorsivo implica Q ricorsivo;

2. P r.e. implica Q r.e.

Dimostrazione (1) Sia s totale ricorsiva tale che er ogni x ∈ N, si abbia

Q(x)⇔ P (s(x))

Questo implica

χQ(x) = χP (s(x))

La seconda funzione è ricorsiva, poiché è composizione di due funzioni ricorsive (χP lo è per ipotesi), quindiχQ ∈ RIC e pertanto Q è ricorsivo.(2) La dimostrazione per questo caso segue gli stessi passi del caso (1) con χ(s) al posto di χ.

Di grande utilità per derivare risultati negativi è il prossimo corollario, che è semplice conseguenza logica delprecedente lemma.

Corollario 9.4. Siano P,Q predicati su N, e si abbia Q ≤m P . Allora

1. Q non ricorsivo implica P non ricorsivo;

2. Q non r.e. implica P non r.e.

Vediamo qualche possibile applicazione.

Esercizio 9.5. Si consideri P (x) ≡ [ϕx(0) = 0]. Provare che P non è ricorsivo, ed è r.e.

Soluzione (la riduzione interviene nella prova che P non è ricorsivo). Consideriamo la funzione

f(x, y) = 0 se x ∈K↑ se x ∉K

f è ricorsiva per il Corollario 6.11, quindi possiamo applicare il Teorema smn: esiste s totale ricorsiva per cui

ϕs(x)(y) = f(x, y)

Abbiamo: x ∈K implica ϕs(x)(0) = 0, quindi P (s(x)).Se invece x ∈ K segue ϕs(x)(0) ↑, e pertanto ¬P (s(x)). Abbiamo quindi provato

x ∈K⇔ P (s(x))

Per il Corollario 9.4 P non può essere ricorsivo.Per provare che P è r.e. basta osservare

P (x)⇔ ∃t.S(x,0,0, t)

ed applicare il Teorema di Proiezione.Vediamo ora un risultato significativo: la dimostrazione che un certo predicato P è r.e. può sempre esserericondotta alla dimostrazione che K è r.e.

35

Page 36: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Teorema 9.6. Sia P un predicato r.e. Allora P ≤m K.

Dimostrazione Consideriamo la funzione

h(x, y) = 0 se P (y)↑ se ¬P (y)

Per il Corollario 6.11 h è ricorsiva. Applichiamo il Teorema smn per derivare l’esistenza di s ∶ N → N totalecomputabile tale che, per ogni x, y ∈ N,

ϕs(x)(y) = f(x, y)

Segue allora

P (x)⇒ ϕs(x) = Cost0

⇒ ϕs(x)(s(x))s(x) ∈K

¬P (x)⇒ ϕs(x) = Ω⇒ ϕs(x)(s(x)) ↑⇒ s(x) ∉K

Quindi abbiamo dimostrato

P (x)⇔ s(x) ∈K

per cui A ≤m K.

Esercizio 9.7. Si provi P ≤m Q ⇔ P ≤m Q.

Esercizio 9.8. Sia Tot = x ∣Wx = N (ossia: Tot è l’insieme degli indici delle funzioni totali). DimostrareK ≤m Tot e K ≤m Tot.

Soluzione (saltando qualche passaggio) La riduzione s da K a Tot.

ϕs(x)(y) = 0 se x ∈K↑ se x ∉K

Segue x ∈K ⇔ ϕs(x) totale ⇔ s(x) ∈ Tot. Quindi K ≤m Tot.La riduzione t da K a Tot.

ϕt(x)(y) = 0 se ϕx(x) /↓y↑ se ϕx(x) ↓y

Abbiamo x ∈K ⇔ ∃z.ϕx(x) ↓z y ⇒Ws(x) finito ⇒ s(x) ∉ Tot.x ∈ K ⇔ ∀z.ϕx(x) /↓z ⇒Ws(x) = N ⇒ s(x) ∈ Tot.

Lemma 9.9. Siano P,Q predicati non banali, entrambi ricorsivi. Allora P ≡m Q.

Dimostrazione Proviamo Q ≤m P . Siano x0 e x1 tali che P (x0) e ¬P (x1) (tali punti esistono in quanto Pè non banale). Definiamo la funzione

s(x) = x0 se Q(x)x1 se ¬Q(x)

s è ricorsiva per il Lemma 4.11(5) e fornisce la riduzione da Q a P . Infatti

Q(x)⇒ s(x) = x0 ⇒ P (s(x))¬Q(x)⇒ s(x) = x1 ⇒ ¬P (s(x))

Quindi

Q(x)⇔ P (s(x))

Simmetricamente si prova P ≤m Q.

36

Page 37: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

10 Insiemi di funzioniPossiamo estendere la teoria della calcolabilità a funzioni e operatori di ordine superiore. L’osservazione baseè che le funzioni ricorsive sono in quantità numerabile, ed esiste una enumerazione effettiva di esse. Moduloquesta enumerazione, è possibile trasferire le nozioni di decidibilità e semidecidibilità al contesto funzionale.Dato un insieme F di funzioni ricorsive, possiamo formare l’insieme dei suoi indici di funzione

i ∈ N ∣ ϕi ∈ F

e sulla base della classificazione di quest’ultimo insieme, classificare di conseguenza F . Gli insieme degliindici di insiemi di funzioni soddisfano la proprietà della prossima definizione, punto (1).

Definizione 10.1. 1. Diciamo che un sottinsieme B ⊆ N è k-funzionale, se

i ∈ B ∧ ϕ(k)i = ϕ(k)

j ⇒ j ∈ B

Si associa a B il corrispondente insieme di funzioni

Fun(B) = f ∶ Nk → N ∣ ∃i ∈ B. ϕ(k)i = f

2. Dato un qualunque insieme di funzioni F ⊆ (Nk → N) definiamo l’insieme Ind(F) dei suoi indici:

Ind(F) = i ∈ N ∣ ϕ(k)i ∈ F

Data una funzione f ∶ Nk → N scriviamo Ind(f) al posto di Ind(f).

3. Estendiamo la classificazione agli insiemi di funzioni. Diciamo che F ⊆ RIC è ricorsivo/r.e. se e solose tale è l’insieme Ind(F).

Nel seguito, applicheremo prevalentemente la definizione precedente al caso k = 1, e scriveremo funzionale alposto di 1-funzionale.Qualche esempio. Consideriamo la funzione Ω ovunque divergente. Ind(Ω) è l’insieme di tutti i possibiliindici di Ω, ossia

x ∈ Ind(Ω)⇔ ϕx = Ω

Sia n∗ un indice della funzione identità Id. Allora

Fun(n∗) = Id

mentre Ind(Fun(n∗)) è l’insieme infinito che contiene tutti i possibili indici della funzione identità.Se F è un insieme di funzioni non ricorsive, allora Ind(F) = ∅.Dalla definizione segue

F ⊇ Fun(Ind(F))

e che vale l’uguaglianza se F ⊆ RIC.Si osservi che

Lemma 10.2. Per ogni insieme di funzioni F , Ind(F) è funzionale.

Viceversa, per un qualunque insieme A si ha

A ⊆ Ind(Fun(A))

e vale l’uguaglianza se A è funzionale.Ora: un qualunque insieme funzionale, se non è banale, non può essere ricorsivo. Questo fatto discendeimmediatamente dalla nozione di riduzione.

Lemma 10.3 (Teorema di Rice). Sia A un insieme funzionale, non banale. Allora A non è ricorsivo.

Dimostrazione Possiamo supporre Ω ∉ Fun(A). Se così non fosse, ragioneremmo sul complementare,provando che A non può essere ricorsivo, quindi neppure A. Sia dunque Ω ∉ Fun(A), e sia f ∈ Fun(A).Definiamo

h(x, y) = f(y) se x ∈K↑ se x ∉K

37

Page 38: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Per il Corollario 6.11 h è ricorsiva. Per Teorema smn esiste s(x) totale computabile tale che ϕs(x)(y) = h(x, y),e quindi:

x ∈K ⇒ ϕs(x) = f⇒ s(x) ∈K poiché A è funzionale

x ∈ K ⇒ ϕs(x) = Ω⇒ s(x) ∉K

quindi abbiamo x ∈K ⇔ s(x) ∈ A. Se ne deduce che A non può essere ricorsivo per il Corollario 9.4.

Esercizio 10.4. Si riprenda l’esercizio 9.5 e si dimostri rapidamente che P (x) ≡ [ϕx(0) = 0] non è ricorsivo.

Soluzione Basta osservare che l’insieme Truth(P ) = x ∣ ϕx(0) = 0 è funzionale e non banale (ad esempioogni indice di Ω non gli appartiene, mentre ogni indice della funzione identità sì). Valgono quindi le ipotesidel Teorema di Rice e si può concludere che Truth(P ), e quindi P , non è ricorsivo.

Sia F(k) = (Nk → N) (tale insieme include anche le funzioni non ricorsive) e sia f ∈ F(k). Il grafo di f èl’insieme

graph(f) = (x, y) ∣ y = f(x)

Ad esempio, sia f(0) = 0, f(2) = 4, e diverga f su ogni altro argomento. Allora

graph(f) = (0,0), (2,4)

Diciamo che una funzione f è finita se graph(f) è finito (in genera si usa la lettera θ per denotare funzionifinite).

Esercizio 10.5. Provare che ogni funzione finita è ricorsiva.

Fra le funzioni possiamo introdurre una nozione di ordinamento basato sul contenuto di informazione: diciamoche h è una approssimazione di f se e solo se graph(h) ⊆ graph(f). In tal caso scriveremo h ⊑ f . La relazione⊑ è una relazione d’ordine parziale (ovvero è riflessiva, antisimmetrica e transitiva). Possiamo definire inaltro modo equivalente “⊑”:

h ⊑ f ≡ [∀x, y.h(x) = y⇒ f(x) = y]⇔ [∀x ∈ dom(h).h(x) = f(x)]

Discende subito dalla definizione che la funzione Ω, avendo grafo vuoto, approssima ogni altra funzione.Quando si disponde di “pezzi di informazione coerenti”, è possibile “raccordarli” per comporre una funzionemeglio definita, unendo i grafi. Vediamo un esempio. Si supponga di avere questi “pezzi di informazione”:due funzioni θ0 e θ1 tali che:

graph(θ0) = (0,2), (1,3)graph(θ1) = (1,3), (2,4), (6,6)

L’unione di questi grafi produce un risultato funzionalmente coerente, ossia un insieme di coppie che puòessere interpretato come il grafo di una nuova funzione θ′:

graph(θ′) = (0,2), (1,3), (2,4), (3,6)

È immediato verificare che θ′ è l’estremo superiore di θ0 e θ1: infatti θ0, θ1 ⊑ θ′, ed inoltre per ogni altrafunzione f , se θ0, θ1 ⊑ f , allora si ha anche θ′ ⊑ f . Ossia, θ′ è il più piccolo dei maggioranti di θ0 e θ1: il suocontenuto di informazione coincide esattamente con l’unione dei due contenuti precedenti, senza aggiungerenulla.Non è detto che l’operazione di estremo superiore di due funzioni sia sempre possibile. Ad esempio, sia:

graph(θ2) = (0,0)graph(g) = (x,x + 1) ∣ x ∈ N

Il grafo che risulta dall’unione è quello di una relazione r

graph(r) = (0,0), (0,1), (1,2), (2,3), . . .

che non può essere funzionale in quanto dovrebbe essere r(0) = 0 e r(0) = 1. Diamo quindi questa definizione.

38

Page 39: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Definizione 10.6. Sia F ⊆ F(k). Diciamo che F è coerente se per ogni f, g ∈ F

∀x, y. [f(x) = y ∧ g(x) ↓]⇒ g(x) = y

Dato un insieme coerente, possiamo determinare la funzione che raccoglie tutta l’informazione l’insiemecontiene.

Si osservi che a causa del requisito di coerenza ∣f(x ∣ f ∈ F∣ ≤ 1, quindi: se esiste f ∈ F tale che f(x) ↓,allora per ogni altra f ′ ∈ F si ha f ′(x) ↑, oppure f ′(x) = f(x).

Lemma 10.7. Sia F ⊆ F(k) un insieme coerente. Si definisce la funzione ⊔F ∶ Nk → N:

(⊔F)(x) = y⇔ ∃f ∈ F .f(x) = y

⊔F è l’estremo superiore di F , ossia:

1. ⊔F è maggiorante di F :

∀f ∈ F .f ⊑⊔F

2. ⊔F è il più piccolo dei maggioranti:

[∀f ∈ F .f ⊑ g] ⇒ [⊔F ⊑ g]

Dimostrazione È immediato dalla definizione di ⊔F che se f(x) = y, per qualche f ∈ F , allora deve ancheessere (⊔F)(x) = y.Sia g un maggiorante di F . Sia ⊔(F)(x) = y. Allora esiste f ∈ F tale che f(x) = y. Essendo f ⊑ g, segueg(x) = y, quindi ⊔F ⊑ g.La dimostrazione del prossima lemma è lasciata per esercizio.

Lemma 10.8. Sia (fn)n∈N una catena di funzioni crescenti, ovvero per ogni n ∈ N sia fn ⊑ fn+1. Allora(fn)n è un insieme coerente, e quindi esiste ⊔n fn.

Di particolare interesse sono gli insiemi F costituiti da sequenze (θn)n∈N con θn ⊑ θn+1 per ogni n. Conside-riamo ad esempio la funzione successore succ. Per ogni n ∈ N definiamo

θn(x) = x + 1 se x < n↑ se x ≥ n

Abbiamo

θ0(0) ↑ θ1(0) = 1 θ2(0) = 1 θ3(0) = 1 . . .θ0(1) ↑ θ1(1) ↑ θ2(1) = 2 θ3(1) = 2 . . .θ0(2) ↑ θ1(2) ↑ θ2(2) ↑ θ3(2) = 3 . . .θ0(3) ↑ θ1(3) ↑ θ2(3) ↑ θ3(3) ↑ . . .θ0(4) ↑ θ1(4) ↑ θ2(4) ↑ θ3(4) ↑ . . .. . . . . . . . . . . . . . .

Si ha dalla definizione θn(x) = θn+1(x) per ogni x ∈ [0, n − 1] ∪ [n + 1,∞], mentre θn(n) ↑, θn+1(n) = n + 1.Quindi θn ⊑ θn+1.Si osservi inoltre che per ogni x ∈ N c’è qualche θn per cui θn(x) = succ(x) (si scelga n > x). Quindi in basealla definizione di estremo superiore abbiamo

⊔n

θn = succ

Definizione 10.9. Definiamo FIN(k) l’insieme delle funzioni θ ∈ F(k) tale che dom(θ) è finito. Omettiamol’apice quando l’arietà è 1 oppure è evidente dal contesto.

Lemma 10.10. FIN(k) ⊆ RIC(k).

Lemma 10.11. Data una qualunque funzione f ∈ F(k), è possibile determinare una sequenza di funzionifinite (θn)n∈N tale che

⊔n

θn = f

39

Page 40: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Dimostrazione La dimostrazione è in sostanza la stessa vista nell’esempio sopra del successore. Bastadefinire

θn(x) = f(x) se ∣x∣ < n↑ se ∣x∣ ≥ n

dove ∣x∣ = x1 + x2 + . . . + xk.

Esercizio 10.12. Sia f ⊑ g con f totale. Provare che f = g.

Soluzione Sia g(x) = y. Siccome dom(f) = N, si ha f(x) = y′ per qualche y′. Ma essendo f ⊑ g deve esserey = y′. Abbiamo quindi: g(x) = y⇒ f(x) = y, il che implica g ⊑ f . Pertanto f ⊑ g ⊑ f , ovvero f = g.Anche se non avrà applicazione nel seguito di queste note, dimostriamo ora una proprietà importante: lefunzioni finite sono codificabili in N in modo effettivo.

Lemma 10.13. Per ogni k, esiste una bigezione effettiva (˜) ∶ FIN(k) → N.

Dimostrazione Riprendiamo la bigezione η ∶ Pfin(N) → N dell’Esercizio 3.42. Sia ζ ∶ Nk → N una bigezioneeffettiva (se k = 2, scegliere π, se k > 2 definirne una per composizione di π, come nell’Esercizio 2.3; se k = 1ζ è la funzione identità), e definiamo

θ = η(π(ζ(x), θ(x)) ∣ x ∈ dom(θ))

Ad esempio, consideriamo la funzione θ ∶ N→ N tale che dom(θ) = 0,2,

θ(0) = 0θ(2) = 0

Allora

θ = η(π(0,0), π(2,0))= η(0,3= 9

La dimostrazione del prossima lemma è lasciata come esercizio. Le funzioni λ(n) a(n, i) sono state definitenell’Esercizio 3.42: calcolano rispettivamente il numero di elementi dell’insieme X = η−1(n) e l’i-esimo ele-mento di X, per 1 ≤ i ≤ λ(n). Nel caso presente a(θ, i) calcola la codifica della coppia (x, θ(x)) che appareall’i-esimo posto nella lettura crescente di tali codifiche.

Lemma 10.14. 1. Sia θ una funzione finita di arietà k, codificata da θ ∈ N. Sia ζ ∶ Nk → N una bigezionericorsiva (ad esempio ottenuta da π per composizione; se k = 1, scegliere come ζ la funzione identità).Definiamo m ∶ N ×Nk → N come la funzione ricorsiva

m(θ, x) = µi < λ(θ) + 1.[ζ−1(π1(a(θ, i))) = x]

Allora

θ(x) = π2(a(θ,m(θ, x )) se 1 ≤m(θ, x) ≤ λ(θ)↑ altrimenti

La formula del Lemma 10.14 nasconde questo semplice algoritmo:

se vuoi calcolare θ(x), cerca nel grafo di θ una coppia che abbia come prima componente x, conla ricerca

µi < λ(θ) + 1.[ζ−1π1(a(θ, i))) = x]

L’indice i∗ che hai ottenuto (nella formula chiamato m(θ, x) lo userai per calcolare π2(a(θ, i∗)):questo valore è infatti la seconda componente di quella coppia, ovvero θ(x).

40

Page 41: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Teorema 10.15. Dato k ∈ N, consideriamo le funzioni finite FIN(k) e le loro relative codifiche in N datadalla bigezione () (come da Lemma 10.13). Allora la funzione U ∶ N ×Nk → N definita da

U(θ, x) = θ(x)

è ricorsiva.

Dimostrazione Discende immediatamente dalla formula finale del Lemma 10.14.

Sempre dal Lemma 10.14 discende la possibilità di esprimere i predicati x ∈ dom(θ) e y ∈ cod(θ) in funzionedel codifica θ, in modo decidibile.

Lemma 10.16. Sia θ ∈ FIN. Allora

x ∈ dom(θ)⇔ ∃i < λ(n) + 1.[i > 0 ∧ π1(a(θ, i)) = x]y ∈ cod(θ)⇔ ∃i < λ(n) + 1.[i > 0 ∧ π2(a(θ, i)) = y]

Entrambi i predicati sono pertanto ricorsivi.

Vediamo ora, su un esempio, come le funzioni finite possono intervenire nel processo (ricorsivo) di costruzionedi una funzione. Quanto segue contiene diverse idee rilevanti, quindi si consiglia di seguire con particolareattenzione (i dettagli tecnici non sono peraltro complicati).Consideriamo questo operatore Φ ∶ F(1) → F(1):

Φ(f)(x) = 1 se x = 0x ∗ f(x − 1) se x > 0

Ad esempio:

Φ(Ω)(x) = 1 se x = 0↑ se x > 0

Φ(succ)(x) = 1 se x = 0x2 se x > 0

L’operatore Φ può esser visto come un metodo effettivo per trasformare funzioni: si abbia una funzionecalcolabile f , calcolata da un qualche metodo effettivo A. Dato un qualunque argomento x ∈ N, siamoin grado di calcolare, attraverso semplici passaggi, anche Φ(f)(x): quando f(x − 1) è definita, otteniamoΦ(f)(x) moltiplicando per x: metodo effettivo, pertanto.Consideriamo ora questa funzione

f(n,x) = Φ(ϕn)(x) = 1 se x = 0x ∗ ϕn(x − 1) se x > 0

Usando la tesi di Church, si verifica che f è calcolabile: infatti da n possiamo costruire la macchina di Turingche calcola ϕn, e per quanto visto sopra la computazione di Φ(ϕn)(x) è effettiva. Visto che f è calcolabile,possiamo applicare il Teorema smn: esiste s totale computabile tale che

ϕs(n)(x) = f(n,x)

E successivamente, applicando il secondo Teorema di Ricorsione, otteniamo l’esistenza di un indice e ∈ N taleche

ϕs(e) = ϕe

ovvero

ϕe(x) = 1 se x = 0x ∗ ϕe(x − 1) se x > 0

D’altra parte, sappiamo che la funzione fattoriale fatt è l’unica che soddisfa la definizione ricorsiva

h(x) = 1 se x = 0x ∗ h(x − 1) se x > 0

41

Page 42: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Abbiamo quindi appena provato questo risultato: la funzione fattoriale ha un indice e ∈ N, e quindi abbiamodimostrato che è una funzione ricorsiva. Si osservi che questo risultato è stato provato per via generale, conuna tecnica totalmente differente dalle dimostrazioni delle precedenti sezioni. Questa nuova tecnica discendecome applicazione del Primo Teorema di Ricorsione che vedremo in seguito.

Passiamo ad una seconda osservazione. Analizziamo la sequenza di funzioni (Φ(n)(Ω))n∈N, dove Φ(n)(f)indica la composizione Φ(Φ(. . . (Φ(f)) . . .)) (Φ compare n volte nella composizione; si pone Φ(0)(f) = f).

Φ(0)(Ω)(x) = Ω(x)

Φ(Ω)(x) = 1 se x = 0↑ se x > 0

Φ(2)(Ω)(x) = 1 se x = 0 ∨ x = 1↑ se x > 1

Φ(3)(Ω)(x) =⎧⎪⎪⎪⎨⎪⎪⎪⎩

1 se x = 0 ∨ x = 12 se x = 2↑ se x > 2

Φ(4)(Ω)(x) =

⎧⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎩

1 se x = 0 ∨ x = 12 se x = 26 se x = 3↑ se x > 3

L’intuizione suggerisce (e si può dimostrare formalmente: provate per esercizio!) che

fatt =⊔n

Φ(n)(Ω)

Questo fatto non è accidentale, verrà ripreso nella Sezione 11.

Ora vediamo un importante risultato: sia F ⊆ F(1) un insieme r.e. di funzioni, e sia f ∈ F . Allora F devecontenere approssimazioni finite di f .

Teorema 10.17 (Teorema di Rice-Shapiro). Sia F ⊆ RIC r.e. ossia, in base alla Definizione 10.1(3), Ind(F)sia r.e. Allora

(RS) f ∈ F ⇔ ∃θ ⊑ f.θ ∈ F

Dimostrazione Mostriamo entrambe le implicazioni di (RS) per assurdo. Supponiamo che esista una f ∈ Ftale che, per ogni θ ⊆ f si abbia θ ∉ F . Definiamo la funzione

h(x, y) = f(y) se ϕx(x) /↓y↑ se ϕx(x) ↓y

h è ricorsiva per il Corollario 6.11 e possiamo quindi applicare il Teorema smn: esiste s totale computabiletale che

ϕs(x)(y) = h(x, y)

Segue:

x ∈K ⇒ ϕs(x) = f⇒ s(x) ∈ Ind(F)

x ∈ K ⇒ ∃y.ϕx(x) ↓y⇒ ϕs(x) ∈ FIN

⇒ ϕs(x) ∉ F per l’ipotesi fatta

Avremmo quindi una riduzione da K a Ind(F) che proverebbe che quest’ultimo insieme non sarebbe r.e.,contro l’ipotesi.

42

Page 43: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Viceversa, supponiamo che esista θ ∈ FIN tale che θ ∈ F , θ ⊑ f , ma f ∉ F . Definiamo la funzione

h(x, y) = f(y) se x ∈K ∨ [y ∈ dom(θ)]↑ altrimenti

h è ricorsiva. Applichiamo il Teorema smn: esiste t totale computabile tale che

ϕt(x)(y) = h(x, y)

Abbiamo:

x ∈K ⇒ ϕs(x) = f⇒ ϕs(x) ∉ F⇒ s(x) ∉ Ind(F)

x ∈ K ⇒ ϕs(x) = θ⇒ ϕs(x) ∈ F⇒ s(x) ∈ Ind(F)

Avremmo anche in questo caso una riduzione da K a Ind(F): assurdo.Il Teorema di Rice-Shapiro esprime formalmente un fatto abbastanza ovvio: se un insieme F di funzioni èsemidecidibile possiamo in un tempo finito stabilire f ∈ F ; questo significa che deve esistere una quantitàfinita di informazione su f che permette di prendere la semidecisione affermativa: questa quantità finitadi informazione è contenuta in θ ⊑ f . Viceversa, se una quantità finita di informazione θ è sufficienteper stabilire l’appartenenza a F (ossia: θ ∈ F) allora tale semidecisione non può essere contraddetta conincrementi ulteriori di informazione, per cui se θ ∈ F , tutte le funzioni che migliorano θ (ossia tutte le f percui θ ⊑ f) dovranno stare in F .

Corollario 10.18. Sia F ⊆ F(1) r.e. e sia f ∈ F . Allora esiste una sequenza di funzioni finite (θn)n tale che

∀n ∈ N. θn ∈ F (3)

⊔n

θn = f (4)

Dimostrazione Se f ∈ F , con F r.e., per il Teorema di Rice-Shapiro, implicazione (⇒) di (RS), deve esistereθ ⊑ f tale che θ ∈ F . Consideriamo ora questa sequenza di funzioni θn:

θn(x) = f(x) se x < n ∨ x ∈ dom(θ)↑ altrimenti

Abbiamo, θ0 = θ ed inoltre per ogni n ∈ N, θn ⊑ θn+1. Per l’implicazione (⇐) di (RS), segue che ogni θn è inF ed è ovviamente una funzione finita. Quindi vale (1). È anche ovvio dalla definizione θn ⊑ f per ogni n,in quanto ciascuna θ assume gli stessi valori di f su un dominio finito contenuto in dom(f). Infine, per ognix ∈ N si ha

⊔n

θn(x) = f(x)

Infatti, sia x ∈ dom(f). Allora si ha, per ogni m > x + 1, θm(x) = f(x), quindi ⊔n θn(x) = f(x).Il Teorema di Rice-Shapiro mette a disposizione un utile strumento per provare che insiemi di funzioni nonsono r.e. La formulazione esplicita è data nel prossimo corollario.

Corollario 10.19. Si abbia un insieme di funzioni F ⊆ RIC. Allora

1. Se si trova una f ∈ F tale che per ogni funzione finita θ ⊑ f si abbia θ ∉ F , allora F non è r.e.

2. Se si trova una coppia di funzioni (θ, f), con θ ∈ F finita, f ∉ F ed inoltre θ ⊑ f , allora F non è r.e.

Esercizio 10.20. Si provi che l’insieme Ftot delle funzioni totali ricorsive non può essere r.e.

Soluzione La funzione identità è totale. Ogni sua approssimazione finita non è totale e quindi non sta inFtot. Per il Corollario 10.19 segue che Ftot non può essere r.e.

43

Page 44: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

11 Operatori ricorsiviNel risolvere problemi matematici, è spesso naturale cercare soluzioni ricorsive, ossia, funzioni f definitemediante equazioni del tipo

f(x) = E(. . . , f, . . .)

dove E è una espressione non meglio specificata che contiene la funzione da definire, ovvero f . Questo tipodi definizione è pervasivo, e sorge in molti contesti, anche al di fuori della teoria della calcolabilità (si pensi,ad esempio, in Analisi, alle equazioni differenziali).

Esercizio 11.1. Si formano file di palline rosse e blu, lunghe n. Non si possono avere 3 palline rosseconsecutive. Quante file si possono formare, in funzione di n?

Soluzione Ad esempio, per n = 4 abbiamo 13 possibili file: tutte le file di lunghezza 4, meno RRRB, BRRR eRRRR. Una analisi del problema basata sulla scomposizione in sottoproblemi dà questa soluzione f∗ ∶ N→ N

f∗(n) = 2n se n ≤ 2f∗(n − 1) + f∗(n − 2) + f∗(n − 3) se n > 2

Ad esempio, f∗(4) = 13, f∗(5) = 24 e così via. Resta individuata dalla equazione una unica funzione totale.

Diamo quindi per assodata l’importanza delle equazioni ricorsive come strumento per definire funzioni. Quan-do le funzioni vengono definite in questo modo, non c’è garanzia che:(a) le funzioni siano computabili;(b) la definizioni individuino le funzioni in modo univoco.Ad esempio, si consideri questa equazione:

f(x) = f(x)

che definisce qualunque funzione! Viceversa una equazione ricorsiva del tipo:

f(x) = 1 se dom(f) è finito↑ se dom(f) infinito

non è soddisfatta da alcuna funzione.Oppure potremmo avere casi simili a questo:

f(x) =

⎧⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎩

1 se x = 0f(x − 1) + 1 se x > 0 ∧ f(x − 1) ↓ ∧ f(x − 1) ∈Kf(x − 1) + 2 se x > 0 ∧ f(x − 1) ↓ ∧ f(x − 1) ∈ K2 se x > 0 ∧ f(x − 1) ↑

dove la calcolabilità di f non è scontata.

In generale, il complesso di tutte le possibili equazioni ricorsive offre una varietà di definizioni che potrebbeandare oltre la Teoria della Calcolabilità. Nelle prossime righe circoscriveremo il campo.

Osserviamo che possiamo associare a ogni equazione ricorsiva un operatore, e la funzione definita attraversol’equazione può essere vista come un punto fisso dell’operatore. Ovvero, data una equzione

f(x) = E(. . . , f, . . .) (5)

possiamo considerare l’operatore Φ ∶ F(k) → F(k)

Φ(f)(x) = E(. . . , f, . . .) (6)

Quindi: l’equazione (5) viene reinterpretata nella definizione (6) dell’operatore Φ, e la ricerca delle soluzionidi (5) ricondotta alla ricerca dei punti fissi di (6). Vedremo i vantaggi di questo approccio.Ad esempio, possiamo considerare l’operatore Φ associato alla equazione dell’esercizio 11.1:

Φ ∶ F(1) → F(1)

che trasforma una funzione f ∶ N→ N in una nuova funzione Φ(f) ∶ N→ N definita come segue:

Φ(f)(x) = 2x se x ≤ 2f(x − 1) + f(x − 2) + f(x − 3) se x > 2

44

Page 45: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

La soluzione f∗ dell’esercizio può essere allora vista come punto fisso di Φ:

f∗ = Φ(f∗)

Da ora in avanti parleremo di operatori e di punti fissi. In base a quanto detto, potremo trasferire i risultatiche otterremo alla soluzione di equazioni ricorsive.

All’interno del presente contesto, ci interessa selezionare operatori Φ che

• preservino le funzioni computabili: se f ∈ RIC, si vuole Φ(f) ∈ RIC;

• trasformino gli argomenti secondo un metodo effettivo (sapere che Φ(f) è ricorsiva non serve a moltose non si sa come calcolarla)

I due requisiti sopra possono essere riassunti in una sola condizione

Definizione 11.2. Sia Φ ∶ F(k) → F(p). Diciamo che Φ è ricorsivo se il predicato

PΦ(e, x, y) ≡ [Φ(ϕe(x) = y]

è r.e. (si è scritto ϕe al posto di ϕ(k)e , e x per (x1, . . . , xp)).

Vediamo perché la condizione della Definizione 11.2 è sufficiente per garantire i due punti sopra. Si fissie∗ ∈ N. Allora il predicato

P ′(x, y) ≡ [Φ(ϕe∗)(x) = y]

è r.e. Per il Lemma 7.7, segue che la funzione Φ(ϕe) è ricorsiva.Inoltre, la semidecidibilità di PΦ, equivalente alla ricorsività di

χ(s)PΦ

(e, x, y) = 1 se Φ(ϕe)(x) = y↑ altrimenti

indica che il metodo che consente di passare da un indice e a Φ(ϕe), essendo dato da

e↦ χ(s)PΦ

(e,_,_)

è effettivo.

Una interessante conseguenza della Definizione 11.2 è la continuità degli operatori ricorsivi.

Definizione 11.3. Sia Φ ∶ F(k) → F(p). Diciamo che Φ è continuo se vale la condizione seguente:

Φ(f)(x) = y⇔ ∃θ ⊑ f. Φ(θ)(x) = y

Lemma 11.4. Ogni operatore Φ ricorsivo è anche continuo.

Dimostrazione Si fissino x ∈ Np, y ∈ N, e si consideri l’insieme di funzioni

Fx,y = f ∈ RIC ∣ Φ(f)(x) = y

La semidecidibilità di PΦ implica che è r.e. l’insieme

Ind(Fx,y) = e ∣ Φ(ϕe)(x) = y

e quindi anche Fx,y (per definizione). Applicando il teorema di Rice-Shapiro si ottiene immediatamente latesi.

Corollario 11.5. 1. Sia Φ un operatore continuo. Allora Φ è monotono, ossia

f ⊑ g⇒ Φ(f) ⊑ Φ(g)

2. Sia Φ un operatore ricorsivo. Allora Φ monotono.

Dimostrazione (1) Sia Φ(f)(x) = y. Allora per la Definizione 11.3 (freccia (⇒)), esiste θ ⊑ f tale cheΦ(θ)(x) = y. Ora, essendo la relazione “⊑” un ordine parziale, segue che vale anche θ ⊑ g. Ma allora, ancoraper la Definizione 11.3 (freccia (⇐)), segue Φ(g)(x) = y. Quindi si ha Φ(f) ⊑ Φ(g).(2) Immediato dal punto precedente, in quanto per il Lemma 11.4 Φ ricorsivo implica Φ monotono.

Il prossimo risultato caratterizza in modo forte gli operatori ricorsivi: il metodo effettivo con cui Φ trasformai suoi argomenti può essere descritto, sugli indici, da una funzione totale e calcolabile.

45

Page 46: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Teorema 11.6 (Myhill-Shepherdson). Sia Φ ∶ F(k) → F(p) ricorsivo. Allora esiste una funzione totalericorsiva s ∶ N→ N tale che

Φ(ϕe) = ϕs(e)

(si ricordi: ϕe ha arietà k, ϕs(e) arietà p).

Dimostrazione Essendo PΦ(e, x, y) r.e., segue dal Lemma 7.7 che la funzione

g(e, x) = Φ(ϕe)(x)

è ricorsiva. Applicando il Teorema smn segue l’esistenza di s totale computabile tale che

ϕs(e)(x) = g(e, x)

da cui la tesi.

Il prossimo teorema dà il risultato che serve per risolvere equazioni ricorsive, ovvero calcolare punti fissi dioperatori ricorsivi.

Teorema 11.7 (Primo Teorema di Ricorsione (Kleene)). Sia Φ ∶ F(k) → F(k) un operatore ricorsivo. alloraesiste una funzione ricorsiva f∗ che è il minimo punto fisso di Φ, ossia soddisfa queste due proprietà:

1.

Φ(f∗) = f∗

2.

Φ(h) = h⇒ f∗ ⊑ h

Dimostrazione Costruiamo una sequenza crescente di funzioni (fn)n∈N come segue:

f0 = Ωfn+1 = Φ(fn)

La sequenza (fn)n è crescente: dimostriamo per induzione su n che fn ⊑ fn+1. La tesi è ovvia per n = 0,essendo f0 la funzione ovunque divergente. Se la tesi è vera per n, si ha

fn ⊑ fn+1 ⇒ Φ(fn) ⊑ Φ(fn+1) essendo Φ monotono per il Corollario 11.5(2)⇔ fn+1 ⊑ fn+2

Per il Lemma 10.8 segue che (fn)n è coerente, quindi possiamo determinare l’estremo superiore

f∗ = ⊔n∈N

fn

Proviamo che f∗ è punto fisso di Φ. Mostreremo

Φ(f∗) ⊑ f∗ (a)f∗ ⊑ Φ(f∗) (b)

Proviamo (a). Abbiamo

f0 ⊑ Φ(f0)⊑ Φ(f∗) per monotonia di Φ, poiché f0 ⊑ f∗

Dato inoltre n ∈ N, segue

fn+1 = Φ(fn)⊑ Φ(f∗) per monotonia di Φ

Quindi, per ogni n ∈ N si ha fn ⊑ Φ(f∗), ovvero Φ(f∗) è un maggiorante di (fn)n. Essendo l’estremosuperiore f∗ il più piccolo dei maggioranti di (fn)n, segue

f∗ ⊑ Φ(f∗)

46

Page 47: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Proviamo (b). Supponiamo Φ(f∗)(x) = y. Allora, essendo Φ continuo, deve esistere una funzione finita θtale che θ ⊑ f∗ ed inoltre Φ(θ)(x) = y. Ora, se θ ⊑ f∗, deve esistere n ∈ N tale che θ ⊑ fn. Infatti, se così nonfosse, dovrebbe esistere x0 ∈ Nk tale che x0 ∈ dom(θ), e per ogni n ∈ N x0 ∉ dom(fn). D’altra parte θ ⊑ f∗implicherebbe x0 ∈ dom(f∗). Quindi avremmo f∗(x0) ↓ e per ogni n ∈ N, fn(x0) ↑ contro l’ipotesi f∗ = ⊔n fn.Quindi deve necessariamente esistere n ∈ N per cui θ ⊑ fn. Segue, per monotonia di Φ,

Φ(θ) ⊑ Φ(fn)= fn+1

⊑ f∗

In particolare segue da quanto sopra:

Φ(f∗)(x) = y⇒ Φ(θ)(x) = y⇒ f∗(x) = y

Questo significa

Φ(f∗) ⊑ f∗

e pertanto anche (b) è provata. Quindi abbiamo

f∗ = Φ(f∗)

Proviamo ora che f∗ è ricorsiva. Applicando il Teorema di Myhill-Shepherdson deriviamo l’esistenza di unafunzione totale computabile s tale che

Φ(φe)(x) = φs(e)(x)

Scegliamo ora un indice qualunque e0 tale che φe0 = Ω, e definiamo per ricorsione primitiva la funzioneg ∶ N→ N:

g(0) = e0

g(n + 1) = s(g(n))

Proviamo per induzione su n che

ϕg(n) = fn

Infatti, per n = 0 abbiamo

ϕg(0) = ϕe0= Ω= f0

Supponendo che la tesi sia vera per n, abbiamo

ϕg(n+1) = ϕs(g(n))= Φ(ϕg(n))= Φ(fn) per ipotesi induttiva= fn+1

Abbiamo allora, in base alla definizione di estremo superiore e a quanto sopra:

f∗(x) = y⇔ ∃n ∈ N.fn(x) = y⇔ ∃n ∈ N.ϕg(n)(x) = y⇔ ∃n.∃t.S(g(n), x, y, t)

Applicando il Corollario 7.5 del Teorema di proiezione deduciamo che il predicato dell’ultima riga è r.e. equini così è anche il predicato

f∗(x) = y

Infine, il Lemma 7.7 implica che la funzione f∗ è ricorsiva.

47

Page 48: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

Resta da provare che se h è un altro punto fisso di Φ, si ha f∗ ⊑ h. Allo scopo, è sufficiente dimostrare cheh è un maggiorante di (fn)n. Procediamo per induzione su n. È immediato che f0 ⊑ h. Supponiamo fn ⊑ h.Segue

fn+1 = Φ(fn)⊑ Φ(h) essendo Φ monotono= h essendo h punto fisso

Quindi ∀n ∈ N.fn ⊑ h, e pertanto f∗ ⊑ h.

Notazione 11.8. Spesso f∗ viene denotato con µΦ.

Il prossimo corollario collega il Primo Teorema di Ricorsione alle equazioni ricorsive. La sua dimostrazioneè immediata dal Teorema 11.7.

Corollario 11.9. Sia

f(x) = E(. . . , f, . . .) ()

una equazione ricorsiva a cui è associato un operatore Φ ∶ Nk → Nk ricorsivo. Allora µΦ è la minima soluzionedi ().

Siamo entrati pertanto in possesso di uno strumento che:

• discrimina le equazioni ricorsive, selezionando quelle che sono associate ad operatori Φ ricorsivi, che aloro volta hanno punti fissi calcolabili;

• offre una tecnica per determinare una soluzione canonica a dette equazioni, consistente nella detemi-nazione di µΦ.

Tornando a un precedente esempio, ecco quindi che l’equazione ricorsiva

f(x) = f(x)

assume un significato preciso: l’operatore associato è l’operatore identità

Φ0(f) = f

Questo operatore è ricorsivo, in quanto il predicato associato

PΦ0(e, x, y) ≡ [Φ0(ϕe)(x) = y]⇔ [ϕe(x) = y]

è r.e. Il minimo punto fisso è presto calcolato:

f0 = Ωf1 = Φ0(Ω) = Ω;f2 = Φ0(f1) = Φ0(Ω) = Ω . . .

Quindi ∀n ∈ N. fn = Ω, e pertanto µΦ0 = Ω. La funzione oveunque divergente Ω è assunta come soluzionedell’equazione.

Si osservi che il minimo punto fisso µΦ può essere considerato, da un punto di vista intuitivo, come lasoluzione più ragionevole dell’equazione ricorsiva associata a Φ. Infatti, µΦ è costruito con tutte e sole leinformazioni che si possono derivare da Φ, senza aggiunte arbitrarie (pur compatibili con l’operatore). Adesempio l’equazione ricorsiva

f(x) = 0 se x = 0f(x + 1) − 1 se x > 0

potrebbe essere risolta dalla funzione successore, o dalla funzione identità, o altre funzioni ancora, ma a benguardare l’equazione non offre nessun motivo per scegliere una funzione definita per qualche valore diversoda 0: ogni computazione che deriva dalla riscrittura entra in un loop infinito, se l’argomento x è diverso da0. Ad esempio:

f(1) = f(2) − 1 = f(3) − 1 − 1 . . .

48

Page 49: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

L’operatore associato all’equazione è

Φ1(f)(x) = 0 se x = 0f(x + 1) − 1 se x > 0

ed emerge da un semplice calcolo che

(µΦ1)(x) = 0 se x = 0↑ se x > 0

Si osservi come µΦ1 sia la soluzione più aderente al contenuto di informazione associato a Φ1.

Mostriamo ora la potenza della tecnica messa a punto producendo la prova che la funzione di Ackermann èricorsiva. Richiamiamo la definizione:

Ack(x,0) = x + 1Ack(0, y + 1) = Ack(1, y)

Ack(x + 1, y + 1) = Ack(Ack(x, y + 1), y)

Teorema 11.10. La funzione Ack è ricorsiva.

Dimostrazione Associamo alla equazione che definisce Ack il corrispondente operatore:

Φ(f)(x, y) =⎧⎪⎪⎪⎨⎪⎪⎪⎩

x + 1 se y = 0f(1, y − 1) se x = 0 ∧ y > 0f(f(x − 1, y), y − 1) se x > 0 ∧ y > 0

Proviamo che Φ è ricorsivo. Allo scopo consideriamo il predicato

PΦ(e, x, y, z) ≡ [Φ(ϕe)(x, y) = z]

e proviamo che è r.e. Sia ψ la funzione universale tale che ψ(e, x, y) = φe(x, y).

Φ(ϕe)(x, y) = z⇔[y = 0 ∧ x + 1 = z]

∨[x = 0 ∧ y > 0 ∧ ψ(e,1, y − 1) = z]∨[x > 0 ∧ y > 0 ∧ ψ(e,ψ(e, x − 1, y), y − 1) = z]

Il predicato a destra è un disgiunzione di congiunzioni di predicati r.e. (si usi il Lemma 7.7 per dedurre lasemidecidibilità dei predicati che coinvolgono ψ) ed è quindi r.e. per il Lemma 6.8. Dal Primo Teorema diRicorsione segue che il minimo punto fisso f∗ =def µΦ è una funzione ricorsiva che risolve l’equazione

f∗ = Φ(f∗)

e quindi soddisfa l’equazione che definisce la funzione di Ackermann. La dimostrazione non è ancora completaperché non abbiamo ancora la certezza che f∗ = Ack. Sicuramente, essendo Ack un punto fisso di Φ, deveessere f∗ ⊑ Ack. Ora, si osservi che f∗ è una funzione totale (questa dimostrazione può essere fatta perinduzione sull’ordinamento lessicografico su N ×N: farla per esercizio). Segue allora dell’Esercizio 10.12 chef∗ = Ack. Pertanto Ack è ricorsiva.

Esercizio 11.11. Dimostrare che l’equazione sottostante ammette una unica soluzione totale e ricorsiva:

f(x) = x + 1 se x ≤ 2f(x − 1) + f(x/2) + 3 se x > 2

Soluzione L’operatore associato all’equazione è Φ ∶ F(1) → F(1):

Φ(f)(x) = x + 1 se x ≤ 2f(x − 1) + f(x/2) + 3 se x > 2

Il predicato associato:

PΦ(e, x, y) ≡ [Φ(ϕe)(x) = y]⇔ [[x ≤ 2] ∧ [x + 1 = y]] ∨ [[x > 2] ∧ [ψ(e, x − 1) + ψ(e, x/2) − 3 = y]]

49

Page 50: 1 LatesidiChurchfabio.alessi/folder/info02U.pdf · 1.Se un qualunque metodo di calcolo effettivo è in grado di calcolare una funzione f∶Nk →N, allora questafunzioneènecessariamentericorsiva.

è r.e. Quindi per il Primo Teorema di Ricorsione esiste nelle funzioni ricorsive il minimo punto fisso µΦ.Proviamo che tale punto fisso è totale. Sia f∗ = µΦ.Proviamo per induzione la proprietà seguente:

∀n ∈ N.n ∈ dom(()fn+1)

dove fn = Φ(n)(Ω).Se n = 0,1 la tesi è immediata dalla definizione di Φ, in quanto 0,1 sono nel dominio di ogni fn, per n > 0.Supponiamo la tesi vera per n. Allora

fn+2(n + 1) = Φ(fn+1)(n + 1)= fn+1(n) + fn+1((n + 1)/2) + 3

Per ipotesi induttiva sia fn+1(n) che fn+1((n + 1)/2) convergono (si osservi che (n + 1)/2 ≤ n. Quindiconcludiamo fn+2(n + 1) ↓. Pertanto abbiamo che f∗ è definita su tutto N ed è quindi l’unico punto fisso diΦ.

Riferimenti bibliografici[1] N. J. Cutland. Computability. An introduction to recursive function theory. Cambridge University

Press, 1980.

[2] John E. Hopcroft, Rajeev Motwani and Jeffrey D. Ullman. Automi, linguaggi e calcolabilità (ed. italiana).Pearson Education Italia, 2007.

[3] Piergiorgio Odifreddi. Classical Recursion Theory (2 vol). North Holland, 1989.

50