Sei sulla pagina 1di 107

Informati

a
Teori a
Appunti del orso
Prof. Andrea Asperti

by Roberto Sottile | sottileCS.UniBO.IT

Bologna, CdL Informati a, AA 2000{2001

Indi e
1 Numerabilita

1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13

De nizione di numerabilita . . . . . . . . . .
Somma disgiunta . . . . . . . . . . . . . . .
Aggiungere un elemento . . . . . . . . . . .
Finito + numerabile . . . . . . . . . . . . .
Numerabile + numerabile . . . . . . . . . .
Dalla somma al prodotto artesiano . . . . .
Te ni a diagonale . . . . . . . . . . . . . . .
Prodotto artesiano generalizzato . . . . . .
Unione disgiunta generalizzata . . . . . . . .
Insieme delle parti nite . . . . . . . . . . .
Insiemi di funzioni . . . . . . . . . . . . . .
Funzioni da N a 2 : 2N . . . . . . . . . . .
1.12.1 Dimostrazione per diagonalizzazione
Funzioni da N a N : N N . . . . . . . . . .

2 Cal olabilita

2.1
2.2
2.3

Nozione di Algoritmo . . . . . .
Funzioni primitive ri orsive . . .
2.2.1 De nizione formale . . .
Predi ati . . . . . . . . . . . . .
2.3.1 Proprieta . . . . . . . .
2.3.2 Corollario . . . . . . . .
2.3.3 Appli azioni . . . . . . .
2.4 Il on etto di minimo . . . . . .
2.4.1 Minimizzazione limitata
2.5 Pairing . . . . . . . . . . . . . .
2.5.1 Esempi e appli azioni . .
1

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2
2
3
3
3
3
4
5
6
7
8
8
9
10
12

12
13
14
17
18
18
20
20
21
22
23

2.6
2.7
2.8

La storia di f . . . . . . . . . . . . . . . . . . . . . .
Ri orsione vs Iterazione . . . . . . . . . . . . . . . .
2.7.1 Asserzione . . . . . . . . . . . . . . . . . . . .
S hema Iterativo . . . . . . . . . . . . . . . . . . . .
2.8.1 Iterazione + Coppie () Ri orsione Primitiva

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

3 La funzione di A kermann

24
24
25
25
26
28

3.1 De nizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 -notazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Linguaggi funzionali

4.1
4.2
4.3
4.4
4.5

De nizione . . . . . . . . . . . . . . . . . .
Ri orsione di ordine superiore . . . . . . .
Osservazioni . . . . . . . . . . . . . . . . .
In ompletezza del Sistema T . . . . . . . .
Ipotesi di al olabilita . . . . . . . . . . .
4.5.1 La Tesi di Chur h (indimostrabile)

5 Teoria Assiomati a della Cal olabilita

5.1 Funzioni al olabili . . . . . . . . . .


5.1.1 Enumerazione dei programmi
5.2 Il Teorema SMN . . . . . . . . . . .
5.2.1 Teorema 1 . . . . . . . . . . .
5.2.2 Teorema 2 . . . . . . . . . . .
5.2.3 Teorema SMN . . . . . . . . .
5.3 Conseguenze . . . . . . . . . . . . . .
5.4 La funzione di Terminazione . . . . .
5.4.1 Osservazione . . . . . . . . . .
5.5 Il Problema della Totalita . . . . . .
5.5.1 Osservazione . . . . . . . . . .
5.6 \f e ostante" e de idibile? . . . . .
5.7 Equivalenza di programmi . . . . . .
5.8 Problemi inde idibili . . . . . . . . .

6 Il Teorema di Ri e

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

32

32
35
36
36
37
38

39

39
40
41
41
41
41
42
42
43
43
44
44
45
46

47

6.1 Proprieta estensionali e intensionali . . . . . . . . . . . . . . . 47


6.1.1 Esempi . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.2 Teorema di Ri e . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2

6.3 Estensione totale di una funzione parziale .


6.3.1 Teorema . . . . . . . . . . . . . . .
6.3.2 Dimostrazione . . . . . . . . . . . .
6.4 Il predi ato T di Kleene . . . . . . . . . .
6.4.1 Teorema . . . . . . . . . . . . . . .
6.4.2 Dimostrazione . . . . . . . . . . . .
6.4.3 Il Predi ato T . . . . . . . . . . . .
6.5 p e davvero ne essario? . . . . . . . . . . .
6.5.1 Teorema . . . . . . . . . . . . . . .
6.5.2 Dimostrazione . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

7 Insiemi Ri orsivi e Ri orsivamente Enumerabili

7.1
7.2
7.3
7.4

7.5
7.6
7.7
7.8

De nizioni . . . . . . . . . . . . . . .
Teorema . . . . . . . . . . . . . . . .
7.2.1 Dimostrazione . . . . . . . . .
Teorema . . . . . . . . . . . . . . . .
7.3.1 Dimostrazione . . . . . . . . .
Teorema . . . . . . . . . . . . . . . .
7.4.1 Dimostrazione . . . . . . . . .
7.4.2 Corollario . . . . . . . . . . .
Teorema di aratterizzazione per r.e.
7.5.1 Dimostrazione . . . . . . . . .
Tutti i r.e. sono ri orsivi? . . . . . .
Insiemi , Proprieta . . . . . . . . .
Teorema . . . . . . . . . . . . . . . .
7.8.1 Dimostrazione . . . . . . . . .

8 Operazioni insiemisti he

8.1
8.2
8.3
8.4

Intersezione . . . . . . . . .
Unione . . . . . . . . . . . .
Complemetare . . . . . . . .
Immagini e ontroimmagini
8.4.1 Immagine . . . . . .
8.4.2 Controimmagine . .

.
.
.
.
.
.

9 Insiemi r.e.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

49
49
49
49
49
50
51
51
51
51
53

53
53
53
54
54
54
54
56
56
57
57
58
58
58

60

60
60
60
61
61
61

62

9.1 Notazione standard . . . . . . . . . . . . . . . . . . . . . . . . 62


9.2 Operazioni insiemisti he . . . . . . . . . . . . . . . . . . . . . 63
3

9.3
9.4
9.5
9.6
9.7

9.2.1 Controimmagine mediante f . . . . . . . . . . .


9.2.2 Immagine mediante f . . . . . . . . . . . . . . .
9.2.3 Unione ri orsiva di insiemi r.e. . . . . . . . . . .
9.2.4 Unione ri orsiva di insiemi ri orsivi niti . . . .
9.2.5 Unione r.e. di insiemi r.e. . . . . . . . . . . . .
9.2.6 Intersezione ri orsiva di insiemi r.e. e ri orsivi
Potenza del teorema di Ri e . . . . . . . . . . . . . . .
Estensione del Teorema di Ri e . . . . . . . . . . . . .
9.4.1 1. Monotonia o Chiusura verso l'alto . . . . . .
9.4.2 2. Continuita o Elementi Finiti . . . . . . . . .
Dai Wi alle 'i . . . . . . . . . . . . . . . . . . . . . . .
Appli azioni . . . . . . . . . . . . . . . . . . . . . . . .
Con lusioni . . . . . . . . . . . . . . . . . . . . . . . .
9.7.1 Teorema . . . . . . . . . . . . . . . . . . . . . .
9.7.2 Esempi semide idibili . . . . . . . . . . . . . . .

10 Teorema di Cal olabilita

10.1 Introduzione . . . . . . .
10.2 Funzionali Cal olabili . .
10.3 Teorema di Cal olabilita
10.3.1 Appli azioni . . .
10.3.2 Osservazione . . .
10.4 Dimostrazione . . . . . .
10.4.1 Monotonia . . . .
10.4.2 Continuita . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

11 Teorema del punto sso

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

11.1 Proprieta delle funzioni ontinue . . . . . . . . .


11.1.1 Teorema del punto sso . . . . . . . . .
11.1.2 Ri orsione e punti ssi . . . . . . . . . .
11.2 Teorema del punto sso di Kleene . . . . . . . .
11.2.1 Dimostrazione . . . . . . . . . . . . . . .
11.2.2 Considerazioni . . . . . . . . . . . . . . .
11.2.3 Osservazione . . . . . . . . . . . . . . . .
11.3 Appli azioni . . . . . . . . . . . . . . . . . . . .
11.3.1 Mnemoni o per dimostrazione . . . . . .
11.3.2 Dimostrazione di Ri e mediante Kleene .
4

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

63
63
63
64
65
65
66
67
67
67
69
70
71
71
71
72

72
73
75
76
79
79
79
80

83

83
83
84
84
85
85
86
87
87
87

12 La lasse delle funzioni al olabili

89

13 Rappresentabilita di funzioni

95

14 Rappresentabilita di relazioni

99

12.1 Teorema di Godel . . . . . . . . . . . . . . . . . . . . . . . . . 89


12.1.1 Dimostrazione . . . . . . . . . . . . . . . . . . . . . . . 89
13.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2 Aritmeti a di Robinson (R) . . . . . . . . . . . . . . . . . . .
13.2.1 Def: Rappresentazione Debole . . . . . . . . . . . . . .
13.2.2 Def: Rappresentazione . . . . . . . . . . . . . . . . . .
13.2.3 Def: Rappresentazione Forte . . . . . . . . . . . . . . .
13.3 Teoremi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.3.1 Teorema 1 . . . . . . . . . . . . . . . . . . . . . . . . .
13.3.2 Teorema 2 . . . . . . . . . . . . . . . . . . . . . . . . .
13.3.3 Teorema . . . . . . . . . . . . . . . . . . . . . . . . . .
13.3.4 Teorema (rappresentabilita di funzioni al olabili totali)
14.1 Introduzione . . . . . . . . . . . . . . .
14.2 Rappresentabilita di relazioni . . . . .
14.2.1 Debole rappresentabilita . . . .
14.2.2 Rappresentabilita . . . . . . . .
14.2.3 Forte rappresentabilita . . . . .
14.3 Funzioni aratteristi he . . . . . . . . .
14.3.1 Ri hiamo di de nizione . . . . .
14.3.2 De nizione 1 . . . . . . . . . .
14.3.3 De nizione 2 . . . . . . . . . .
14.4 Teorema 1: rappresentabile = ri orsivo
14.4.1 Dimostrazione . . . . . . . . . .
14.5 Teorema 2: deb. rappr. = r.e. . . . . .
14.5.1 Dimostrazione . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

. 99
. 99
. 99
. 100
. 100
. 100
. 100
. 100
. 100
. 101
. 101
. 101
. 101

15.1 De nizioni . . . . . . . . . . . . . . . . . .
15.1.1 In ompletezza . . . . . . . . . . . .
15.1.2 Inde idibilita . . . . . . . . . . . .
15.2 Teoremi . . . . . . . . . . . . . . . . . . .
15.2.1 Primo teorema di In ompletezza . .
15.2.2 Se ondo teorema di In ompletezza

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

. 102
. 102
. 102
. 102
. 102
. 102

15 In ompletezza e inde idibilita

.
.
.
.
.
.
.
.
.
.
.
.
.

95
95
96
96
96
96
96
96
97
97

102

Capitolo 1
Numerabilita
Si danno per gia note le nozioni di insieme, ardinalita, algebra degli insiemi,
relazioni, appli azioni (funzioni), e tutte le nozioni relative.

1.1 De nizione di numerabilita


Un insieme A e numerabile se esiste una funzione surgettiva da N in A:
9fsurj : N ! A

1.2 Somma disgiunta


Siano A e B insiemi, e onsideriamo la loro somma disgiunta de nita nel
seguente modo:
A  B = f< 0; a > ja 2 Ag [ f< 1; b > jb 2 B g
L'insieme he ne deriva sara formato dalle oppie ordinate del tipo (0; a)
e (1; b), osi he avra ome numero di elementi la somma delle ardinalita di
A e B.

1.3 Aggiungere un elemento


Sia A numerabile. Ci hiediamo he osa su ede se \espandiamo" A: fgA
e an ora numerabile?
A e numerabile: 9fsurj : N ! A
(
g (0) = 
de nis o: gsurj : N ! fg  A t: :
g (x + 1) = f (x)

Non fa io altro he ostruirmi una funzione g ad ho , he ome prima


immagine ha  dopodi he si omporta esattamente ome la f . [Paradosso
dell'albergo: Un albergo dispone di in nite amere, tutte o upate. Ma se
arriva un nuovo liente 'e sempre almeno una amera disponibile, basta
hiedere a tutti di spostarsi nella amera di an o | osa he posso sempre
fare dal momento he l'albergo ha in nite amere.

1.4 Finito + numerabile


Sia ora B nito. B  A e an ora numerabile, basta iterare jB j volte il
ragionamento appena fatto. E se B fosse numerabile?

1.5 Numerabile + numerabile


L'unione di insiemi numerabili e numerabile.

numerabili. Allora
fsurj : N ! A
i
gsurj : N ! B

hsurj

:N !AB

Infatti siano A e B

(
t: :

h(2x) = f (x)
h(2x + 1) = g (x)

1.6 Dalla somma al prodotto artesiano


De niamo il seguente insieme

2 = f0; 1g

In questa notazione e fa ile notare ome A  B sia isomorfo al prodotto


artesiano 2  A, ioe
AB 2A
7

e he
N N 2N

e he in generale se F e nito e N e numerabile, allora F  N e an ora


numerabile.
Ora i hiediamo se il prodotto artesiano tra due insiemi numerabili sia
an ora numerabile.

1.7 Te ni a diagonale
Per rispondere al quesito introdu iamo un importantissimo strumento di dimostrazione he prende il nome di te ni a diagonale. N  N lo si puo rappresentare ol seguente diagramma:
0
1
2
3
4  i
0 0
1
3
6
10
.
.
.
.
1 2
4
7
11
.
.
.
2 5
8
12
.
.
3 9
13
.
4 14
...
j
In questo modo ries o a numerare ogni oppia del prodotto artesiano.
Inoltre si vengono a formare delle diagonali on la proprieta he se i e j sono
rispettivamente l'indi e di riga e di olonna di un generi o elemento della
numerazione, e n il numero della diagonale su ui tale elemento gia e, si ha
he
n 1=i+j
vale a dire he lungo una diagonale la somma delle oordinate degli elementi
he vi gia iono e ostante ed e uguale al numero della diagonale - 1, di
8

onseguenza, se voglio sapere a he diagonale appartiene un erto elemento,


mi basta al olare (i + j + 1).
Il numero totale di elementi he gia iono sulle (i + j ) diagonali omplete
prima di un erto elemento < i; j > lo si puo al olare fa ilmente:
i+j
X
(i + j )(i + j + 1)
k=
2
k=0
Se aggiungo la quantita j avro il numero totale di elementi he ho numerato prima di un erto elemento < i; j >:
i+j
X
(i + j )(i + j + 1) =
ntot = j + k = j +
2
k=0
2
= (i + j )(i +2j + 1) + 2j = (i + j ) 2+ i + 3j

La funzione di oppia
(i + j )2 + i + 3j
f : N  N ! N tale he f (i; j ) =
2
asso ia ad ogni oppia di valori in N un valore in N ed e iniettiva e surgettiva. Quindi N  N e numerabile.

1.8 Prodotto artesiano generalizzato


In generale:
 se A e B sono numerabili, A  B e numerabile
 se A e numerabile, Ak = A|  A {z: : :  A} e numerabile.
 N k e numerabile
Infatti, N k = N  N k

k volte

, quindi e possibile interpretare ad esempio


una terna di valori ome un'opportuna oppia
< x; y; z >3 , < x; < y; z >2 >2
1

Esempio

Se voglio estrarre una terna da 12:


12 =< 2; 2 >=< 2; < 0; 1 > >=< 2; 0; 1 >

1.9 Unione disgiunta generalizzata


Consideriamo adesso l'insieme di tutte le sequenze nite di lunghezza arbitraria di interi. Ognuna di queste sequenze puo essere vista ome un parti olare
elemento di N k , ove k rappresenta la lunghezza della sequenza onsiderata.
Quindi studiare l'insieme he ontiene tutte le sequenze signi a studiare
la numerabilita di
S 

1
[

N k = f< 1; n > jn 2 Ng 
k=1
f< 2; n1; n2 > jni 2 Ng 

...
f< k; n1; n2 ; : : : ; nk > jni 2 Ng    
i ui elementi saranno tutti della forma sk = (k; x1 ; x2; : : : ; xk ) per opportuni
k (notiamo ome la prima omponente dell'elemento sk de nis e la lunghezza
della sequenza, e la omponente i + 1-esima, ioe xi , rappresenta l'i-esimo
arattere della sequenza).
Allora possiamo interpretare il generi o elemento sk nel seguente modo
sk = (k; x1 ; x2 ; : : : ; xk )
= < k; x1 ; x2; : : : ; xk >k+1
= < k; < x1; x2 ; : : : ; xk >k >2
= < k; < x1; < x2 ; : : : ; < xk 1; xk >| 2>2{z: : : >}2
k

10

Esempio

Prendiamo il numero 11. La oppia asso iata e < 3; 1 >.


Il primo elemento (il numero 3) mi di e quanti elementi devo estrarre dal
se ondo (il numero 1):
11 = < 3 ; 1 >
#
< 1 ; 0 >
#
< 0 ; 0 >
Da ui 11 =< 3; 1 >=< 1; 0; 0 >2 N 3. Fa endo il passaggio inverso si apis e
he ogni sk puo essere \ odi ata", di onseguenza l'insieme di partenza S e
numerabile.

1.10 Insieme delle parti nite


Si de nis e insieme delle parti nite di N l'insieme formato da tutti i sottoinsiemi niti di N
P  Pfin  fNk j jNk j 2 Ng  S
quindi e numerabile.
Esempio

Le frasi di un linguaggio L sono sequenza nite dell'alfabeto , e si ha


L  
 e numerabile (generalmente e nito), di onseguenza an he L lo e, basta
onsiderare L sottoinsieme di un insieme numerabile   P .
Questo risultato e importate per he a erma he ogni linguaggio e numerabile, e in parti olare ogni de nizione lo e, visto he le de nizioni sono
parti olari frasi di un linguaggio.

11

1.11 Insiemi di funzioni


Con la s rittura

BA

 ff j

f : A ! Bg

si intende l'insieme di tutte le funzioni da A a B .


Quindi
N 2 = Insieme di tutte le funzioni da 2 a N
= ff j f : 2 ! Ng
= ff j f : f0; 1g ! Ng
= oppie di elementi < n0 ; n1 >
= N N
Di onseguenza possiamo estendere i on etti gia esposti an he alle famiglie
di funzioni N A on A nito, jAj = k, dal momento he si omporta ome
N k (basta onsiderare k ome l'insieme dei primi k naturali, Nk ), e potremo
trattare
ABC = AB  AC
(le proprieta sugli esponenti sono onsistenti a livello insiemisti o, a patto
he le ardinalita di B e C siano nite). Quindi le funzioni da un insieme
nito ad un insieme in nito numerabile sono numerabili.
Ci hiediamo ora se vale an he il ontrario, ioe se le funzioni da un insieme in nito numerabile ad uno nito siano numerabili, e per far io iniziamo
a studiare 2N .

1.12 Funzioni da N a 2 : 2N

sia A  N . Si de nis e la funzione aratteristi a di A


(
1 se n 2 A
fA : A ! f0; 1g t: : fA (n) =
0 se n 62 A
tale per ui ogni insieme A e univo amente identi ato dalla sua funzione
aratteristi a.
Si ome A  N , A 2 P (N ), e per le onsiderazioni appena fatte, 2N 
P (N ).
Cantor dimostro he P (N ) non e numerabile, utilizzando il ragionamento
diagonale introdotto in pre edenza, dimostrando di fatto he non esiste una
12

funzione surgettiva N ! P (N )

(in generale, si puo dimostrare he non


puo esistere una funzione surgettiva A ! P (A), qualunque sia A, nito o
numerabile).

Dimostrazione

Supponiamo per assurdo 9gsurj : A ! P (A). Consideriamo il seguente


insieme:
 = fa 2 A j a 62 g(a)g
 e ben de nito, g e surgettiva per ipotesi, e   A per ostruzione.
Allora
9 : g ( ) = 
Ci hiediamo se 2 g():
Se 2 g () )g 2  ) 62 g () (assurdo)
Se 62 g ()

)g

62 

)

2 g ()

(assurdo)

1.12.1 Dimostrazione per diagonalizzazione

Costruiamo i una tabella a doppia entrata, le ui olonne sono tutti i naturali,


e le ui righe rappresentano le funzioni aratteristi he di ogni sottinsieme dei
naturali. Se ragioniamo per assurdo, questi sottinsiemi saranno numerabili,
di onseguenza potro univo amente riferirmi ad ognuno di loro mediante un
indi e. Naturalmente le righe e le olonne di questa tabella saranno in nite,
ma per il ragionamento appena fatto sono si uro he per ogni sottoinsieme
dei naturali i sara un erto indi e he lo aratterizza.
Quindi il generi o elemento < i; j > della tabella sara 1 se i 2 j , ove j e
l'indi e del sottoinsieme onsiderato, 0 altrimenti.
0 1 2 3 4  n 
1 01 1 1 0 0    1   
2 1 10 1 0 0    0   
3 0 0 01 0 1    1    (e g(3))
4 0 1 0 10 0    1   
...                        
P (N )

13

Se sono rius ito a numerare tutti i sottoinsiemi dei naturali, allora an he


la diagonale dello s hema mi rappresentera un erto sottoinsieme, osi ome
pure la sua omplementata (quella in api e). Ma la diagonale omplementata
non omparira mai tra le righe della tabella, poi he di eris e dalla prima
almeno per il primo elemento, dalla se onda almeno per il se ondo, e osi
via. Se ne dedu e he sono rius ito a trovare la funzione aratteristi a di un
sottoinsieme dei naturali he pero non ompare nella tabella (e quindi non
e sottoinsieme dei naturali, dal momento he li ho s ritti tutti), il he porta
ad un assurdo.
Se ne trae quindi la on lusione he 2N non e numerabile.

1.13 Funzioni da

N a N : NN

Segue immediatamente dal pre edente risultato.


La tabella avra inve e he solo 0 o 1, un qualsiasi intero. Ripetendo il
ragionamento diagonale ambiando arbitrariamente i termini sulla diagonale
prin ipale, mi verro a reare un sottoinsieme diverso da tutti gli altri e he
non ho quindi numerato, mentre per ipotesi li avevo eti hettati tutti, quindi
si ri ade an ora una volta nell'assurdo.
Di onseguenza N N non e numerabile, ioe le funzioni da interi a interi
(si generalizza parlando di interi on un erto abuso di linguaggio, ma tutto
e ri ondu ibile agli interi...) non sono numerabili.
Questo impli a he non tutte le funzioni sono de nibili, per he le de nizioni sono un'in nita numerabile (S1k=1 N k ), quindi ne restano \fuori"
un'in nita (non numerabile) he non solo non posso de nire, ma non posso
nean he des rivere.
[De nibile: esprimibile attraverso una sequenza nita di aratteri se ondo un determinato alfabeto

Osservazione

Esistono numeri reali he non posso de nire (non e he non sono rius ito
an ora a trovare una de nizione, non esiste per ragioni di ardinalita !).
Paradosso

De nizione: \Consideriamo il piu pi olo numero intero non de nibile on


meno di 100 aratteri"

14

Dato un qualunque sottoinsieme di N esiste un minimo in questo sottoinsieme, e lo hiameremo m. Ma allora la de nizione appena data e minore di
100 aratteri ma de nis e m, ontraddi endo se stessa...

15

Capitolo 2
Cal olabilita
Per al olabilita si intende l'insieme delle funzioni al olabili in modo algoritmi o (Ad esempio: tra le funzioni de nibili, quante e quali sono quelle
al olabili?)

2.1 Nozione di Algoritmo


Da ora in avanti si indi hera on A il generi o algoritmo.
Proprieta di A:
1. A deve avere lunghezza nita
Nel senso della sua de nizione, deve essere omposto da un numero
nito di istruzioni di lunghezza nita
2. Deve esistere un agente di al olo C in grado di eseguire le istruzioni
di A
(Uomo, automa, CPU, ...)
3. C deve poter disporre di dispositivi per la memorizzazione di risultati
intermedi
e di eventuali altri me anismi per tenere tra ia dell'ese uzione ( arta
e penna, memoria, ...)
4. Il al olo deve avvenire per passi dis reti, ioe senza ri orso a dispositivi
analogi i
C e A devono essere digitali
16

5.
6.
7.
8.
9.
10.

La omputazione deve essere deterministi a, ioe senza fare ri orso a


metodi random

All'interno di A non mi aspetto di trovare istruzioni di tipo probabilisti o o non deterministi o


Non devono esistere limitazioni alla dimensione dei dati di INPUT

Voglio he A sia de nito su input di qualunque dimensione, grande


n he si vuole (se ponessi limitazioni alle dimensioni dell'input la teoria
della al olabilita diventerebbe banale)
Deve esistere un limite nito al numero e alla omplessita delle istruzioni di A

Le istruzioni devono essere eseguite in un tempo omunque nito

Non devono esistere limitazioni alla quantita di memoria disponibile

E' un'in nita potenziale: si suppone he sia potenzialmente espandibile


in modo tale da averne n he me ne serve
Sono ammesse omputazioni on un numero di passi illimitato

Sono disposto ad ammettere he \sforino" ogni bound he impongo


Sono ammesse omputazioni in nite

Ammettiamo la non terminazione (loop). Vedremo he siamo ostretti


ad ammettere omputazioni in nite.

2.2 Funzioni primitive ri orsive


Dopo aver introdotto il on etto di algoritmo dobbiamo de nire dei sistemi
formali in ui poter esprimere questi A. Uno di questi formalismi e quello
delle funzioni primitive ri orsive.
Sono in generale funzioni della forma f : N k ! N .
De nizione: Una de nizione per f e ri orsiva se il valore di f su al uni
argomenti dipende dal valore di f su altri argomenti (di solito piu \sempli i").
Esempi:

 Fattoriale

fatt(0) = 1
fatt(n + 1) = (n + 1)  fatt(n)

17

 Fibona i

8
>
<fibo(0) = 1
fibo(1) = 1
>
:fibo(n + 2) = fibo(n) + fibo(n + 1)

2.2.1 De nizione formale

La famiglia delle funzioni primitive ri orsive e la piu pi ola lasse C di


funzioni he ontiene:
 Tutte le funzioni ostanti
f (x1 ; x2 ; : : : ; xk ) = m
on m 2 N
 Tutte le proiezioni (identita generalizzate)
f (x1 ; x2 ; : : : ; xk ) = xi
per qual he 1  i  k
 La funzione su essore
f (x) = x + 1
e hiusa rispetto alle seguenti operazioni:
1. Composizione
Sia h una funzione in C (devo averlo gia dimostrato) a n argomenti.
Siano g1; g2; : : : ; gn funzioni in C a k argomenti. Allora an he la f
de nita ome segue e in C
f (x) = h (g1 (x); g2 (x); : : : ; gn (x))
on x = (x1 ; x2 ; : : : ; xk )
2. Ri orsione primitiva
Sia g una funzione in C di k parametri, e h una funzione in C di k + 2
parametri. Allora an he la f di k + 1 parametri de nita ome segue e
in C
(
f (0; x) = g (x)
f :
f (y + 1; x) = h (y; f (y; x); x)
on x = (x1 ; x2 ; : : : ; xk )
18

Quindi una funzione f e primitiva ri orsiva se e solo se esiste una sequenza di funzioni f1; f2 ; : : : ; fn = f e dove ogni fi o e una funzione base
oppure e ottenuta da funzioni fj on j < i mediante omposizione o ri orsione
primitiva.
Esempio
f1 (x) = x
f2 (x) = x + 1
f3 (x; y; z ) = y
f4 (x; y; z ) = f(2 (f3 (x; y; z ))
f (0; x) = f1 (x)
f5 = 5
f5 (y + 1; x) = f4 (y; f5 (y; x); x)
f  f6 (x) = f5 (f1 (x); f1 (x))

he se letta dal basso verso l'alto produ e una sequenza di istruzioni he mi


de nis ono f .
Valutiamo f (2):
f (2) = f6 (2)
= f5 (f1(2); f1(2))
= f5 (f1(2); 2)
= f5 (2; 2)
= f4 (1; f5(1; 2); 2)
= f4 (1; f4(0; f5(0; 2); 2); 2)
= f4 (1; f4(0; f1(2); 2); 2)
= f4 (1; f4(0; 2; 2); 2)
= f4 (1; f2(f3(0; 2; 2)); 2)
= f4 (1; f2(2); 2)
= f4 (1; 3; 2)
= f2 (f3(1; 3; 2))
= f2 (3)
=4
Nel se ondo passaggio posso espandere f5 o f1. Dove vado? Tutte le strade
portano alla ne, allora ssiamo una onvenzione: inner-most / right-most
(valuto f dentro, e se uguali valuto quella a destra)
19

Ma he osa fa realmente la f ? Vediamo di \espandere" le de nizioni delle


varie fi nella de nizione di f , il he non sarebbe permesso dal formalismo in
ui lavoriamo, ma ssiamo la onvenzione he (a patto di sapere he io he
fa iamo non e formalmente orretto ), essendo il tutto noioso e illeggibile, i
autorizziamo a farlo.
f1 (x) = x
f2 (x) = x + 1
f3 (x; y; z ) = y
f4 (x; y; z )  (
y+1
f (0; x)  x
f5 = 5
f5 (y + 1; x)  f5 (y; x) + 1
f  f6 (x) = f5 (x; x)  add(x; x)

( add(y; x))

Cioe f e equivalente alla funzione he raddoppia l'input.


Le funzioni primitive ri orsive non sono tutte polinomiali

Infatti si potrebbe pensare he possano essere valutate omputazionalmente


ome O(nk ), on k pre ssato. Ma questo vale di erto per le funzioni base,
mentre per le funzioni ostruite per ri orsione primitiva non e piu detto he
questo limite superiore valga, dal momento he non posso assegnare a priori
al un k, visto he puo esistere una sequenza di hiamate he \supera" tal
limite.
Altri esempi:
 Moltipli azione
mult(0; x)
mult(y + 1; x)

Prede essore

=0
= add(x; mult(y; x))

pred(0)
pred(y + 1)

20

=0
=y

Test

Fattoriale

Sottrazione

Confronto

test(0)
test(x)
fatt(0)
fatt(y + 1)

=0
=1

=1
= mult(y + 1; fatt(y))

sub(0; m)
sub(n + 1; m)

=m
= pred(sub(n; m))
(

n=m
 sub(n; m) + sub(m; n) = 06= 0 se
se n 6= m
(
zero(0) = 1
zero(y ) = 1 test(y ) )
zero(y + 1) = 0
(
1 se n = m
ompare(n; m)  zero(f (n; m)) =
0 altrimenti
f (n; m)

Il onfronto e un tipi o esempio di predi ato, ioe una funzione aratteristi a a valori 0 o 1.

2.3 Predi ati


Sia P (n1; n2; : : : ; nk ) un predi ato su interi. Di o he P e primitivo ri orsivo
se e solo se la funzione aratteristi a CP e primitiva ri orsiva.
0
n1
B
n2
B
B
 ...
nk

1
C
C
C
A)

CP

% 0 se P non veri ato


& 1 se P veri ato

Allo stesso modo del onfronto quindi si possono implementare, mediante


l'uso dei predi ati, altre funzioni primitive ri orsive he de idano <; ; >; 
e in generale asserzioni di tipo matemati o he si possono valutare ome
TRUE o FALSE.
21

2.3.1 Proprieta

Le funzioni primitive ri orsive sono hiuse rispetto alla somma limitata e


rispetto al prodotto limitato.
Sia f (y; x) primitiva ri orsiva, allora
 Somma Limitata
f (z; x) 

X
yz

f (y; x)

2 f. primitive ri orsive

f (y; x)

2 f. primitive ri orsive

 Prodotto Limitato
f (z; x) 

Y
yz

Infatti ogni f ha asso iate una f e una f osi de nite:


(
f (0; x) = f (0; x)
f :
f (z + 1; x) = f (z; x) + f (z + 1; x)
f

f (0; x) = f (0; x)
f (z + 1; x) = f (z; x)  f (z + 1; x)

Quindi se f e primitiva ri orsiva, an he f e f lo sono, per he ostruite a partire da f mediante ostruttori primitivi ri orsivi (z + 1 lo si puo interpretare
ome su (z)).
2.3.2 Corollario

I predi ati primitivi ri orsivi sono hiusi rispetto ai onnettivi logi i e rispetto alle quanti azioni logi he limitate.

22

 Connettivi

8
P _Q
>
>
< P ^Q
Se P; Q sono predi ati primitivi ri orsivi, lo sono an he: > P ! Q
>
P
>
: ::Q

 Quanti atori (bounded da y pre ssato)

Se P e predi ato primitivo ri orsivo, lo sono an he:

8zy P (z; x)
9zy P (z; x)

Per la dimostrazione basta ri ordare he : e ^ formano un insieme ompleto


(da ui si possono dedurre _ e !), e he da : e 8 si puo dedurre 9. Quindi, se dimostriamo he i singoli onnettivi sono primitivi ri orsivi, avremo
dimostrato le a ermazioni date.
Connettivo : :

Sia P predi ato primitivo ri orsivo, allora an he la sua funzione aratteristi a


CP e primitiva ri orsiva. Dimostriamo he :P e p.r. studiando C:P :
si ha infatti he
C:P (x) = 1 CP (x)  sub(CP (x); 1)
he e hiaramente una funzione primitiva ri orsiva, da ui C:P e predi ato
primitivo ri orsivo.
Connettivo ^ :

Analogamente (ri ordiamo he l'AND logi o e rappresentabile ome prodotto


di predi ati...)
CP ^Q(x) = CP (x)  CQ(x)  mult(CP (x); CQ (x))

23

Quanti atore 8 :

Sia P (z; x) predi ato primitivo ri orsivo. Ho CP (z; x) primitiva ri orsiva.


Per dimostrare he il predi ato 8(z  y)P (z; x) e primitivo ri orsivo devo
dimostrare he C8(zy)P (z;x) e una funzione primitiva ri orsiva.
Ma a questo punto basta ri ordare he 8 e una generalizzazione di ^, e il
gio o e fatto:
Y
C8(zy)P (z;x) 
CP (z; x)
z y

Quanti atore 9 :

Analogamente, basta ri ordare he 9 e una generalizzazione di _:


X
C9(zy)P (z;x) 
CP (z; x)
z y

2.3.3 Appli azioni


Divisibilita tra interi
P

= \x divide y" () 9(n  y)(n  x = y)

Test di primalita
pr(x)

pr(x) = \x e primo"

() (x  1) ^ 8(y  x)((y divide x) ) (y = 1) _ (y = x))

2.4 Il on etto di

minimo

Voglio ora de nire la sequenza dei numeri primi.


P (x)=\x-esimo numero primo"

P (0) = 1
P (x + 1)=\Il piu pi olo numero

primo maggiore di P (x)"


Tradu endo in termini
matemati i:
(
P (0) = 1
P (x + 1) = minfy jpr(y ) ^ (y > P (x))g
24

Per vedere se questa e una funzione primitiva ri orsiva dobbiamo veri are
solo he min lo sia. La ri er a del minimo e molto importante nella teoria
della al olabilita, per questo introdu iamo l'operatore di minimizzazione:
y (pr(y ) ^ (y > P (x))
restituis e il piu pi olo y per ui vale il predi ato tra parentesi.
2.4.1 Minimizzazione limitata

Le funzioni primitive ri orsive sono hiuse rispetto alla minimizzazione limitata :


Sia R(y; x) un qualsiasi predi ato primitivo ri orsivo. Allora si ha:
(
minfnjR(n; x) ^ n  z g se fajR(a; x) ^ a  z g 6= 
(y  z )R(y; x) =
0
altrimenti
In prati a si tratta di una ri er a limitata no ad un valore massimo z. Se
trovo il minimo ok, altrimenti mi fermo ritornando 0.
Ora dimostro he se R(y; x) e primitivo ri orsivo, allora an he (y  z)R(y; x)
lo e.
Sia g(y; x) la funzione aratteristi a del predi ato
R(y; x) ^ 8(z < y ):R(z; x)
he e vera per y e falsa per tutti gli z < y, e an he per tutti gli z > y,
per he essendo vera per la prima parte falsi a la se onda parte (per tutti gli
y pre edenti la R non si veri a, ma inve e si veri a per y , quindi la frase
e falsa...)
(
0 se per y la R(y; x) non si veri a
g (y; x) =
1 se per y la R(y; x) si veri a, (y  minimo)
Quindi mi basta moltipli are il valore della g per l'y trovato e avro proprio
il valore del minimo. E dal momento he per tutti gli altri valori di y la g
restituis e 0, posso a orpare il tutto sotto il segno di sommatoria limitata.
Quindi:
X
(y  z )R(y; x) =
g (y; x)  y
yz

25

Torniamo ora alla numerazione dei numeri primi. Devo rius ire a trovare
un upper bound alla ri er a del minimo, e un limite superiore ragionevolmente stretto per P (x + 1) e dato dal fattoriale di (P (x) + 1), per he non e
divisibile per i pre edenti, e quindi o e lui o almeno e piu pi olo.
Di onseguenza si ha he:
(
P (0) =
1
P (x + 1) = (y  (P (x) + 1)!) (pr(x) ^ (y > P (x)))
Si puo dimostrare he il limite dato e primitivo ri orsivo, pero' dipende non
solo dall'ultimo valore ma da tutti i valori pre edenti. Quindi verrebbe da
hiedersi se questo limite e formalmente orretto nel nostro linguaggio, o
meglio se per al olarlo mi bastano gli strumenti di questo linguaggio o devo
us ire da esso. E qui i viene in aiuto la funzione di oppia he abbiamo
introdotto in pre edenza.

2.5 Pairing
Il oding del piano e primitivo ri orsivo. Infatti ad ogni oppia di interi
possiamo asso iare un punto ed un oding univo o.
Il problema ora e l'esatto inverso: vogliamo estrarre dalla odi a della oppia
le 2 oordinate he la ostituis ono.
Cioe:


(
n + m)2 + n + 3m
fst(< n; m >) = n
< n; m > =
()
snd(< n; m >) = m
2
L'idea e piuttosto sempli e: fa io una ri er a esaustiva, limitata dalla proprieta alquanto banale ma vera he le oordinate di una oppia sono  del
valore del oding della oppia. Si ha quindi he:


fst(p) = x  p(9y  p(< x; y >= p))
snd(p) = y  p(9x  p(< x; y >= p))
Essendo il oding iniettivo, ho he l'esistenza mi garantis e l'uni ita, inoltre
le funzioni si atte sono primitive ri orsive per tutto io he abbiamo visto,
di onseguenza an he il pairing e primitivo ri orsivo.
26

Osservazione

Avendo adesso a disposizione lo strumento per la odi a/de odi a di oppie, posso onsiderare i parametri delle funzioni non piu ome liste di variabili, ma ome tuple di interi, e quindi odi arle in modo da ri ondurre
la de nizione di funzioni non banalmente primitive ri orsive a de nizioni
formalmente orrette nel nostro linguaggio.
2.5.1 Esempi e appli azioni
Fibona i

fibo non e banalmente primitivo ri orsivo, poi he es e dallo s hema avendo
nel orpo della de nizione ri orsiva il valore attuale he dipende dai pre edenti due valori della funzione, mentre lo s hema di ri orsione a ede solo
all'ultimo valore.
Allora posso de nire una funzione ausiliaria he in qula he modo mi
\ri ordi" gli ultimi due valori, e hiamare quella inve e della funzione di
partenza:
fibo'(x) =< fibo(x); fibo(x 1) >
da ui posso al olare
fibo'(0) = < 1; 0 > (ma non i a edo mai)
fibo'(x + 1) = < fibo(x + 1); fibo(x) >
 < fst(fibo'(x)) + snd(fibo'(x)); fst(fibo'(x)) >
L'idea e he ad ogni passo la fibo'(x + 1) avra ome prima omponente la
somma delle omponenti della oppia risultante dalla hiamata pre edente
( ie il valore della su essione di Fibona i in x, vale a dire la somma dei
due pre edenti valori di fibo(x)), e per se onda omponente la prima omponente della oppia pre edente. Cosi questa nuova versione di Fibona i fa
riferimento solo al valore della hiamata pre edente, e di onseguenza non
viola piu le leggi dello s hema di ri orsione, infatti:
fibo(n)::=fst(fibo'(n))
e he quindi e tranquillamente primitiva ri orsiva.

27

2.6 La storia di f
Ci domandiamo se l'arti io usato per la su essione di Fibona i puo essere
generalizzato ad un numero arbitrario di parametri, ioe se puo una funzione dipendere da tutti i valori pre edenti e rimanere primitiva ri orsiva. La
risposta e senz'altro a ermativa, e a tal proposito introdu iamo la seguente
funzione:
Data una f (y; x) la \storia" di f e osi de nita:
f^(y; x) = < f (0; x); f (1; x); : : : ; f (y; x) >y+1
 << f (0; x); f (1; x) >; : : : >; f (y; x) |>2>2{z: : : >}2
y

Ho de omposto la tupla in oppie sempli i. Supponiamo di estendere lo


s hema di ri orsione primitiva on uno piu potente:
(
f (0; x)
= g(x)
f (y + 1; x) = h(y; f^(y; x); x)
Se ora dimostro he questo s hema, he apparentemente ri al a lo s hema
di ri orsione primitiva, e e ettivamente ri ondu ibile allo s hema lassi o,
avro dimostrato he per la ostruzione di funzioni primitive ri orsive si puo
utilizzare uno strumento molto potente ome quello della storia dei valori di
una funzione. Infatti:
(
= f (0; x) = g(x)
f^(0; x)
f^(y + 1; x) =< f^(y; x); f^(y + 1; x) >=< f^(y; x); h(y; f^(y; x); x) >
Che e una de nizione primitiva ri orsiva per f^ per il fatto he dipende
es lusivamente dal valore pre edente.

2.7 Ri orsione vs Iterazione


Prendiamo lo s hema di ri orsione senza parametri. Si ha he:
(
f (0) = m
f (y + 1) = h(y; f (y ))
Sembra ri orsivo, ma in realta e iterativo. Infatti basta porre:
28

f(y)::=

var res = m
for i := 0 to y
res := h ( i , res )
return res

e si vede immediatamente he i due algoritmi (quello matemati o e quello


in pseudo- odi e) al olano la stessa funzione. Si dimostra fa ilmente he la
funzione iterativa al ola f per induzione su y.
Il aso base e ovvio, entrambe le funzioni pongono f (0) = m.
i lo

1
...
y
y+1

res

0
...

...
y 1
f (y )
y
h(y; f (y ))

2.7.1 Asserzione

Le funzioni primitive ri orsive sono tutte e solo quelle for- al olabili.


Cioe itero una determinata funzione h partendo da un erto valore iniziale
m. Possiamo pensare ad uno s hema simile a quello di ri orsione primitiva
(ma piu debole) he atturi questa iterazione.

2.8 S hema Iterativo


Partendo dallo s hema ri orsivo sempli ato
(
f (0) = m
f (y + 1) = h(f (y ))
si opera un folding dei valori:
f (y + 1) = h(f (y ))
= h(h(f (y 1)))
= h(h(h(f (y 2))))
...
= h| (h(h{z(: : : (h}(m)) : : : )
y+1

29

2.8.1 Iterazione + Coppie

() Ri orsione Primitiva

Abbiamo visto ome si puo ri ondurre un numero arbitrario di variabili al


on etto di tupla, per poi odi arla interpretandola ome insieme di oppie.
Il passo inverso, inoltre, puo essere sempre possibile grazie alle proiezioni,
visti ome operatori standard.
Quindi dimostro he, avendo a disposizione lo s hema iterativo e il on etto di oppia, posso implementare la ri orsione primitiva (il senso ontrario
dell'impli azione e banale poi he abbiamo gia osservato he l'iterazione e un
aso parti olare di ri orsione primitiva | assenza di parametri).
Per la dimostrazione:
g (x)  < x; f (x) >
= < su (x); h(x; f (x)) >
= < x + 1; h(fst(g(x)); snd(g(x))) >
Se adesso io de nis o
next(p) =< su (fst(p)); h(fst(p); snd(p)) >
mi basta iterare y volte la next a partire dal valore iniziale < 0; m >, e
prendere la se onda proiezione del risultato. Si ha infatti
(
faux (0) =< 0; m >
f (y ) = snd(faux (y )) dove
faux (y + 1) = next(faux (y ))
Adesso posso de nire due nuovi ostrutti :
 Iterazione

Ite 0 h m ! m
< Ite n h m > ,
Ite y + 1 h m ! h(Ite y h m)
 Ri orsione primitiva
< Re n h m >

Re 0 h m ! m
Re y + 1 h m ! h(y; Re y h m)

on la di erenza he nell'iterazione si al ola il risultato a partire dal pre edente, mentre nella ri orsione primitiva si ha un'appli azione di h al risultato
pre edente.
Per entrambi i ostrutti: n; m 2 N e h : N ! N .
30

Osservazione

Il ostrutto di ri orsione primitiva sembra molto potente, e in orpora ome


abbiamo visto il ostrutto di iterazione. Allora viene da domandarsi se le
funzioni he possono essere al olate mediante questo s hema sono tutte le
funzioni al olabili ( ioe se e Turing ompleto ). La risposta e no, ed un noto
ontroesempio i aiutera a apire per he.

31

Capitolo 3
La funzione di A kermann
3.1 De nizione
La seguente funzione
f (0; 0; y )
f (0; x + 1; y )
f (1; 0; y )
f (z + 2; 0; y )
f (z + 1; x + 1; y )

= y
= f (0; x; y) + 1
= 0
= 1
= f (z; f (z + 1; x; y); y)
e nota ome funzione di A kermann.
E ben de nita, implementabile, terminante (infatti ad ogni passo di omputazione 'e qual osa he de res e), ma nonostante la sua apparenza inno ua
ha una omplessita mostruosa. Infatti risulta he
f (0; x; y ) = x + y
f (1; x; y ) = x  y
f (2; x; y ) = y x o
y
f (3; x; y ) = y y x volte
In questo aso vorremmo uno strumento per des rivere una funzione non per
osa fa, ma per ome e.
yy

32

3.2 -notazione
Se f : N  N ! N e una funzione tale he x; y 7! x + y, posso sempre
intendere x e y i dati di input e x + y l'output prodotto dalla funzione.
Allora si puo omprimere sinteti amente il tutto introdu endo la notazione
:
xy:x + y
Allora nello studio della funzione di A kermann:
f (0; x; y ) = xy:x + y
f (1; x; y ) = xy:x  y
f (2; x; y ) = Ite x xy:y  x 1
f (3; x; y ) = Ite x (Ite x xy:y  x 1) 1
In generale, quindi:
f (z + 1; x; y ) = (Ite x x:f (z; x; y ) 1)
ioe itero x volte la funzione del livello pre edente.
Ovviamente tutto io non e s rivibile nel formalismo primitivo ri orsivo, poi he la funzione di A kermann res e piu velo emente di qualsiasi funzione primitiva ri orsiva. Si puo dimostrare he una qualsiasi funzione primitiva ri orsiva e upper-bounded da un'opportuna istanza della funzione di A kermann,
avendone ssato il livello (z):
(~z fissato)
fpr (y; x) 2 O(fA k (~z ; u; v ))
E dal momento he la funzione di A kermann e e ettivamente al olabile, le
il formalismo delle funzioni primitive ri orsive non esprime tutte le funzioni
al olabili.
Osservazione

In realta, pero', abbiamo notato he il formalismo delle funzioni primitive


ri orsive e molto potente, e puo al olare parti olari istanze della funzione di A kermann (basta ssare la profondita del al olo di detta funzione).
Quindi Fpr non al ola tutte le funzioni al olabili, ma ries e a al olare
perfettamente tutte quelle almeno a ettabili. Di onseguenza e a meno di
parti olari esigenze, se al ola quelle a ettabili non i interessa piu di tanto he non ries a a al olare quelle ina ettabili (in termini di omplessita
omputazionale).
33

Tornando allo studio della funzione di A kermann:


f (3; x; y ) = (Ite x x:f (2; x; y ) 1)
= x:x:(Ite x x:(Ite x x:f (1; x; y) 1) 1)
= x:x:(Ite x x:(Ite x x:x  y 1) 1)
Ora, f (z +1; x; y) posso esprimerlo ome iterazione z volte di hx:(Ite x h 1)
a partire dalla funzione base x:x  y appli ata a 1:
f (z + 1; x; y ) = ((Ite z hx:(Ite x h 1) x:x  y ) x)
e per maggior leggibilita...
f (2; x; y ) = ((hx:(Ite x h 1))(x:x  y )(x)
= ((x:(Ite x x:x  y 1)(x)
= Ite x x:x  y 1
Ho espresso fA k attraverso Ite, ma mi sono permesso di estendere il ostrutto:
 prima era...
< Ite n h m >

 ...adesso e
< Ite n h g >

8
n2N
>
>
<h : N  N ! N
() >m 2 N
>
:Risultato 2 N

8
n2N
>
>
<h : N N ! N N (e un funzionale)
() >g : N  N ! N
>
:Risultato : N  N ! N

In prati a mi autorizzo a lavorare non piu su tipi primitivi, ma an he su tipi


di ordine superiore. Detto questo, lo s hema e sempli emente iterativo, e mi
permette di al olare funzioni di omplessita enorme.
34

Osservazione

E le ito domandarsi se e possibile esprimere tutto questo in un formalismo,


estendendo Fpr a grandezze di ordine superiore. La risposta e si, attraverso
il Sistema T di Godel (1958) | noi lo studieremo non troppo in dettaglio,
er ando di omprendere l'importanza dei tipi di ordine superiore per apire
le potenzialita aggiuntive di un linguaggio equipaggiato di detti tipi.

35

Capitolo 4
Linguaggi funzionali
4.1 De nizione
In molti linguaggi, ompresi molti dei linguaggi di progrmmazione piu di usi
e studiati (C, Pas al, e .) non puo essere utilizzata una funzione on appli azione parziale dei parametri. Ad esempio, se f (x; y) e la mia funzione,
non posso hiamarla passandole solo un parametro dal momento he e stata
de nita per avere 2 parametri in ingresso ( ioe non posso hiamare f (2)).
Ma questo pre lude una enorme opportunita: non posso ostruire funzioni
piu omplesse a partire da funzioni piu sempli i in modo automati o.
I linguaggi funzionali inve e mi permettono tale operazione:
f (x; y ) = x + y
f (x) ,! g (y )  x + y
Da ui:
f (2) ,! g (y )  2 + y
Cioe mi aspetto he la hiamata parziale ritorni una funzione he ompleti
la funzione di partenza, e he il tutto parta ol al olo solo quando ho tutti
i parametri espli itati, e l'utilita di un me anismo del genere puo essere
immediatamente visibile:
f (x; y ) = x + y
Definis o g (n)  Ite n f (2) 0
= 2| + (2 + (2{z +    + 0})) : : : )
n
= 2n
36

Abbiamo visto ome la funzione di A kermann non sia esprimibile nel Formalismo Primitivo Ri orsivo, infatti, sebbene basata su strutture iterative, ad
un erto punto dovevamo iterare un iteratore, e questo sfuggiva alla potenza
espressiva di quel formalismo. E abbiamo an he notato ome questo osta olo potrebbe essere rimosso ammettendo di poter hiamare una funzione i
ui parametri non siano stati tutti espli itati in pre edenza, per poi ottenere
un'altra funzione in output he si aspetta he detti parametri vengano forniti
prima di iniziare la sua e ettiva omputazione.
Il problema sostanziale quindi risiede nei tipi he il mio linguaggio mette a
disposizione, tant'e vero he il formalismo primitivo ri orsivo ( he ammetteva
ome uni o tipo gli interi) si \fermava" non appena in ontrava un'operazione
di tipo N k ! N .
Ora inve e voglio de nire l'operatore \!" ome ostruttore a partire dai
tipi base N (interi) e B (booleani) nel seguente modo:
 ostruttori
1. Coppia : se T1 e T2 sono tipi del linguaggio, allora T1  T2 e un
tipo del linguaggio
2. Fre ia : la funzione T1 ! T2 appartiene al linguaggio
 onvenzione: per l'operatore ! assumiamo asso iativita a destra :
A ! B ! C  A ! (B ! C )
ioe f : A ! B ! C e una funzione he prende in input un valore
di tipo A e restituis e una funzione di tipo B ! C . Da notare he
assomiglia molto alla s rittura (A  B ) ! C (in ui sono ostretto a
passare due valori, uno di A e uno di B , per ottenere un valore di tipo
C ), solo he qui posso passare an he solo il tipo A, e ome risultato
avro una funzione he si aspetta B per proseguire nella omputazione
(e in prati a l'estensione funzionale vista po o fa).
Tale s rittura (notazione urry- ata) e omunque da non onfondersi
assolutamente on (A ! B ) ! C . Non sono la stessa osa.
I termini del mio linguaggio sono un'in nita numerabile di variabili per ogni
tipo de nito. Le notazioni he introdu iamo ora si leggono dall'alto verso il
basso on senso di impli azione logi a (se ... allora):
37

1. oppia < M; N > 2 T1  T2

M : T1 N : T2
< M; N > : T1  T2

2. selettore per la prima omponente della oppia M


M : T1  T2
fst(M ) : T1
3. selettore per la se onda omponente della oppia N
N : T1  T2
snd(N ) : T2
e legate a 1. 2. e 3. i sono le regole di al olo ovvie:
fst(< M; N >) ! M
snd(< M; N >) ! N
( ! si legge \ridu e a")
4. -astrazione
M :T
x : T1 :M : T1 ! T
ioe posso -astrarre rispetto ad una variabile x : T1 he potenzialmente
puo o orrere in M , ottenendo una funzione f : T1 ! T
Esempi
Identita
x:A
x : A:x : A ! A

Regola duale a destra :

Somma
x:N
y:N
x+y :N
y : N :x + y : N ! N
x : N :y : N :x + y : N ! N
M : T1 ! T2
N : T1
(MN ) : T2

38

!N

Cioe e s rittura per \la funzione M appli ata all'argomento N". Allora si puo
mostrare l'irrilevanza dell'ordine dei parametri passati ad una funzione:
g = x : N :y : N :x + y : N ! N ! N
posso eseguire la seguente operazione:
(gxy) : N
x : N :(gxy )
y : N :x : N :(gxy )
-riduzione:

Se a ade di avere

(x : A:MN )
mi aspetto he N abbia tipo orretto:
(x : A:MN ) ! M [N=x
ioe posso sotituire on N tutte le o orrenze di x.

4.2 Ri orsione di ordine superiore


Dopo essermi de nito il mio nuovo formalismo, vediamo se possiamo genarillaze il ostruttore di ri orsione tipi o delle funzioni primitive ri orsive (e
esattamente quello he volevamo fare...). Per operare ad un ordine superiore
basta imporre he nel seguente s hema
(
f (0)
=m
f (y + 1) = h(y; f (y ))
 m: non piu di tipo es lusivamente intero, ma m 2 T generi o
 h: N ! T ! T ( h generalizzata senza oppie)
A questo punto il mio ostruttore di ri orsione sara della forma
Re := N  T  (N ! T ! T ) ! T
E le regole dirette sono:
Re < 0; m; h >
! m
Re < y + 1; m; h > ! h y Re y m h
39

4.3 Osservazioni
e il ostruttore di ri orsione primitiva ma generalizzato a tipi di ordine
superiore. In questo modo possiamo al olare enormemente di piu rispetto
a quanto potevamo fare nel formalismo Fpr , tant'e vero he possiamo de nire tranquillamente la funzione di A kermann (infatti avendo Re ho di
onseguenza an he Ite). Non solo:
\Le funzioni esprimibili nel Sistema T sono tutte e sole le funzioni dimostrabilmente totali nell'aritmeti a del primo ordine (di Peano)"
Quindi posso esprimere nel Sistema T tutte le funzioni he ries o a dimostrare per induzione su predi ati del primo ordine (e infatti per dimostrare
questo fatto he Godel introdusse il suo sistema). Ma adesso siamo interessati a sapere se la nostra ri er a del sistema perfetto puo fermarsi oppure
se esistono an ora funzioni non atturate da un sistema di tale potenza. La
risposta e an ora una volta no, infatti si puo dimostrare he il Sistema T non
ries e ad esprimere tutte le funzioni al olabili.
Re

4.4 In ompletezza del Sistema T


Supponiamo di avere un formalismo he al ola solo funzioni totali ( ioe
per ogni input della mia funzione esiste un output terminante). Questo
formalismo avra una sua grammati a, di onseguenza non i sono problemi
nel de idere se un programma e ben s ritto o meno nel formalismo s elto.
Allora ad ogni programma posso asso iare un numero (magari ostruito a
partire da una odi a iniettiva dei aratteri ASCII he lo ompongono).
Rendo la funzione di enumerazione surgettiva numerando prima i programmi
da 0 a 100 aratteri, poi quelli da 101 a 200, e osi via. Ho quindi una funzione
di numerazione biunivo a he mi mappa tutti i programmi negli interi, ed e
un'operazione e ettiva (posso farlo).
Suppongo adesso di avere un interprete dei programmi del mio formalismo
s ritto nel mio formalismo:
I < n; m >= Pn (m)
 INPUT: n  n-esimo programma; m  input di Pn
 OUTPUT: output di Pn(m) (simulazione del programma n-esimo su

input m)

40

Suppongo 'n la funzione al olata dal programma Pn, quindi avro


I < n; m >= 'n (m)
Dal momento he I e s ritto nel formalismo, esistera un erto indi e k tale
he Pk  I . Considero adesso la seguente funzione
f (x) = I < x; x > +1
he e an h'essa al olabile e totale (infatti ho sommato due funzioni he per
ipotesi sono al olabili e totali), e quindi i sara un erto indi e j tale he
f  'j .
Ma ora, quanto vale 'j (j )?
'j (j ) = f (j ) = I < j; j > +1 = 'j (j ) + 1
il he porta ad un assurdo!
Il problema sta nell'aver supposto he I appartenesse al formalismo. Da
ui
\Nessun formalismo he al ola solo funzioni totali (e on un minimo di
potere espressivo) e in grado di esprimere il suo interprete".
Difatti ho appli ato il solito ragionamento diagonale, la ui validita e indis utibile poi he abbiamo presupposto la totalita di ogni funzione, e di onseguenza la tabella aveva valori interi in ogni asella. Se inve e ammettiamo
la non terminazione, da qual he parte avremo man anza di valori (infatti in
quei asi la funzione diverge), e appli ando banalmente lo statement non si
avra al una ontraddizione:
"=" +1
e sempre veri ato!
Morale della favola

In ambio del pieno potere espressivo abbiamo un pegno da pagare: dobbiamo in ludere an he le funzioni parziali (non ovunque de nite), e ammettere
quindi omputazioni in nite! :-(

4.5 Ipotesi di al olabilita


A partire dai risultati pre edenti, e ri ordando la nozione di algoritmo data in pre edenza, nel tempo sono stati introdotti numerosi formalismi per
esprimere formalmente l'intuizione di algoritmo:
41

Funzioni Primitive Ri orsive on Minimizzazione Generalizzata :

ome per la minimizzazione limitata, ma si elimina la limitazione sull'


upper-bound
 Funzioni Ri orsive Generalizzate :
ome la ri orsione primitiva, togliendo i vin oli sui parametri
 -Cal olo :
ome il Sistema T, ma ome uni a regola ho la -riduzione non i sono
piu vin oli sui tipi
 Ma hine di Turing
e moltissimi altri. Si ha un importante risultato (dovuto a Chur h) he
i assi ura he tutti questi formalismi sono equivalenti, ioe hanno lo stesso
potere espressivo, il he sembra onfortare l'idea dell'esistenza di una nozione
assoluta di al olabilita, he in qual he modo divida l'universo delle funzioni
in due grandi famiglie, quelle al olabili e quelle non al olabili.
4.5.1 La Tesi di Chur h (indimostrabile)

Le onsiderazioni he vanno sotto tale nome sono di tipo intuitivo, e sebbene


sembri impossibile fornirne una dimostrazione, ogni risultato teori o e un
pizzi o di buon senso ri ondu ono tutto ad esse, a tal punto he oggi la Tesi
di Chur h e universalmente a ettata ome vera. La si puo esprimere in molti
modi diversi, noi diremo sempli emente:
\Ogni funzione he sia al olabile da una Ma hina di Turing e esprimibile in ogni altro formalismo equivalente, e vi eversa"

Un idea di dimostrazione (o meglio, di onfutazione) della Tesi sarebbe


quella di trovare una funzione he sia s rivibile in modo algoritmi o ma he
non possa essere tradotta in al un linguaggio onos iuto.
Per questo e altri motivi faremo un enorme passo di astrazione a ettando la Tesi di Chur h (il he i svin ola dal dover dimostrare l'equivalenza
di teoremi e nozioni ogni volta he passiamo da un formalismo all'altro) per
puntare la nostra attenzione sul on etto di Algoritmo (per il quale dimostreremo impli itamente la al olabilita banalmente s rivendone il odi e in
un linguaggio onos iuto o inventato ! per la Tesi di Chur h e al olabile
in uno qualsiasi dei formalismi onos iuti a patto he ammetta divergenza).
42

Capitolo 5
Teoria Assiomati a della
Cal olabilita
5.1 Funzioni al olabili
La Tesi di Chur h assi ura he non esistono formalismi piu espressivi di
quelli Turing-equivalenti. Quindi se una funzione nen e al olabile on qual he formalismo Turing-equivalente, allora non e' al olabile in nessun altro
formalismo.
Vediamo qual he sempli e esempio:
 P (x) = x esima ifra dell'espansione de imale di .
Intuitivamente e risolvibile algoritmi amente, ioe e possibile de nire un algoritmo o s rivere un programma he risolva la funzione. Di
onseguenza la funzione e al olabile
 La funzione
8
>
<1 se nell'espansione de imale di  esiste una sequenza
P (x) =
di x o orrenze del numero 5
>
:0 altrimenti
non e al olabile. Infatti non posso sapere se tale sequenza non
esiste, dal momento he l'espansione de imale di  e in nita. Quindi
non saprei mai \dire" 0.
43

 Inve e la funzione
8
>
<1 se nell'espansione de imale di  esiste una sequenza
P (x) =
di x o orrenze del numero 5
>
:" altrimenti
e al olabile.

Posso infatti pensare di iniziare a er are la sequenza.


Se la trovo do in output 1, altrimenti ontinuo a er arla. Potrei an he
non trovarla mai, ma la divergenza e esattamente il omportamento
della mia funzione nel aso in ui la sequenza non sia stata an ora
trovata.

5.1.1 Enumerazione dei programmi

Prendiamo un qualsiasi linguaggio di programmazione, possiamo enumerare


tutti i programmi:
P0 P1    Pn   
# #
#
'0 '1    'n   
Cioe l'i esimo programma Pi al ola la funzione 'i (la numerazione in se non
e piu di tanto importante, l'importante e he una volta data una numerazione,
questa sia ssata ). Allora
 'i(x) ": indi a he la funzione (il programma) di indi e i diverge
 'i(x) #: indi a he la funzione (il programma) di indi e i onverge
Dato un programma sono sepre in grado di trovare il suo indi e nella numerazione e vi eversa. In parti olare indi hiamo on
i = [Pi
l'indi e i del generi o programma Pi. Allora inve e di dire ogni volta \il
programma Pi" diremo sempli emente \il programma i".
Dato un programma posso sempre sapere quale sia la funzione he al ola, ma non vi eversa, poi he una funzione puo essere al olata da in niti
programmi.
Le funzioni al olate dai programmi sono dette parziali ri orsive (o
parziali al olabili, in realta useremo la parola ri orsivo ome sinonimo di
al olabile e vi eversa).
44

5.2 Il Teorema SMN


5.2.1 Teorema 1

Esistono in niti indi i di programmi per ogi funzione ri orsiva:


8 i 8 n 9 j > n t: : 'i = 'j
(la funzione al olata dal programma i e la stessa di quella al olata dal
programma j )
5.2.2 Teorema 2

Esiste un interprete (Ma hina Universale):


9 U t: : 'U (x; y) = 'x(y)
(la funzione di indi e U on input x e y al ola la stessa funzione di quella
di indi e x on input y)
5.2.3 Teorema SMN
8 m; n  1; 9 una funzione smn totale ri orsiva di m + 1 variabili tale he:
8 x; ym ; zn si ha he 'smn(x;ym )(zn ) = 'mx +n(ym; zn)

dove

ym = y1 ; : : : ; ym e zn = z1 ; : : : ; zn

Vediamo il aso on m = n = 1:
's(x;y) (z ) $ 'x (y; z )
Questo mi di e he dati due parametri posso ssarne uno e lavorare sul
se ondo, dato he il teorema SMN mi assi ura he esiste la funzione s. In
parti olare esiste un programma he la al ola, infatti posso de nire
s(x; y ) = [z:Px (y; z )
45

5.3 Conseguenze
Se un sistema di funzioni soddisfa il teorema SMN, allora tale sistema e
Turing ompleto.
A tal proposito si ha un risultato interessante: 9g totale ri orsiva ( al olabile) tale he
'g(x;y) = 'x 'y
L'indi e della funzione omposta lo posso al olare in modo algoritmi o a
partire dagli indi i x e y
'g(x;y) (z ) = 'x('y (z ))
h(x; y; z ) = 'x ('y (z ))
on h al olabile per he de nita mediante omposizione di funzioni al olabili ! h e ri orsiva. Allora esistera un erto indi e m tale he 'm  h.
Appli ando il teorema SMN:
g (x; y ) = s21 (m; x; y )
! 's (m;x;y) (z)
he e al olabile totale.
2
1

5.4 La funzione di Terminazione


De niamo

1 se 'x(y) #
0 se 'x(y) "
Dimostriamo he e impossibile al olare questa funzione (per assurdo).
Supposta g al olabile, de nis o
(
1 se g(x; x) = 0
f (x) =
" se g(x; x) = 1
he sara ugualmente al olabile dal momento he dipende da g.
Sia ora
f  'm
g (x; y )

46

i hiediamo quanto vale 'm(m):

1 se g(m; m) = 0
" se g(m; m) = 1
ma appli ando la de nizione di g notiamo he
(
1 se 'm(m) "
'm (m) =
" se 'm(m) #
il he e ovviamente assurdo.
'm (m)

5.4.1 Osservazione

Nel problema della terminazione di fatto si e dimostrato he non puo esiun algoritmo he al oli g, o equivalentemente he de ida se un determinato programma termina oppure no. Questo risultato puo essere visto
ome un limite al passaggio della onos enza, non potendo des rivere in modo
algoritmi o tutto io he in realta e possibile fare.

stere

5.5 Il Problema della Totalita


Analogamente a quanto fatto nel paragrafo pre edente, si puo dimostrare he
la funzione
(
1 se 'x e totale
f (x) =
0 altrimenti
non e al olabile (e il relativo problema non e de idibile). Infatti se lo fosse
potrei ostruirmi una funzione di numerazione per tutte le funzioni totali nel
seguente modo
(
g (0)
= y(f (y) = 1)
g (x) 
g (x + 1) = y (y > g (x) ^ f (y ) = 1)
La funzione g mi numera tutte le funzioni totali utilizzando la f , he rispondeva 1 se la x-esima ma hina di Turing al olava una funzione totale, e 0
se inve e tale funzione divergeva da qual he parte. Quindi g(x) e indi e per
47

la x-esima funzione totale, e la stessa g e una funzione totale (per he sono
in nite).
Ora mi de nis o un'altra funzione fatta nel seguente modo (e il nostro
argomento diagonale):
h(x) = 'g(x) (x) + 1
he essendo totale avra un erto indi e m tale he h = 'm, e ovviamente un
erto indi e y0 tale he g(y0) = m.
Considerimao il valore di h(y0):
=h 'g(y )(y0) + 1 ! 'm (y0) + 1
h(y0 ) =
=g 'g(y ) (y0)
! 'm (y0)
ioe h(y0) = h(y0) + 1 il he e assurdo (e possibile solo nel aso h(y0) =",
ma i siamo ostruiti h totale a partire da una funzione g supposta totale, di
onseguenza ade l'ipotesi della totalita di g).
0

5.5.1 Osservazione

Finora abbiamo fornito dimostrazioni dirette: supponendo la proprieta vera


ho ome risultato una ontraddizione ! la proprieta e falsa.
Ci sono altre te ni he di dimostrazione he si basano sul pro edimento di
riduzione : si ri ondu e il problema ai risultati di altri problemi dimostrati in
pre edenza senza dover fornire ogni volta una dimostrazione diretta (il he a
volte puo essere ompli ato).

5.6 \f e ostante" e de idibile?


No, e per dimostrarlo ridu iamo il problema a quello della terminazione, gia
dimostrato inde idibile.
(
1 se 'x e ostante
f (x) =
0 altrimenti
De niamo
(
0 se 'x(x) #
g (x; y ) =
" se 'x(x) "
48

Notiamo he la g e e ettivamente al olabile: risponde 0 se la x-esima ma hina di Turing onverge su input x e diverge se an he lei diverge, quindi io
la posso lan iare e aspetto, non de ido proprio nulla.

Per il teorema SMN esiste una funzione totale al olabile he dipende


dall'indi e di g tale he:
'h(x) (y )  g (x; y )
e di 'h posso dire:
(
0 ostante se 'x(x) #
'h(x) =
" ovunque se 'x(x) "
infatti il se ondo parametro y non entra nella de nizione.
Adesso mi basta onsiderare il valore di f (h(x)):
(
1 se 'x(x) #, per he e indi e della funzione ostante 0
f (h(x)) =
0 se 'x(x) ", per he e indi e della funzione ovunque divergente
il he signi a he f h risolverebbe il problema della terminazione, e si ome
h e al olabile per il teorema SMN, allora f e non al olabile.

5.7 Equivalenza di programmi


Altro problema inde idibile e quello di dire se due programmi al olano la
stessa funzione.
(
1 se 'x = 'y
f (x; y ) =
0 altrimenti
Considero ome funzione ampione la funzione ostante 0, he e al olabile,
per ui esiste un indi e y0 tale he
'y  z:0
e prendo la funzione h ome prima:
(
0 se 'x(x) #
'h(x) (y ) =
" se 'x(x) "
0

49

allora risolverei il problema della terminazione in modo alquanto sempli e:


(
1 se 'x(x) #
g (x)  f (h(x); y0) =
0 altrimenti ( ioe 'x(x) ")
Posso erto de idere l'equivalenza di due programmi ma solo su asi parti olari, il pro edimento non puo essere reso uniforme su tutta la globalita
dei asi.

5.8 Problemi inde idibili


I problemi presentati n qui (per i quali si e fornita dimostrazione di irrisolubilita in modo algoritmi o) sono solo una pi ola serie di asi parti olari
di un noto teorema piu generale he in qual he modo i da' informazioni
sulla de idibilita di un problema basando i sulle sue proprieta estensionali.
Questo teorema prende il nome di Teorema di Ri e [53.

50

Capitolo 6
Il Teorema di Ri e
6.1 Proprieta estensionali e intensionali
Consideriamo un indi e i, il generi o programma Pi e la funzione al olabile
di indi e i-esimo 'i. Sia A  N .
Diremo he A e estensionale se
8i; j 2 N (i 2 A) ^ ('i = 'j ) ) j 2 A
In prati a parlando di proprieta estensionali i riferiamo a he osa una funzione al ola, e non i interessiamo a ome questa funzione e fatta (intensione
della funzione ).
6.1.1 Esempi

Sono estensionali i seguenti insiemi:


A = f i j 'i e totaleg
A = f i j 'i = 'j on j ssatog
Mentre e intensionale:
A = f i j 'i (z ) onverge in meno di z passig
poi he in questo aso si fa riferimento proprio alla spe i a della funzione.
51

6.2 Teorema di Ri e
Sia A  N . Possiamo interpretare l'insieme A ome un predi ato sui naturali sempli emente onsiderando la sua funzione aratteristi a CA. Siamo
interessati a sapere quando CA e al olabile:
\Se P e una proprieta estensionale, la sua funzione aratteristi a e al olabile se e solo se P e banale (o sempre vera o sempre falsa)"

Questa e una proprieta molto forte: Nessuna proprieta estensionale non


banale e de idibile.
Per dimostrarlo supponiamo he P sia non banale ( ioe P 6= N ; P 6= ).
Sia g la funzione aratteristi a di P e supponiamo g al olabile. Si ome P
e non banale esistono a e b tali he
g (a) = 1 g (b) = 0
Consideriamo adesso la funzione ovunque divergente e sia m un indi e per
essa. CASO 1: Supponiamo g(m) = 0 e de niamo
(
'a (y )
se 'x(x) #
f (x; y ) =
" (= 'm (y)) se 'x(x) "
Per il teorema SMN 9h :
quindi

'h(x) (y ) = f (x; y )

'h(x)

on h totale al olabile. Avro

'a se 'x (x)


'm se 'x (x)

#
"

e onsideriamo il valore di g(h(x)):


g (h(x))

g (a) = 1 se 'x(x)
g (m) = 0 se 'x(x)

#
"

il he risolverebbe il problema della terminazione. Il CASO 2 e duale. Quindi


s oprire he osa fa un programma basandosi solo sul suo aspetto estensionale
e un problema inde idibile, dobbiamo per forza onsiderare an he la sua
intensione.
52

6.3 Estensione totale di una funzione parziale


Ci hiediamo se ogni funzione parziale al olabile possa essere estesa ad una
funzione totale al olabile, magari fa endola onvergere agli stessi valori della
parziale dove questa onvergeva, e ponendola uguale ad un valore qualsiasi
(valore inutile) dove la funzione parziale divergeva.
Data un funzione parziale h di o he h e una estensione totale di h se h
e totale e

8m (h(m) #) ) (h(m) = h(m))

6.3.1 Teorema

Esistono funzioni parziali he non possono essere estese a funzioni totali.


6.3.2 Dimostrazione

Prendo il solito argomento diagonale h(x) = 'x(x)+1 e dimostro la sua non


estendibilita. Supponiamo he h sia una estensione totale di h, quindi esiste
m tale he 'm  h. Allora al oliamo
h(m) =def 'm (m) + 1 = h(m) + 1
Ma questo signi a he:
1. se h(m) " allora si avrebbe ("= valoreinutile +1) e quindi h(m) ", he
non e possibile per he estensione totale
2. se h(m) # allora h(m) # ma ad un valore diverso, ontro la de nizione
di estensione totale.
Quindi il tutto e assurdo, e h e un esempio di funzione parziale al olabile
non estendibile ad una funzione totale al olabile.

6.4 Il predi ato T di Kleene


6.4.1 Teorema

Esistono due funzioni totali al olabili p : N ! N e t : N 3 ! N tali he 8z


'z = x:(p(y:(t(z; x; y; ) = 1)))
53

ioe

'z (x)

= p(y:(t(z; x; y; ) = 1))
vale a dire he ogni programma lo posso esprimere on un uni o i lo while
esterno al ui interno ho una funzione al olabile t, e p mi serve solo per
estrarre il risultato (t e p mi bastano an he primitive ri orsive). E' in prati a
una ri er a in nita di output su un insieme de idibile A.

6.4.2 Dimostrazione
Suggerimento : 'x (y ) # non e de idibile, ma se onsidero
f< x; y; z > j 'x(y) # in meno di z passi g

essendo propieta intensionale e de idibile.


De nis o
t(z; x; < y; w >)

o he e lo stesso
t(z; x; y )

=
1
0

1
0

se Pz (x) = y in meno di w passi


altrimenti

se Pz (x) = fst(y ) in meno di snd(y ) passi


altrimenti

Io sto er ando  < y; w > (t(z; x; < y; w >) = 1):


1. Se Pz non termina ! t = 0 e  diverge
2. Se Pz termina !  vale la piu pi ola oppia < risultato; tempo > per
ui t = 1
Del tempo non mi frega niente (voglio il risultato), allora
p() = fst()
e trionfalmente
'z (x) = fst( < y; w > (t(z; x; < y; w >) = 1))
54

6.4.3 Il Predi ato T

Riassumendo i risultati pre edenti possiamo ora introdurre il Predi ato T di


Kleene
8
< 1 se z e una odi a (step by step) della omputazione
Px su input y
T (z; y; z ) =
: 0 di
altrimenti
per al olare tale funzione mi basta molto po o:
1. oppie : fst() e snd() sono primitive ri orsive
2. veri a : lineare su z
inoltre p tira fuori sempli emente il risultato nale.
Per questo mi bastano funzioni on omplessita omputazionale bassa,
an he meno delle funzioni primitive ri orsive.

6.5 p e davvero ne essario?


Voglio sapere se posso eliminare l'o orrenza di p per sempli are il teorema
pre edente ridu endo il tutto a
'z (x) = y (f (x; y ) = 1)
6.5.1 Teorema

Esiste z tale he per nessuna funzione totale al olabile f si ha he 'z (x) =


y (f (x; y ) = 1)
6.5.2 Dimostrazione

Prendo

g (x)

x se 'x(x) #
" altrimenti

he e al olabile.
Suppongo g(x) = y(f (x; y) = 1) on f una qual he funzione al olabile
totale. Allora mi si presentano due asi:
55

1. se 'x(x) # allora g(x) = x da ui f (x; x) = 1 e f (x; y) = 0 8y


2. se 'x(x) " allora g(x) " da ui f (x; x) 6= 1 8y
Ma avrei risolto il problema della terminazione ponendo sempli emente
(
1 se f (x; x) = 1 ! 'x(x) #
h(x) =
0 se f (x; x) 6= 1 ! 'x(x) "
il he e assurdo.
Quindi la forma minima per il teorema pre edente omprende sia t he
p.

56

Capitolo 7
Insiemi Ri orsivi e
Ri orsivamente Enumerabili
7.1 De nizioni
 Un insieme si di e ri orsivo se la sua funzione aratteristi a e al o-

labile
 Un insieme si di e ri orsivamente enumerabile (r.e.) se o e vuoto
oppure e il odominio di una funzione totale al olabile (detta funzione
di enumerazione).

7.2 Teorema
Ogni insieme ri orsivo e an he r.e.
7.2.1 Dimostrazione

Sia A ri orsivo. Allora


1. se A =  e banalmente r.e.
2. se A = fn0 ; : : : ; nk g ( nito) allora de nis o
f (x)

=
57

nx x  k
nk x > k

3. se A e in nito e gA e la sua funzione aratteristi a


(
f (0) =
y (gA(y ) = 1)
f (x + 1) = y (gA(y ) = 1 ^ y > f (x))

7.3 Teorema
A e ri orsivo se

e solo se sia A he A sono r.e.

7.3.1 Dimostrazione
) ovvia (e dimostrato nel teorema pre edente)
Dimostro (.

Suppongo f he enumera A e g he enumera A, e ostruis o


(
h(2x) =
f (x)
h(2x + 1) = g (x)
Mi serve valutare y(h(y) = x) e poi testare se y e pari o dispari, ioe
rispettivamente se y appartiene ad A oppure a A:
2
y := y (h(y ) = x)
4
if pari(y ) then 1
CA (x) =
else 0

he e la funzione aratteristi a di A e ovviamente al olabile.

7.4 Teorema
1. A e ri orsivo se e solo se A =  oppure A e r.e. in modo non de res ente
2. A e ri orsivo se e solo se A e nito oppure A e r.e. in modo strettamente
res ente
7.4.1 Dimostrazione
) dal Teorema pre edente

58

 2(. Sia f la funzione di enumerazione per A. Essendo strettamente

res ente

x < y ) f (x) < f (y )

e lavorando on gli interi si ha il risultato parti olare


8x : x  f (x)
he useremo ome upper-bound. Si avranno due asi:
{ Se A e nito non 'e niente da dimostrare
{ Sia A in nito. Per dimostrare la ri orsivita di A devo trovare
una funzione aratteristi a per A he sia al olabile. Per ogni x
devo ri er are se esiste un qual he y per ui f (y) = x, se lo trovo
rispondo 1 altrimenti 0, ma devo in qual he modo limitarla, e a
tal s opo uso l'upper-bound appena introdotto:
(
1 se 9y : y  x(f (y) = x)
g (x) =
0 altrimenti
 1(. In linea di prin ipio e simile alla pre edente, ma il problema

sta ora nel fatto he il fatto he la funzione di enumerazione sia non


de res ente impli a he possa essere an he ostante (non iniettiva in
generale), per ui non posso dare al un upper-bound ad una eventuale
ri er a. Proviamo allora a ragionare sul odominio: a priori pero non
so de idere in modo algoritmi o ( al olabile, e quello he voglio fare!)
se il odominio di una funzione e nito o in nito, per he dovrei ne essariamente vedere tutti i valori della funzione, ma non mi fermerei
mai nel aso di in nito (e un problema inde idibile). Allora proviamo
a ragionare per asi:
{ A =  ! per de nizione e ri orsivo
{ A e finito ! per de nizione e ri orsivo
{ A e infinito :
Non so dire ome la funzione di enumerazione res e, ma so senz'altro he assumera tutti i valori di N , quindi valori arbitrariamente grandi. Di onseguenza e piuttosto fa ile pensare ad un
59

algoritmo essenzialmente basato sulla g di prima ma il ui upperbound sia estendibile a runtime n he non trova un valore del dominio piu grande del pre edente (e senz'altro prima o poi termina
per le onsiderazioni appena fatte). Inoltre la funzione e omunque non de res ente, di onseguanze se la mia ri er a restituis e un
valore diverso dal su essore del valore pre edente on ludero he
tale su essore non appartiene al dominio della funzione. Quindi
la funzione aratteristi a e e ettivamente al olabile.
7.4.2 Corollario

Ogni insieme ri orsivamente enumerabile A in nito ontiene almeno un sottoinsieme ri orsivo in nito.
Dimostrazione

sara il range di una qual he funzione di enumerazione. Allora mi basta


rienumerare il range prendendo solo valori strettamente res enti, ostruendomi un sottoinsieme di A la ui funzione di enumerazione e strettamente
res ente, per ui tale insieme sara ri orsivo. Formalizzando:
Sia f tale he A = Codf on f totale al olabile. De nis o
(
g (0) =
f (0)
g (x + 1) = f (y (f (y ) > g (x))
he terminera sempre in quanto Codf = 1 e assume valori arbitrariamente
grandi.
A

7.5 Teorema di aratterizzazione per r.e.


Se un insieme A e ri orsivamente enumerabile le seguenti a ermazioni sono
equivalenti:
1. A =  _ 9f : A = Cod(f ) on f totale al olabile
2. 9g : A = Dom(g) on g parziale al olabile
3. 9h : A = Cod(h) on h parziale al olabile
60

7.5.1 Dimostrazione
1)2
Sia A = Cod(fT ), allora 9g : A = Dom(g) on g parziale al olabile:
 Se A =  allora A = Dom(g) on g(x) =" 8x (ovunque divergente)
 Se A = Cod(f ) allora A = Dom(g) on g(x) = z(f (z) = x):
{ se x 2 Cod(f ) allora g (x) #
{ se x 62 Cod(f ) allora g (x) "

2)3
Sia A = Dom(gP ), allora 9h : A = Cod(h) on h parziale al olabile:
h(x) = x + 0  g (x)
he diverge se g(x) diverge, e onverge a x se g(x) onverge
3)1
Sia A = Cod(hP ), allora A =  _ 9f : A = Cod(f ) on f totale al olabile:
8
>
se h(x) # in meno di
<z
f (< x; t >) =
t passi e h(x) = z
>
:a~ 2 A altrimenti
Qui si e fatto uso della te ni a del dove-tailing ( oda di rondine), in ui si
lan ia la omputazione per un tempo t e se termina ok, altrimenti si aumenta
il tempo di omputazione.

7.6 Tutti i r.e. sono ri orsivi?


K

 fx j 'x(x) #g

non e ri orsivo per he non esiste al una funzione al olabile he ne sia funzione aratteristi a, ma e r.e., infatti se g(x) = 'x(x) allora K e odominio di
una funzione al olabile parziale. K puo essere enumerato on dove-tailing.
61

Il suo omplementare
K

 fx j 'x(x) "g

e non r.e.! Infatti se lo fosse dovrebbe essere K ri orsivo ma so he non lo e


per le ose appena dette.

7.7 Insiemi , Proprieta

Il seguente spe hietto mostra la relazione esistente tra insiemi onsiderati


tali o ome proprieta:
Insieme

Proprieta

fxjP (x)g

Ri orsivo
De idibile
Ri orsivamente Enumerabile Semide idibile

7.8 Teorema
Un insieme A e r.e. se e solo se esiste un insieme ri orsivo B tale he
A = f x j 9z : < x; z >2 B g
Cioe ogni insieme r.e. lo posso ottenere ome proiezione esistenziale di
un insieme ri orsivo.
7.8.1 Dimostrazione
 (: B e ri orsivo, quindi esiste CB al olabile totale. Allora de nis o
g (x) = y (CB < x; y >= 1)
A sara

il dominio di tale g he e al olabile parziale ! A e r.e.


62

 ):

r.e. allora esiste g al olabile parziale tale per ui A sia il suo


dominio. Allora 9a : g  'a . Si ha he
'a (x) # se e solo se x 2 A
il he signi a he esiste un erto t tale he 'a (x) restituis e un erto
output in esattamente t passi, e per formalizzare se ondo Kleene:
9y : T (a; x; y) = 1
(T e vera se e solo se y e omputazione ompleta di a su input x) he
e e ettivamente al olabile, e interpretabile ome \T (a; x; t) vale 1 se
il programma di indi e a on input x termina la omputazione in t
se ondi" ( hiaramente de idibile). Da ui posso on ludere
'a (x) # se e solo se 9t : T (a; x; t) = 1
A

63

Capitolo 8
Operazioni insiemisti he
Siano A e B insiemi ri orsivamente enumerabili.

8.1 Intersezione
A\B

e r.e.:

A = Dom(f )
h(x) = f (x)  g (x) =)
B = Dom(g )

A \ B = Dom(h)

8.2 Unione
A[B

e r.e.:
 
A = Cod(f )
h(2x) = f (x)
=)
B = Cod(g )
h(2x + 1) = g (x)

8.3 Complemetare
Sia A r.e. e A il suo omplementare.
 Se A e ri orsivo allora A e r.e.
 Se A non e ri orsivo allora A non e r.e.
64

A [ B = Cod(h)

8.4 Immagini e ontroimmagini


Sia A r.e. e f una funzione parziale al olabile.
8.4.1 Immagine
f (A) e r.e.:

A = Cod(g ) p: :

f (A) = Cod(g f )

8.4.2 Controimmagine
f 1 (A) e r.e.:

A = Dom(g ) p: :

Infatti

f 1 (A) = Dom(g f )

x 2 Dom(g f ) , g (f (x)) #

65

$ 9z : f (x) = z ^ g(z) #
9z : f (x) = z ^ z 2 A
x 2 f 1 (A)

Capitolo 9
Insiemi r.e.
9.1 Notazione standard
D'ora in poi useremo la s rittura Wi per indi are un insieme r.e. di indi e i
Wi  Dom('i )
on 'i parziale al olabile.
Si ha quindi un parallelismo on quanto avveniva per le funzioni al olabili:
' : i 7! 'i
=) N ! F unzioni P arziali Cal olabili
W : i 7! Wi
=) N ! Insiemi Ri orsivamente Enumerabili
E la nozione di estensionalita diventa:
A e estensionale (interpretando A ome insieme di indi i per i Wi ) se e
solo se
(i 2 A ^ Wi = Wj ) ) j 2 A
Per ui il teorema di Ri e si appli a in modo analogo:
\A estensionale e ri orsivo se e solo se A =  oppure A = N "
la ui dimostrazione e identi a a quella gia fornita in pre edenza.
Come gia visto questo teorema si rivela un utile strumento per apire la
de idibilita di un erto problema:
fijWi = f3gg
non e de idibile, in quanto estensionale ma non banale, e similmente
fijWi e nitog
fijWi e in nitog
66

9.2 Operazioni insiemisti he


9.2.1 Controimmagine mediante f

Abbiamo dimostrato la hiusura dei Wi rispetto alle usuali operazioni insiemisti he, adesso forniamo un modo e ettivo per de idere l'appartenenza.
\Se f e al olabile totale e A e ri orsivo, allora f 1(A) e ri orsivo"
Il pro edimento e e ettivo (fa io f (x) e valuto | e de idibile)
se f (x) 2 A ! x 2 f 1 (A)
9.2.2 Immagine mediante f

Ci hiediamo se, dato A ri orsivo e f al olabile, f (A) sia ri orsivo.


Sia f totale. Se fosse vero, ri ordando il fatto he ogni insieme r.e. non
vuoto e immagine di una funzione totale al olabile, si arriverebbe a dire he
ogni insieme r.e. e an he ri orsivo, e sappiamo he io e falso (si pensi a K ).
Sia f parziale. So he ogni r.e. e dominio di una funzione parziale al olabile, in parti olare potrebbe oin idere on g 1(N ) per un'opportuna g.
Se fosse vero lo statement, allora on luderei he g e totale al olabile.
9.2.3 Unione ri orsiva di insiemi r.e.

Ci hiediamo se sia r.e.

[
i2B

Wi

on B ri orsivo

Si ha il seguente s hema
2 'i 0
1
2  n 
 '0 '0 (0) '0(1) '0 (2)    '0(n)   
'1 '1 (0) '1 (1) '1 (2)    '1 (n)   
 '2 '2 (0) '2(1) '2 (2)    '2(n)   
...                  
 'n 'n(0) 'n(1) 'n(2)    'n(n)   
...                  
Essendo B ri orsivo, posso e ettivamente dire se un erto i 2 B (gli asteris hi
nello s hema), e devo numerare solo quelli i ui indi i stanno in B , solo
67

he non posso spararmi su una sola linea (potrei non terminare mai), allora
si appli a il dove-tailing sulle 'i rispetto al tempo di ese uzione (timeout
intensionale). In questo modo enumero tutte le funzioni indi izzate da B e
di onseguenza i rispettivi Wi .
9.2.4 Unione ri orsiva di insiemi ri orsivi niti

Ci hiediamo se sia de idibile


[

i2B

Di

on B ri orsivo

dove Di sta per insieme ri orsivo nito. Usiamo questa notazione per he
possiamo esprimere la funzione di enumerazione esplodendo l'indi e i se ondo
la de odi a multipla di oppie introdotta pre edentemente:
i = < n; x1 ; : : : ; xn >
per ui
Di = fx1 ; : : : ; xn g
A questo punto i hiediamo se la nostra unione sia ri orsiva. La risposta e
no, e lo dimostriamo mostrando he K puo essere espresso in quella forma
(sappiamo he K non e ri orsivo):
[
K=
Di
on B ri orsivo
i2B

K e un insieme r.e. non vuoto, per ui e il odominio di una erta f totale


al olabile
K = ff (i)ji 2 Ng = f (0) [ f (1) [ : : : [ f (n) [ : : :
de niamo g nel seguente modo
f (n) = i sse Di = ff (0); f (1); : : : ; f (n)g
ioe se e solo se Di e esattamente il segmento iniziale dei valori di f no a n.
Allora per ostruzione di g si avra
[
K=
Di
i2Cod(g)

68

L'uni o problema e he lo voglio ri orsivo, mentre per ora ho de nito B


r.e., ma noi sappiamo he ogni r.e. in nito in lude un sottoinsieme ri orsivo
in nito, e tra tutti i sottoinsiemi possibili del odominio di g ne prendo uno
opportuno (strettamente res ente) in questo modo:
8j 2 Cod(g) 91Dk : DK  Dj
per ui s elgo i miei Di in modo strettamente res ente e in modo e ettivo.
Cio he risulta e he ho un insieme espresso ome unione ri orsiva di insiemi
ri orsivi niti he pero non e ri orsivo ma r.e. [In realta basterebbe basarsi
sugli indi i Di  Dj $ i  j per avere una funzione res ente...
9.2.5 Unione r.e. di insiemi r.e.

Basando i sul risultato pre edente si dimostra he


[

i2Wn~

Wi e r.e.

9.2.6 Intersezione ri orsiva di insiemi r.e. e ri orsivi


\
i2B

Wi e r.e.?

Non e a atto ovvio fornire un algoritmo di semide isione he fa ia l'AND


sulle olonne della tabella
2 'i 0
1
2  n 
 '0 C' (0) C' (1) C' (2)    C' (n)   
'1 C' (0) C' (1) C' (2)    C' (n)   
 '2 C' (0) C' (1) C' (2)    C' (n)   
...   

   
 'n C'n (0) C'n (1) C'n (2)    C'n (n)   
...   

   
0

per he i puo essere sempre uno 0 da qual he parte (ri ordo he i valori he
puo assumere la generi a funzione aratteristi a C'i (x) possono essere solo 1
o 0).
In generale quindi non so dire proprio nulla ir a la semide idibilita
dell'intersezione di un numero ri orsivo di insiemi semide idibili.
69

L'idea di dimostrazione si basa sul mostrare he K , he non e r.e., si puo


s rivere in quella forma:
\
K=
Wi
i2B

basta onsiderare i seguenti insiemi:


Wt = fxj'x(x)non onverge in meno di t passig
da ui
\
K=
Wt
e il gio o e fatto.

t2N

9.3 Potenza del teorema di Ri e


Utilizzando ongiuntamente il teorema di Ri e e i risultati appena esposti si
ha un potente strumento di analisi.
Supponiamo ad esempio di dover studiare il seguente insieme:
A = fij'i (0) "g
1. A e ri orsivo?
 A e estensionale
 A 6= 
 A 6= N
Con ludo he non e ri orsivo per il Teorema di Ri e
2. A e r.e.?
 Considero il suo omplementare A = fij'i(0) #g
 A e semide idibile: lan io e aspetto
 A e r.e.
Allora A e non r.e. (se lo fosse, entrambi sarebbero ri orsivi).
70

Questo algoritmo pero non funziona sempre:


A = fij'ie totaleg
1. A e ri orsivo?
 A e estensionale
 A 6= 
 A 6= N
Con ludo he non e ri orsivo per il Teorema di Ri e
2. A e r.e.?
 Considero il suo omplementare A = fij9n : 'i(n) "g
 Di A non so dir nulla
 A e non r.e.
In realta sia A he A sono non r.e.

9.4 Estensione del Teorema di Ri e


Abbiamo visto quanto Ri e sia potente per dire se un problema e de idibile
(insieme ri orsivo). Adesso daremo due proprieta he estendono in qual he
modo questo potere lavorando on insiemi r.e.
9.4.1 1. Monotonia o Chiusura verso l'alto
8 i; j : ((i 2 A) ^ (Wi  Wj )) ) j 2 A

Cioe se la proprieta r.e. in questione A e vera per un erto Wi, allora deve
essere vera per tutti i sovrainsiemi di Wi
9.4.2 2. Continuita o Elementi Finiti
8
>
<Wj e nito
8 i : se Wi 2 A; 9j tale he >Wj 2 A
:j 2 A

Cioe se la proprieta r.e. in questione A e vera per un erto Wi , ries o sempre


a trovare un sottoinsieme nito Wj  Wi per il quale tale proprieta e vera.
71

Dimostrazione 1

Per assurdo. Supponiamo he esistano i e j tali he Wi  Wj , i 2 A ma


j 62 A.
Cer hiamo di ostruire un insieme B he dipenda da x. Voglio he B (x)
abbia la forma
(
Wi se 'x (x) "
B (x) =
Wj se 'x (x) #
Cioe lan io la omputazione di 'x(x) e ad ogni passo n he non termina
enumero un elemento di Wi, non appena termina enumero Wj . Lo posso
fare per he sono insiemi r.e., e non e di ile pensare ad un algoritmo he
al oli B (x) lan iando 'x(x) in modo simulato (step-by-step). Si ha quindi
una omputazione e ettiva e uniforme su x
(
Wi se 'x(x) "
Wh(x)  B (x) =
Wj se 'x(x) #
dove h(x) e la funzione di enumerazione parametri a per B (x) ed e totale e
al olabile.
Ragioniamo ora sul valore di Wh(x):
1. Wh(x) = Wi se 'x(x) "
dal momento he i 2 A e Wh(x) = Wi , ed essendo A estensionale,
h(x) 2 A, per ui
'x (x) " ) h(x) 2 A
2. Wh(x) = Wj se 'x(x) #
dal momento he j 62 A e Wh(x) = Wj , ed essendo A estensionale,
h(x) 62 A, per ui
'x (x) # ) h(x) 62 A
Con ludendo, si ha he
h(x) 2 A , 'x(x) "
h(x) 2 A , x 2 K
ma avevo A r.e. (semide idibile), mentre K non lo e. Assurdo.
72

Dimostrazione 2

Per assurdo. Supponiamo he esista un qual he indi e i 2 A tale he 8j se


Wj e nito e Wj  Wi , allora j 62 A.
Cer hiamo di ostruire un insieme B he dipenda da x. Voglio he B (x)
abbia la forma
(
Wi
se 'x(x) "
B (x) =
sottoinsieme nito di Wi se 'x(x) #
Come prima lan io la omputazione di 'x(x) e ad ogni passo n he non
termina enumero un elemento di Wi , non appena termina mi fermo. E'
algoritmi o, ed e una omputazione e ettiva e uniforme su x. Sia quindi
Wh(x)  B (x)
Ragionando sul valore di Wh(x):
1. Wh(x) = Wi se 'x(x) "
dal momento he i 2 A e Wh(x) = Wi , ed essendo A estensionale,
h(x) 2 A, per ui
'x (x) " ) h(x) 2 A
2. Wh(x) = Wj  Wi nito, se 'x(x) #
dal momento he j 62 A e Wh(x) = Wj , ed essendo A estensionale,
h(x) 62 A, per ui
'x (x) # ) h(x) 62 A
Con ludendo, si ha he
h(x) 2 A , 'x(x) "
h(x) 2 A , x 2 K
e di nuovo avrei un modo per semide idere K . Assurdo.

9.5 Dai Wi alle 'i


Possiamo trasportare tutto quanto detto nora sugli insiemi r.e. alle funzioni
al olabili sempli emente ambiando ogni o orrenza di Wi on 'i, ma prima
dobbiamo apire he osa vuol dire
73

1. 'i  'j
2. 'i e nito
Si ha he
1. e l'in lusione insiemisti a dei gra
2. se il grafo asso iato e nito
Se infatti de niamo grafo Gi asso iato alla funzione al olabile 'i il seguente
insieme
Gi = f< a; b > j b = 'i (a)g
si ha immediatamente
1. sse 8a: 'i (a) #= b ) 'j (a) #= b
ioe la se onda puo estendere la prima in qual he punto ove la prima
divergeva
2. sse overge in un numero nito di punti
Detto questo, i teoremi esposti valgono identi amente.

9.6 Appli azioni


 A = fijWie nitog

Estensionale non banale ! non ri orsivo.


Non e hiuso verso l'alto ! non r.e. per 1.
 A = fijWie in nitog
Estensionale non banale ! non ri orsivo.
Non ontiene sottoinsiemi niti ! non r.e. per 2.
 A = fijWi  Wj g on Wj ssato
Estensionale non banale ! non ri orsivo.
Non e hiuso verso l'alto ! non r.e. per 1.
 Esempio he soddisfa 1 e 2 ma non e r.e.
A = fijWi \ K 6= g
74

Estensionale non banale ! non ri orsivo.


1. E' hiuso verso l'alto
2. Contiene sottoinsiemi niti.
Ma non e r.e. Se lo fosse, potrei de nire
(
0 se n = x
f (n; x) =
" altrimenti
Per il teorema SMN
Wh(x) = fxg
da ui
h(x) 2 A , x 2 K
e avrei modo di semide idere x 2 K

9.7 Con lusioni


Le proprieta 1 e 2 sono ondizioni
de idere se un insieme e r.e.

ne essarie

ma

non su ienti

per

9.7.1 Teorema

Una proprieta semide idibile deve essere


1. testabile al nito
2. valida per ogni sovrastruttura del test nito
9.7.2 Esempi semide idibili
 A = fij'i(0) = 0 _ 'i(1) = 0g

Con dove-tailing posso testare in parallelo f0; 0g e f1; 0g e passare


all'in nito.
 A = fij'i(0) = 0 ^ 'i(1) = 0g
Con dove-tailing posso testare ff0; 0g; f1; 0gg e passare all'in nito.
75

Capitolo 10
Teorema di Cal olabilita
10.1 Introduzione
Fino ad ora abbiamo ragionato su due livelli spe i i: intensionale ed estensionale. Per hiarir i meglio le idee:
INTENSIONALE

ESTENSIONALE

'i

programma i-esimo
( ome al olare 'i )

i-esima funzione al olabile


( he osa al ola i)

Wi

enumerazione per l'insieme i-esimo


(modo per enumerare Wi )

i-esimo insieme r.e.

(oggetto in senso insiemisti o)

Le funzioni estensionali sono omunissime: ho un programma F he al ola


una funzione f al ui interno 'e una hiamata a g. Nessuno mi impedis e
di parametrizzare f se ondo g rimpiazzando g on qual he altra funzione, in
modo da ottenere un funzionale fg : una funzione he prende ome input
una funzione e restituis e in output una funzione.
La trasformazione g 7! fg e un funzionale al olabile he de nis e una
76

funzione output al olata in base ad una funzione input. E' estensionale:


g = g 0 =) fg = fg
ioe mi interessa solo il omportamento di g e non ome questa e implementata. In qual he modo e un in apsulamento di g (la uso ma non e ne essario
he sappia ome e fatta).
0

10.2 Funzionali Cal olabili


Vediamo adesso se e ome posso de idere la al olabilita di un funzionale fg
1.
(
g (x) se g (x) #
fg (x) =
0 altrimenti

2.

Mi hiedo se tale trasformazione e e ettiva, ioe al olabile in modo


algoritmi o, e l'intuizione e he se g(x) " non sapro mai dire 0, per he
non e detto he prima o poi non onverga, quindi dovrei aspettare
all'in nito (ri ordiamo i he dobbiamo ragionare in senso algoritmi o).
Quindi potremo dire he non e al olabile (piu avanti verra fornito un
metodo di dimostrazione piu rigoroso e formale).
fg (0)

fg (x + 1)

1
0

se g (x) "
se g (x) #

= " ovunque
I possibili omportamenti di fg sono due:
0 """"    "   
oppure
1 """"    "   
ma se fosse al olabile avrei fg estensione totale di g, e so he non e pro edimento e ettivo. L'idea infatti e he nel aso g(x) " dovrei rius ire
a produrre informazione (1) da una totale assenza di informazione ("),
vale a dire he in qual he modo la divergenza di g non mi interessava.
Ma allora non mi interessa nean he la onvergenza.
77

3.

0 se g(2x) # ^ g(2x + 1) #
" altrimenti
In questo aso posso e ettivamente al olare fg , lan iando ad esempio
in parallelo due ma hine, una he mi al ola g(2x) e l'altra he al ola
g (2x + 1). Se entrambe onvergono (si fermano) di o 0, altrimenti
divergo, he e esattamente la de nizione di fg . Stesso risultato si ottiene
se si fa dove-tailing simulando la omputazione step by step alternata
di g(2x) e g(2x + 1). Se una si ferma ontinuo sull'altra, se si ferma
an he questa di o 0 altrimenti ontinuo.
fg (x)

4.

6.

0 se g(2x) # _ g(2x + 1) #
" altrimenti
Simile al pre edente, ma mi posso fermare non appena una delle due si
ferma (dell'informazione sull'altra non me ne fa io piu nulla). Indi erente l'utilizzo di dove-tailing o di elaborazione parallela.
fg (x)

5.

8
maxfg (2x); g (2x + 1)g
>
>
<g(2x)
fg (x) =
>
g (2x + 1)
>
:"

se g (2x) # ^ g (2x + 1) #
se g (2x) # ^ g (2x + 1) "
se g (2x) " ^ g (2x + 1) #
se g (2x) " ^ g (2x + 1) "

Qui, a di erenza del punto pre edente in ui se una onvergeva non me


ne fa evo piu nulla dell'informazione dell'altra, non solo mi interessa
sapere il omportamento dell'altra, ma ho bisogno an he del suo valore
per poi s egliere il massimo tra i due.
(

"

fg (0)

fg (x + 1)

= g(x)
78

se 9x : g (x) "
altrimenti

In questo aso avrei una funzione he mi opia g a partire dalla posizione


1, e nella posizione 0 mi di e se g da qual he parte divergeva o no
( ioe mi di e 1 se g e totale). Ma non posso mai dire 1: ho in nite
omputazioni da ontrollare (parallelo o dove-tailing sono te ni he he
valgono al nito), ma questo non e possibile in modo algoritmi o.

10.3 Teorema di Cal olabilita


!

??
y
PR

f
totale al olabile

'

??
y'
PR

on

8
!:
insieme di indi i (=N )
>
>
<PR : funzioni parziali al olabili
>
f:
funzione totale al olabile
>
:

: funzionale
F e al olabile se rende ommutativo il diagramma:
F ('i) = 'f (i)
ioe se a livello intensionale lo posso des rivere in modo algoritmi o.
Essendo inoltre f estensionale:
'i = 'j =) 'f (i) = F ('i ) = F ('j ) = 'f (j )
PR ha una hiara struttura topologi a: l'in lusione insiemisti a  lo rende
un reti olo, per ui avremo funzioni he sono \sottofunzioni" di altre funzioni.
Da io si hanno due proprieta:
1. Monotonia
x  x0 =) F (x)  F (x0 )
2. Continuita
F ([D) = [F (D)
Questo e un risultato molto importante, per he i di e he
\un pro edimento algoritmi o e per sua natura monotono e ontinuo "
e he
\se un pro edimento non e monotono e ontinuo allora non e algoritmi o "
F

79

10.3.1 Appli azioni

Dato il teorema pre edente, dimostriamo adesso le intuizioni per i funzionali


visti prima. La notazione he useremo si basera sui gra .
1.
(
g (x) se g (x) #
fg (x) =
0 altrimenti
Supponiamo
g (x) " ovunque
Il grafo asso iato sara dunque vuoto
g=
e la fg sara la ostante 0
fg (x) = 0 8x
da ui
fg = f< 0; 0 >; < 1; 0 >; < 2; 0 >;    ; < n; 0 >;   g
Prendo ora
g 0 = f< 0; 1 >g
si ha he
fg = f< 0; 1 >; < 1; 0 >; < 2; 0 >;    ; < n; 0 >;   g
Controlliamo la monotonia:
g  g 0 ma fg 6 fg
si ha he fg non e monotona, per ui posso on ludere per il teorema
di al olabilita he fg non e al olabile, per he non puo esistere una
funzione totale al olabile he fa ommutare il diagramma.
2. non fatto a lezione
3. non fatto a lezione
0

80

4. non fatto a lezione


5.

8
maxfg (2x); g (2x + 1)g
>
>
<g(2x)
fg (x) =
>
g (2x + 1)
>
:"

Sia

se g (2x) # ^ g (2x + 1) #
se g (2x) # ^ g (2x + 1) "
se g (2x) " ^ g (2x + 1) #
se g (2x) " ^ g (2x + 1) "

g = f< 0; 1 >g

ho he

= f< 0; 1 >g
per he siamo nel aso g(2x) # ^ g(2x + 1) " he restituis e g(2x) (per
tutti gli altri valori ri ado in "). Sia ora
g 0 = f< 0; 1 >; < 1; 2 >g
si avra
fg = f< 0; 2 >g
per he entrambi onvergono e quindi restituis o maxfg(2x); g(2x +1)g.
Controllando la monotonia si ha di nuovo
g  g 0 ma fg 6 fg
e quindi fg non e al olabile.
fg

6.

fg (0)

(
= "

fg (x + 1)

se 9x : g (x) "
altrimenti

= g(x)
In questo aso la monotonia e rispettata, ma ho dei problemi on la
ontinuita. Per dimostrarlo pero abbiamo bisogno di al une de nizioni.
81

De nizioni

Sia (A; ) un insieme parzialmente ordinato, e sia D  A.


D e diretto se
8a; b 2 D; 9 : a  ^ b 
Si dira poi he l'ordinamento e ompleto se ogni diretto ammette sup.
Useremo an he il seguente risultato:
[
F (C ) =
fF (D)g
Dfiniti C

Torniamo ora allo studio della funzione.


Dimostrazione

Sia g0 la funzione ostante 0. Avremo


g 0 = f< 0; 0 >; < 1; 0 >; < 2; 0 >;    ; < n; 0 >;   g
fg = f< 0; 1 >; < 1; 0 >; < 2; 0 >;    ; < n; 0 >;   g
per he ho g0 totale. Prendiamo adesso un qualunque g  g0 on g nito.
Essendo g nito, la funzione fg sara parziale, quindi sara sempre
fg (0) =" 8g finito  g 0
Cioe in fg non i sara mai < 0; 1 >, e a maggior ragione non i sara
mai on l'unione, per he i miei fg sono della forma
fg = f< 1; 0 >; < 2; 0 >;    ; < k; 0 >g
e la situazione e del tipo
" 000000
| {z    0} """"    "   
0

Ho quindi he
proprio per he

fg
fg

6=

[
gfinito g

3< 0; 1 >62

gfinito g

e quindi non e veri ata la ontinuita.


82

ffg g
0

ffg g
0

10.3.2 Osservazione

Il risultato sulla ontinuita e estremamente importante, per he mi di e he


l'uni o modo algoritmi o per al olare un erto C e pro edendo per approssimazioni su essive di sue parti nite. Nell'ultimo aso analizzato
si aveva un omportamento uniforme della funzione su ogni parte nita (era
parziale il grafo asso iato), ma non appena si passava all'in nito 'era un salto di ontinuita, e la funzione assumeva un altro omportamento (diventava
totale).

10.4 Dimostrazione
10.4.1 Monotonia

Supponiamo lo s hema ommutativo. f e totale e al olabile.


Siano A = 'i e B = 'j . Voglio dimostrare he
A  B =) F (A)  F (B )
Prova

Supponiamo per assurdo


F (A) e F (B ) sono

A  B ma F (A) 6 F (B )

gra di funzioni al olabili, dunque io signi a


9 < a; b >: < a; b >2 F (A) ^ < a; b >62 F (B )
ioe esiste un elemento < a; b > he appartiene al grafo di 'i e non appartiene
al grafo di 'j . Considero tale elemento
Ca;b = fk j 'k (a) = bg  fk j < a; b >2 'k g
Ca;b e un insieme r.e. di indi i: lan io la omputazione su a e aspetto he
onverga, poi veri o he dia ome output b (quindi e semide idibile, da ui
r.e.). E' inoltre estensionale:
se 'k = 'k =)< a; b >2 'k
Per lo s hema ommutativo so he
F ('i) = 'f (i)
0

83

e
per ui si ha
e in modo simmetri o

F ('j ) = 'f (j )
< a; b >2 F ('i) =) f (i) 2 C
< a; b >62 F ('j ) =) f (j ) 62 C

e totale al olabile, onsidero f 1(C ). E' estensionale per he f e C lo sono,


e r.e. per he ontroimmagine di una funzione totale al olabile, quindi per
de nizione di ontroimmagine:
i 2 f 1 (C )
Essendo f 1(C ) estensionale, gode della proprieta' di hiusura verso l'alto, e
dal momento he
i 2 f 1 (C ) e 'i  'j (per ipotesi)
dovrei on ludere
j 2 f 1 (C )
ma io ontraddi e quanto detto sopra, quindi si arriva ad un assurdo.
L'ipotesi ontraddittoria era F (A) 6 F (B ), quindi si puo' on ludere
A  B , F (A)  F (B )
f

10.4.2 Continuita
Insiemi diretti

Un insieme D si di e diretto se
8 a; b 2 D 9 2 D

t: : a  e b 

Continuita

Per ogni insieme diretto D 2 PR, se il sup S = [D; S 2 PR, allora


[
[
F ([D) = F (D) =
F (A)
A2D

84

L'uguaglianza e in realta la doppia in lusione.


Dimostro : per monotonia si ha he F (S ) e il minimo dei maggioranti,
e 8 A 2 D; F (S )  F (A), quindi
[
F ([D) 
F (A)
A2D
S
Dimostro : F (S )  A2DF (A) ( ioe S e ome insieme l'unione di tutte
le sue parti nite). Per farlo ho prima bisogno di dimostrare
[

S=

Dfinito S

ioe per ogni D nito esiste un diretto A 2 D he lo ontiene.


Prova

Sia D = fx1; : : : ; xng, ilSgeneri o elemento xi 2 D e an he elemento di S ,


poi he D  S , ma S = A2D A, quindi esiste un qual he diretto (di iamo
Axi ) he ontiene xi :
xi 2 Axi
se adesso ripeto lo stesso ragionamento per ogni elemento di D, ottengo
un insieme di diretti, ognuno dei quali ontiene un elemento di D. E per
de nizione di diretto, deve esistere un insieme diretto he ontiene tutti i
diretti presi in esame:
Ax ; Ax ; : : : ; Axn  AD
da ui immediatamente
D  AD
(notare ome l'assunzione he D e nito e fondamentale: non e detto he
in niti elementi abbiano un maggiorante dentro il diretto)
Per ui si ha
[
[
F (D) 
F (A)
1

Dfinito S

A2D

per monotonia.
Adesso posso dimostrare la tesi iniziale,
e ioe
[
F (S ) 
F (D)
Dfinito S

il he mi di e he posso al olare F (S ) ome limite (unione) delle sue parti


nite.
85

Dimostrazione

Supponiamo per assurdo he


F (S ) 6

[
Dfinito S

F (D)

e una parziale ri orsiva, sia quindi S = 'i. Cio signi a he esiste un


elemento < a; b > tale he < a; b >2 F ('i), e per ogni 'j nito on 'j  'i ,
ho he < a; b >62 F ('j ). Sia allora
C = fkj'k (a) = bg
he e un insieme r.e. ed estensionale. Allora f (i) 2 C e per nessun j tale he
'j e nito e 'j  'i ho he f (j ) 2 C . Andiamo sulla ontroimmagine:
i 2 f 1 (C )
e per tutti i j ome sopra
j 62 f 1 (C )
Questo ontraddi e la proprieta di hiusura verso l'alto della ontroimmagine
(vedere ne dimostrazione di monotonia per dettagli).
Di onseguenza:
[
[
F (S ) 
F (D ) 
F (A)
S

Dfinito S

A2D

86

Capitolo 11
Teorema del punto sso
11.1 Proprieta delle funzioni ontinue
Nella de nizione di ontinuita vista pre edentemente, una funzione F : PR !
PR ontinua gode della seguente proprieta:
11.1.1 Teorema del punto sso

Ogni funzione ontinua F ha un punto sso, ioe se


a = F (a)
allora a e un punto sso per F .
Dimostrazione

Parto da 
Prendo F ()
Prendo F (F ())
Prendo F (F (F ()))
: : : e osi via.
Per proprieta del vuoto ho he   F (), ed essendo ontinua e monotona, quindi F ()  F (F ()). Si rea una atena di in lusioni, in parti olare
un diretto. Ne prendo il sup:
[ i
S=
F ()
i2W

87

A questo punto dimostro he S e un punto sso di F : F (S ) = S Ho he:


S
i
F (S ) = F
(
i2W F ())
S
= i2WSF i+1()
=  [ i2W F i()
=[S
=S
il he dimostra l'esistenza del punto sso (man a F 0 (), ioe 0 appli azioni
di F a , ioe ).
Inoltre S e r.e. per he  e una funzione \vuota", e quindi ha grafo
vuoto, ioe r.e., quindi S e l'unione ri orsiva di insiemi r.e., quindi S e r.e. e
di onseguenza al olabile, allora:
S = 's
e per la proprieta del punto sso
F ('s) = 'f (s) = 's
11.1.2 Ri orsione e punti ssi

Se ho punti ssi, ho ri orsione.


Se ho ri orsione, ho modo per al olare punti ssi.
Infatti:
f = P (f ) (s hema ri orsivo)
F = g 7! P (g )
= g:P (g)
e f e punto sso del funzionale F .

11.2 Teorema del punto sso di Kleene


Enun iamo ora uno dei teoremi CENTRALI della teoria della al olabilita.
Per ogni funzione totale al olabile f (non ne essariamente estensionale)
esiste m tale he
'f (m) = 'm
88

Ad esempio, esistono m e m0 tali he


'fa t(m) = 'm
'su (m) = 'm
(nel se ondo esempio, io signi a he omunque enumero i miei programmi,
ne esistera per forza uno he fa la stessa osa di quello he gli sta di an o!)
11.2.1 Dimostrazione

Consideriamo

h(i; y ) = 'f ('i (i)) (y )

per al olare H : lan io 'i(i). Se # al olo f (output), e prendo il programma


he ha indi e pari al risultato e al olo Pindi e(y). Quindi h e e ettivamente
al olabile.
Per il teorema SMN esiste una funzione totale al olabile s tale he
h(i; y ) = 's(i) (y )
ma essendo s totale al olabile avra un erto indi e p nella numerazione:
s = 'p , per ui
''p (p) (y ) = 's(p) (y ) = h(p; y ) = 'f ('p (p)) (y )
e da ui ri avo l'indi e s(i) he er avo per h:
''p (p) = m
(m e ben de nito, dato he ''p(p) non diverge mai)
11.2.2 Considerazioni

Il Teorema del punto sso di Kleene i di e he per ogni funzione totale


al olabile f , esiste un indi e i tale he
'f (i)  'i
ioe he per tale indi e, la funzione al olata da i e quelle al olata da f (i)
sono in realta (e ne essariamente) la stessa funzione.
89

Dimostrazione per funzioni non ne essariamente totali

Data f al olabile, appli hiamo una diagonalizzazione sull'argomento di f ,


appli hiamo il tutto a ', e diamo input y:
g (x; y ) def 'f ('x (x)) (y )
in questa de nizione, g(x; y) e intuitivamente al olabile (infatti se 'x(x) ",
allora la f diverge)
Per il teorema SMN esiste una funzione totale al olabile h tale per ui
'h(x) (y )  'f ('x (x)) (y )
inoltre esistera un qual he programma he al ola la h: sia quindi a un indi e
per ui si ha
h = 'a
Essendo h totale, posso porre
i = 'a (a)
in modo ben de nito, poi he h non diverge mai.
Adesso:
'i (y ) = ''a(a) (y )
= 'h(a) (y)
= g(a; y)
= 'f ('a(a)) (y)
= 'f (i) (y)
vd.
11.2.3 Osservazione

Il teorema non i di e soltanto he l'indi e esiste, ma an he he puo essere


trovato in modo uniforme ed e ettivo a partire da f :
Supponendo infatti f = 'b, si ha
''b ('x (x)) (y ) = g (b; x; y )
= 'h(b;x)(y) (per SMN )
= ''k b (x) (y)
dove k(b) e l'indi e della funzione h (quello he er avo) e lo posso al olare.
( )

90

11.3 Appli azioni


11.3.1 Mnemoni o per dimostrazione

Dimostriamo he esiste un programma e tale he


'e (x) = e
ioe he qualunque sia il suo input, da in output l'indi e di se stesso.
Considero:
g (x; y ) = x
e totale.
Per il teorema SMN esiste h totale al olabile tale he:
'h(x) (y ) = g (x; y ) = x
essendo h totale posso appli are Kleene. Per il teorema del punto sso esiste
un indi e e tale he
'e = 'h(e)
in parti olare:
'e (y ) = 'h(e) (y ) = g (e; y ) = e
vd.
11.3.2 Dimostrazione di Ri e mediante Kleene

RICE: \Ogni insieme estensionale di indi i di funzioni la olabili e ri orsivo


se e solo se e triviale"
Dimostrazione

Supponiamo per assurdo he A sia ri orsivo, ma non banale:


9 i 2 A ^ 9 j 62 A
Considero
(
'i (y ) se x 2 A
g (x; y ) =
'j (y ) se x 2 A
91

Essendo A ri orsivo, il test e e ettivo, e la g(x; y) e quindi al olabile.


Appli hiamo allora Kleene
9 b : 'b = 'h(b)
Ho 2 possibilita:
 b 2 A:
'b (y ) = 'h(b) (y ) = g (b; y ) = 'j (y )
Quindi 'b = 'j . Ma A e estensionale, ho he j 2 A, da ui onsegue
b 2 A. ASSURDO
 b 2 A:
g (b; y ) = 'i (y ) ! 'b = 'i ! b 2 A
per onsiderazioni simili alle pre edenti. Questo ontraddi e l'ipotesi,
quindi ASSURDO

92

Capitolo 12
La lasse delle funzioni
al olabili
12.1 Teorema di Godel
La lasse delle funzioni al olabili e la piu pi ola lasse di funzioni he:

 ontiene +, *, =, Iin
 e hiusa per omposizione
 e hiusa per minimizzazione

ove la ri orsione primitiva non ompare per he impli ita, e in ui per Iin si
intende l'identita ome proiezione:
Iin (x1 ; x2 ; : : : ; xn ) = xi
12.1.1 Dimostrazione

Devo provare:
 odi a delle ostanti numeri he
 funzioni primitive (su essore, prede essore, : : : )
 ri orsione primitiva
93

Costante numeri a 0

Iniziamo on la ostante 0, ioe 0n(x) = 0:


+1(x; y ) = 0)
0n(x) = y:(Inn+1
(il piu pi olo y tale he y = 0)
Uguaglianza

Per l'uguaglianza (f. aratteristi a):


 (x; y )

0
1

se x 6= y
se x = y

Su essore

Per il su essore mi serve la ostante 1:


1(x) = y:((0(x; y); I2(x; y)) = 0)
= y:((0 = y) = 0)
da ui il su essore:
S (x) = I1 (x) + 1(x)
Ri orsione primitiva

Adesso voglio odi are la ri orsione primitiva.


Voglio dimostrare he posso de nire una funzione tale he per ogni sequenza
di interi a1; : : : ; an esiste un a tale he per ogni intero i si ha (a; i) = ai
(in prati a: a e la odi a di a1; : : : ; an, mi estrae da a l'i-esimo elemento
della odi a). Supponiamo di avere una funzione f primitiva ri orsiva:
(
f (x; 0) =
g (x)
f (x; y + 1) = h(x; y; f (x; y ))
(e lo s hema di ri orsione primitiva). Posso odi are la sequenza dei valori
di f da 0 a y utilizzando nel modo seguente:
t(x; y ) = z [( (z; 0) = g (x)) ^ 8i < y ( (z; i + 1) = h(x; i; (z; i)))
94

Cioe er o la piu pi ola sequenza z tale he le proiezioni siano esattamente:


z  [f (0) f (1)    f (y )
il he ri orda molto la storia di f (f^). Adesso, trovato z, posso de nire
f (x; k) = (t(x; y ); y )
| {z }
z

Esistenza di

Devo ora mostrare he tale funzione non solo esiste, ma soprattutto he


rimane all'interno della lasse del teorema. Potrei utilizzare il me anismo
gia visto in pre edenza per l'estrazione delle omponenti dalla storia di f
(unfolding, o pairing inverso), ma presuppone un me anismo di iterazione,
il he e primitivo ri orsivo, ed e proprio io he voglio dimostrare. Allora
bisogna adar i ad un altro me anismo, ad esempio quello dei resti inesi.
Resti inesi

8a; 9a : (a; i) = ai

Cer heremo di ottenere gli ai ome resti della divisione di un numero per
dati numeri d0; d1; : : : ; dn:
ai = rm( ; di) ! = qi di + ai ; on ai < di
Supponiamo he tutti i di siano primi tra loro, e osideriamo il loro prodotto
p = d0  d1  d2      dn
Lemma

Per ogni oppia di interi ; 0 < p; 6= 0 , esiste almeno un i tale he


rm( ; di) 6= rm( 0 ; di )
ioe un qual he resto e diverso.
95

Dim lemma

Supponiamo per assurdo


rm( ; di)

= rm( 0; di)
Si ha he, sottraendo membro a membro

= qi di + ai
0

= qi0 di + ai
0
= (qi qi0 )di + 0
ioe la di erenza e an ora divisibile per di. Supponiamo he questo valga per
tutti gli i (e questo l'assurdo). Cio signi a he la quantita ( 0) e divisibile
per ogni di, ma essendo primi tra loro vale a dire he tale quantita e divisibile
per il loro prodotto p. Ma io e assurdo, per he per ipotesi avevamo he sia
< p he 0 < p, e a maggior ragione ( 0 ) < p, il he vuol dire he non
puo essere ( 0) divisibile per p. vd
Tornando ai resti inesi, devo trovare dei di tutti primi tra loro, ed e o
un metodo e ettivo:
1 + d 1 + 2d 1 + 3d    1 + (n 1)d
valido per ogni d = s!, on s  n, ma dovendo essere ai < di, il vin olo si
restringe a s  ai .
Usando la odi a per oppie, e avendo di = 1 + (i + 1)d, avro
(a; i) = rm( ; di )
= rm( ; 1 + (i + 1)d)
= rm(fst(a); 1 + (i + 1)snd(a))
Man a una osa: rm() e esprimibile nel sistema formale? Devo dimostrare:
 hiusura rispetto alle operazioni logi he
 la funzione di pairing e nel sistema

96

Negazione

Basta prendere l'uguaglianza on 0:


 (x; 0)

da ui

0
1

se x 6= 0
se x = 0

C:R (x) =  (CR (x); 0)

Disgiunzione

d(x; y ) =  ( (x + y; 0); 0)

CR_S (x) = d(CR (x); CS (x))

Quanti azione limitata


y<z R(x; y )

=def

y:R(x; y ) se 9 y < z R(x; y )


z
altrimenti

posso esprimerla in forma abbreviata


y:(R(x; y ) _ y = z )
da ui (esistenziale limitato):
9 y < z R(x; y) , y<z R(x; y) 6= z
Con questo ho dimostrato di avere :; _; 9y<z , per ui so an he di poter
avere ^; 8y<z
Pairing

(x + y)2 + 3x + y
2
Ho tutto, tranne la divisione. Dimostriamo he e esprimibile:
f (z ) = z=2
= z div 2
= y:(2y = z _ 2y + 1 = z)
< x; y >=

97

Unpairing

= x:(9y<z+1 z =< x; y >)


snd(z ) = y:(9x<z+1 z =< x; y >)
(sarebbe uguale a questo punto prendere x<z+1 ome operatore di minimizzazione limitata, ome visto all'inizio del orso). A questo punto ho tutto.
Quindi la funzione rm()...
Remainder rm()

e il gio o e fatto.

fst(z )

rm(x; y ) = z<y :(9q<x+1 x = qy + z )

98

Capitolo 13
Rappresentabilita di funzioni
13.1 Introduzione
In questo apitolo parleremo del problema della rappresentabilita di funzioni
al olabili (totali e non) in sistemi formali dell'aritmeti a. I presupposti
saranno
 Logi a del prim'ordine on uguaglianza
 un erto insieme di assiomi
Gli assiomi he tratteremo saranno molto sempli i, piu sempli i di quelli di Peano, e i serviranno per odi are al une proprieta fondamentali
dell'aritmeti a. Cio he ne s aturira sara l'aritmeti a di Robinson

13.2 Aritmeti a di Robinson (R)

Segnatura del nostro linguaggio:


+; ; =; n; <, e una serie di assiomi
B1 : x 6= y ` :(x = y)
B2 : (x < n) _ (x = n) _ (n < x)
B3 : :(x < 0)
B4 : (x < n + 1) =) (x = 0) _ (x = 1) _    _ (x = n)
B5 : x + y = x + y
B6 : x  y = x  y
dove a signi a \il termine he odi a a"
99

13.2.1 Def: Rappresentazione Debole

e rappresentata debolmente da una formula ' se e solo se


a) f (x1 ; : : : ; xn ) = y sse ` '(x1 ; : : : ; xn ; y)
( ioe se posso semide idere l'appartenenza all'immagine)

13.2.2 Def: Rappresentazione

e rappresentata da una formula ' se e solo se


b) f (x1 ; : : : ; xn ) = y sse ` '(x1 ; : : : ; xn ; y)
) f (x1 ; : : : ; xn ) 6= y sse ` :'(x1 ; : : : ; xn ; y)
( ioe se posso de idere l'appartenenza o meno all'immagine)
f

13.2.3 Def: Rappresentazione Forte

f e rappresentata fortemente da una formula ' se e solo se e rappresentata


da ', e inoltre vale
d)

` 8y8z ('(x1 ; : : : ; xn; y) ^ '(x1 ; : : : ; xn; z) ) y = z)

( ioe se posso dimostrare l'uni ita dell'output)

13.3 Teoremi
13.3.1 Teorema 1

Se vale l'assioma B1 , la funzione f e fortemente rappresentabile se e solo


se
8y ('(x1 ; : : : ; xn; y) , y = f (x1 ; : : : ; xn)
13.3.2 Teorema 2

Se valgono gli assiomi B2,B3 e B4 ogni funzione rappresentabile e an he


fortemente rappresentabile ( ioe posso ambiare la rappresentazione)
100

13.3.3 Teorema

Supponiamo he f sia rappresentata da '. Allora


(x1 ; : : : ; xn ; y) = '(x1; : : : ; xn; y) ^ (8z<y :'(x1 ; : : : ; xn; z))
ioe  rappresenta fortemente la funzione f
Dimostrazione

Innanzitutto dimostro he  rappresenta f , ioe


I) f (x1; : : : ; xn) = y ` (x1 ; : : : ; xn; y)
II) f (x1; : : : ; xn) 6= y ` :(x1 ; : : : ; xn; y)
(la dimostrazione e in omprensibile... da rivedere)
13.3.4 Teorema (rappresentabilita di funzioni al olabili totali)
Nell'aritmeti a di Robinson R ogni funzione al olabile totale e rappresen-

tabile.

Dimostrazione

Per rappresentare l'uguaglianza devo hiudere per omposizione e minimizzazione.


Minimizzazione

f (x1 ; : : : ; xn )

def

y:(g (x1; : : : ; xn ; y ) = 0)

=z

Suppongo g fortemente rappresentabile in R.


Come fa io a rappresentare f ?
'f (x1 ; : : : ; xn ; z ) = 'g (x1 ; : : : ; xn ; z; 0) ^ (8y<z :'g (x1 ; : : : ; xn ; y; 0))
Si puo dimostrare he se 'g e forte rappresentazione per g, allora 'f e forte
rappresentazione per f .
Composizione
Supponiamo
f (x1 ; : : : ; xn ) = g (h1 (x1 ; : : : ; xn ); : : : ; hk (x1 ; : : : ; xn ))
101

e he 'g rappresenta fortemente g e 'hi rappresenta fortemente hi. Allora


'f (x1 ; : : : ; xn ; y ) =
9y1 : : : 9yk (('h (x1; : : : ; xn; y1) ^  ^ 'hk (x1; : : : ; xn; yk )) ^ 'g (y1; : : : ; yk ; y))
Si puo dimostrare he 'f rappresenta fortemente f .
Adesso, per somma e prodotto:
'+ (x; y; z ) =def (x + y = z )
' (x; y; z ) =def (x  y = z )
(usando gli assiomi B5 e B6)
Per le proiezioni prendo le identita generalizzate.
E on questo ho dimostrato he le funzioni al olabili totali sono fortemente rappresentabili in R
1

102

Capitolo 14
Rappresentabilita di relazioni
14.1 Introduzione
Abbiamo dimostrato nel apitolo pre edente he in ogni sistema formale
onsistente he estende R ( ioe ostituito da una assiomatizzazione nita
e he estende la logi a del prim'ordine), ogni funzione al olabile totale e
fortemente rappresentabile. Ovvero
9'f 2 R ; ` 8y 'f (x1 ; : : : ; xn; y) , y = f (x1 ; : : : ; xn)
(per onsistente si intende he in tale sistema formale R sia rappresentabile).
Inoltre vale il vi eversa. Supponiamo he f sia una qual he funzione
debolmente rappresentabile, ioe he esista un qual he 'f tale he
f (x1 ; : : : ; xn ) = y , ` 'f (x1 ; : : : ; xn ; y )
e supponiamo di essere in uno di questi sistemi formali.
Allora f e al olabile

14.2 Rappresentabilita di relazioni


sia R(x1 ; : : : ; xn) una relazione su (x1 ; : : : ; xn)
14.2.1 Debole rappresentabilita
R e debolmente rappresentabile se

esiste 'R tale he


R(x1 ; : : : ; xn ) , ` 'R (x1 ; : : : ; xn )
103

14.2.2 Rappresentabilita
R e rappresentabile

se esiste 'R tale he


R(x1 ; : : : ; xn ) , ` 'R (x1 ; : : : ; xn )
:R(x1 ; : : : ; xn) , ` :'R (x1 ; : : : ; xn)

14.2.3 Forte rappresentabilita

Sarebbe l'uni ita dell'output. Ma ovviamente per le relazioni non ha senso

14.3 Funzioni aratteristi he


14.3.1 Ri hiamo di de nizione
CR

e funzione aratteristi a di R se
(
1 se x1 ; : : : ; xn sono in relazione rispetto a R
CR =
0 altrimenti

14.3.2 De nizione 1

Se CR e debolmente rappresentabile, allora R e rappresentabile


'R (x1 ; : : : ; xn ) =def CR (x1 ; : : : ; xn ) = 1
Dimostrazione

R(x1 ; : : : ; xn ) , CR (x1 ; : : : ; xn ) ,` 'CR (x1 ; : : : ; xn ; 1) = 'R (x1 ; : : : ; xn )

14.3.3 De nizione 2

Se R e rappresentabile (via 'R), allora CR e fortemente rappresentabile


'CR (x1 ; : : : ; xn ; z ) =def ('R (x1 ; : : : ; xn ) ^ z = 1) _ (:'R (x1 ; : : : ; xn ) ^ z = 0)

104

14.4 Teorema 1: rappresentabile = ri orsivo


Mettiamo i nel solito sistema F . Una relazione R e rappresentabile in F
se e solo se e ri orsiva.
14.4.1 Dimostrazione
(: Se R e ri orsivo, la CR e al olabile, quindi rappresentabile, quindi R e

rappresentabile.
): Se R e rappresentabile, la CR e rappresentabile, quindi al olabile,
quindi R e ri orsivo.
(Caratterizzazione ulteriore degli insiemi ri orsivi: sono quelli esprimibili
ome relazioni rappresentabili in F )

14.5 Teorema 2: deb. rappr. = r.e.


Una relazione R e debolmente rappresentabile in F se e solo se e ri orsivamente enumerabile.
14.5.1 Dimostrazione

(Problemi on dimostrazione e
- onsistenza... da hiedere)

105

Capitolo 15
In ompletezza e inde idibilita
15.1 De nizioni
15.1.1 In ompletezza
15.1.2 Inde idibilita

15.2 Teoremi
15.2.1 Primo teorema di In ompletezza
15.2.2 Se ondo teorema di In ompletezza

106