You are on page 1of 76

Elementi di Logica Matematica

Dispense per lanno accademico 2010/11


Nicola Gambino
Dipartimento di Matematica e Informatica
Universit` a degli Studi di Palermo
15/3/2011
Indice
Nota 3
1 Logica proposizionale 4
1.1 Formule proposizionali . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Il calcolo della deduzione naturale . . . . . . . . . . . . . . . 6
1.3 Valutazioni e tavole di verit`a . . . . . . . . . . . . . . . . . . 12
1.4 Il teorema di validit`a . . . . . . . . . . . . . . . . . . . . . . . 16
1.5 Il teorema di completezza . . . . . . . . . . . . . . . . . . . . 22
2 Logica del primo ordine 26
2.1 Linguaggi del primo ordine . . . . . . . . . . . . . . . . . . . 26
2.2 Il calcolo della deduzione naturale . . . . . . . . . . . . . . . 29
2.3 Strutture e modelli . . . . . . . . . . . . . . . . . . . . . . . . 33
2.4 Il teorema di validit`a . . . . . . . . . . . . . . . . . . . . . . . 35
2.5 Il teorema di completezza . . . . . . . . . . . . . . . . . . . . 39
3 Teoria degli Insiemi 42
3.1 Gli assiomi di ZF . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2 Codica in ZF e induzione insiemistica . . . . . . . . . . . . . 45
3.3 Ordinali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.4 Lassioma della scelta . . . . . . . . . . . . . . . . . . . . . . 52
3.5 Cardinali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4 Teoria della Calcolabilit`a 57
4.1 Macchine a registri . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2 Funzioni ricorsive . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.3 La tesi di Church . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4 Esempio di una funzione non ricorsiva . . . . . . . . . . . . . 65
4.5 Insiemi ricorsivi e ricorsivamente enumerabili . . . . . . . . . 67
1
A Appendice 70
A.1 Insiemi, relazioni e funzioni . . . . . . . . . . . . . . . . . . . 70
A.2 Ordini parziali e ordini totali . . . . . . . . . . . . . . . . . . 72
2
Nota
Questo documento contiene le dispense dei corsi di Elementi di Logica Ma-
tematica per il Corso di Laurea di Matematica e di Logica per il Corso di
Laurea in Informatica, oerti dalla Facolt`a di Scienze MM.FF.NN. dellU-
niversit`a degli Studi di Palermo per lanno accademico 2010/11. La pagina
web del corso `e
http://www.math.unipa.it/
~
ngambino/Teaching/2010-11/EdLM.html
Da questa pagina si potranno scaricare i testi degli esercizi svolti durante le
ore di esercitazioni, testi delle prove scritte degli anni scorsi, annunci delle
date degli esami e di eventuali variazioni di orario delle lezioni.
Nulla di queste dispense `e originale, salvo la scelta del materiale ed alcu-
ni aspetti della presentazione. I primi due capitoli sono tratti da [3, 4, 7],
il terzo da [2, 4, 6] e il quarto da [1, 4]. Errori e imprecisioni rimangono
comunque di mia responsabilit`a. Ringrazio gli studenti degli anni accade-
mici 2008/09 e 2009/10, che hanno contribuito a ridurne il numero con le
loro segnalazioni. Ulteriori segnalazioni, da inviarsi per e-mail allindirizzo
ngambino@math.unipa.it, sono benvenute. Va sottolineato che queste di-
spense non sostituiscono i libri di testo o gli appunti delle lezioni, ma sono
solamente di supporto allo studio.
3
Capitolo 1
Logica proposizionale
1.1 Formule proposizionali
Sia P un insieme nito o numerabile. Chiameremo gli elementi di P formule
atomiche e li indicheremo con le lettere p, q, r, s, . . .. Linsieme Form(P) delle
formule proposizionali generato da P `e denito come il pi` u piccolo insieme X
che soddisfa le seguenti propriet`a:
(i) se p P allora p X,
(ii) X e X,
(iii) se , X allora ( ) , ( ) , ( ) X.
In base a questa denizione, Form(P) soddisfa (i)-(iii) e per ogni insie-
me X che soddisfa (i)-(iii) si ha Form(P) X. Dora in poi, parleremo
semplicemente di formule anziche di formule proposizionali, visto che non
utilizzeremo altri tipi di formule. Per esempio, se p, q, r P allora
(p (q r)) , ((p q) (p r)) , (p (p )) (1.1)
sono formule. Le formule e saranno chiamate il vero e il falso, rispet-
tivamente. Date due formule e , chiameremo ( ) la congiunzione di
e , ( ) la disgiunzione di e , e ( ) limplicazione da a .
Notazione 1.1.1.
`
E conveniente introdurre alcune abbreviazioni e convenzio-
ni. Innanzitutto, deniamo
( ) =
def
(( ) ( )) ,
() =
def
( ) .
4
Chiameremo () la negazione di . Nel seguito, utilizzeremo le seguenti
convenzioni, in maniera da semplicare la scrittura e la lettura delle formule.
Le parentesi pi u esterne verranno omesse. Per esempio,
abbrevia ( ) .
Il simbolo di negazione va inteso come applicato solo alla formula che
lo segue immediatamente. Per esempio,
abbrevia () .
Salva rimanendo la convenzione precedente, i simboli di congiunzione
e disgiunzione vanno intesi come applicati solo alle formule pi u vicine
tra cui compaiono. Per esempio,

1

1

2

2
abbrevia (
1

1
) (
2

2
) .
Quando lo stesso connettivo `e utilizzato ripetutamente, sara inteso
come applicato da destra a sinistra. Per esempio,
abbrevia ( ) ,
abbrevia ( ) .
In base a queste convenzioni, le formule in (1.1) possono essere riscritte come
p (q r) , (p q) (p r) , p p .
Nel caso non si sia sicuri di rispettare le convenzioni `e sempre possibile non
eliminare parentesi.
Dalla denizione dellinsieme delle formule proposizionali segue che esso sod-
disfa un principio di induzione analogo al principio di induzione per linsie-
me dei numeri naturali. In base a questo principio, per dimostrare che una
propriet`a S() vale per ogni formula , `e suciente dimostrare che
vale S(p), per ogni p P,
valgono S() e S(),
se valgono S() e S() allora valgono S(), S( ), S( ).
Per esempio, questo principio puo essere utilizzato per dimostrare che ogni
formula contiene un numero pari di parentesi. Abbiamo anche un analogo
del principio di denizione per ricorsione di funzioni per i numeri naturali,
che non enunciamo esplicitamente ma utilizzeremo quando introdurremo il
concetto di valutazione.
5
1.2 Il calcolo della deduzione naturale
Sia un insieme di formule e una formula. Vogliamo denire che cosa
signichi per essere derivabile da . Lidea che vogliamo rendere precisa
`e che linsieme costituisce un insieme di ipotesi da cui segue la conclusio-
ne . Esistono diversi, ma essenzialmente equivalenti, sistemi per assioma-
tizzare questa nozione. Noi seguiremo il sistema della deduzione naturale,
che cattura in maniera intuitiva e precisa le leggi utilizzate comunemente nel
ragionamento matematico. Per esempio, il sistema della deduzione naturale
ci permette di dimostrare che dallinsieme di ipotesi , ,
segue tramite la costruzione del seguente albero di deduzione:

I

Le regole della deduzione naturale sono regole per costruire alberi di dedu-
zione come il precedente. Nel dare le regole della deduzione naturale, distin-
gueremo (quando `e appropriato farlo) tra regole di introduzione e regole di
eliminazione.
Regole per la congiunzione. Per la congiunzione, abbiamo una regola di
introduzione e due regole di eliminazione:

E,1

E,2

La regola di introduzione ci dice che se possiamo dedurre sia e , allora


possiamo dedurre anche la loro congiunzione . Le regole di eliminazione
ci dicono che se possiamo dedurre , allora possiamo dedurre sia che
.
Esempio 1.2.1.
(i) Per dimostrare che da segue possiamo costruire lalbero

E,2

E,1

I

6
(ii) Per dimostrare che da () segue () costruiamo lalbero
( )

E,1

E,1

( )

E,1

E,2

( )

E,2

I
( )
Regole per limplicazione. Per limplicazione, abbiamo una regola di
introduzione e una regola di eliminazione. La regola di introduzione `e
[]
n

I,n

La regola di eliminazione `e

La regola di eliminazione, nota anche come modus ponens, ci dice che se


sappiamo dedurre e , allora possiamo dedurre . La regola di
introduzione dice che se dallipotesi sappiamo dedurre , allora possiamo
dedurre , senza pi u assumere . Questultimo aspetto `e indicato
mettendo la formula tra parentesi quadre etichettate con un indice, dato
da un numero n N, e ripetendo lo stesso indice nel passaggio in cui lipo-
tesi viene scaricata.
`
E importante ricordare che, una volta che unipotesi
viene scaricata, essa non puo pi u essere utilizzata, a meno che non venga
nuovamente assunta.
Esempio 1.2.2.
(i) Per dimostrare che da e segue ( ), costruiamo
lalbero
[]
1

[]
1

I,1
( )
7
(ii) Per dimostrare ( ) (( ) ), costruiamo lalbero
[ ]
2
[ ]
1

E,1

I,1
( )

I,2
( ) (( ) )
(iii) Per dimostrare , costruiamo lalbero
[]
1
[]
2


I,1

I,2

Lapplicazione della regola di eliminazione dellimplicazione nel primo
passaggio `e giusticata dalla denizione della negazione. Infatti, questo
passaggio `e identico al seguente:

che `e unistanza della regola di eliminazione per limplicazione.


Osservazione 1.2.3.
`
E possibile applicare la regola di introduzione dellim-
plicazione scaricando una formula che non `e stata assunta. In questo caso,
il passaggio non richiede alcun indice. Per esempio, la seguente derivazione
`e da considerarsi corretta:
[]
1

I,1
( )
La giusticazione per questa regola `e che data dal fatto che potremmo sem-
pre introdurre passaggi ridondanti che coinvolgono la formula scaricata non
assunta. Per esempio, potremmo derivare ( ) nel modo seguente:
8
[]
2
[]
1

I,1

I,2
( )
Regole per la disgiunzione. Abbiamo due regole di introduzione e una
regola di eliminazione.

I,1

I,2


[]
n

[]
m

E,n,m

Le regole di introduzione ci dicono che se possiamo dedurre o , allora pos-


siamo dedurre anche . La regola di eliminazione ci dice che se sappiamo
dedurre , sappiamo dedurre assumendo anche , sappiamo dedurre
assumendo anche , allora possiamo dedurre , senza pi u assumere n`e
n`e . Come per la regola di eliminazione per limplicazione, utilizziamo
parentesi quadre e indici per segnalare ipotesi che vengono eliminate.
Esempio 1.2.4. Per dimostrare che da ( ) segue ( ) ( ),
costruiamo lalbero
( )

E,2

( )

E,1
[]
1

I,1
( ) ( )
( )

E,1
[]
2

I,2
( ) ( )

E,1,2
( ) ( )
Regole per le dimostrazioni per assurdo. La regola per le dimostra-
zioni per assurdo `e
9
[]
n

RAA
n

Questa regola, nota anche come reductio ad absurdum, ci dice che se sap-
piamo dedurre il falso dallipotesi , allora possiamo dedurre , senza pi u
bisogno dellipotesi . Ancora una volta, utilizziamo parentesi quadre e
indici per indicare che lipotesi viene scaricata nellapplicazione della
regola.
Esempio 1.2.5. Dimostriamo la legge della doppia negazione, ovvero .
[]
2
[]
1

RAA
1

I,2

Si noti che lapplicazione della regola di eliminazione dellimplicazione, nel
primo passaggio, `e giusticata dalla denizione della negazione. In partico-
lare, quel passaggio puo essere riscritto equivalentemente come

che `e chiaramente unistanza della regola di eliminazione dellimplicazione.


Regole per il vero e il falso. Per il vero, abbiamo solo una regola di
introduzione, mentre per il falso abbiamo solo una regola di eliminazione.

La regola di introduzione per il vero ci dice semplicemente che, senza alcuna


premessa, possiamo dedurre il vero. La regola di eliminazione per il falso,
nota anche come ex falso quodlibet, ci dice che se le nostre ipotesi ci permet-
tono di dedurre il falso, allora ci permettono di dedurre qualsiasi formula.
Inne, abbiamo la regola pi u semplice:

che esprime semplicemente che ogni formula permette di derivare se stessa.


10
Denizione 1.2.6.
Sia un insieme di formule e sia una formula. Diremo che `e
derivabile da se esiste unalbero di derivazione con conclusione e
le cui ipotesi non scaricate formano un sottoinsieme di . Scriveremo
per indicare che `e derivabile da .
Sia una formula. Se vale che , diremo che `e un teorema.
Scriveremo semplicemente per indicare che `e un teorema.
Esempi 1.2.7. Gli esempi di alberi di derivazione considerati precedente-
mente dimostrano che:

( ) ( )
, ( )
( ) (( ) )

( ) ( ) ( )

Proposizione 1.2.8. Le seguenti formule sono teoremi.
(i) Leggi di idempotenza:
,
.
(ii) Leggi associative:
( ) ( ) ,
( ) ( ) .
(iii) Leggi distributive:
( ) ( ) ( ) ,
( ) ( ) ( ) .
(iv) Legge della doppia negazione: .
11
(v) Leggi di De Morgan:
( ) ,
( ) .
(vi) Legge del terzo escluso: .
(vii) Riduzione dellimplicazione: ( ) ( ).
Dimostrazione. Esercizio.
1.3 Valutazioni e tavole di verit`a
Le regole del calcolo di deduzione naturale ci permettono di stabilire che
una formula segue da un insieme di ipotesi . Cominciamo ora ad aron-
tare il problema di come sia possibile stabilire che una formula non sia
derivabile da un insieme di ipotesi . Si noti come questo tipo di problema
`e apparentemente dicile da risolvere, visto che dire che non `e derivabile
da signica dire che le regole del calcolo di deduzione naturale non per-
mettono di costruire nessun albero di derivazione con ipotesi non scaricate
in e conclusione . La nozione di valutazione ci permettera di studiare il
problema in maniera ecace.
Denizione 1.3.1.
Una valutazione `e una funzione V : Form(P) 0, 1 con le seguenti
propriet`a:
V() = 0
V() = 1
V( ) =
_
1 se V() = 1 e V() = 1 ,
0 altrimenti.
V( ) =
_
1 se V() = 1 o V() = 1 ,
0 altrimenti.
V( ) =
_
0 se V() = 1 e V() = 0 ,
1 altrimenti.
Diremo che una valutazione V soddisfa una formula se V() = 1.
12
Spieghiamo brevemente la condizione che specica il valore di una valu-
tazione su di unimplicazione. Il punto pi u delicato riguarda i casi in cui
V() = 0, ovvero in cui la premessa dellimplicazione non `e soddisfatta. Si
consideri la seguente aermazione:
Se 0 = 1 allora 2 = 3.
`
E opportuno dichiarare questa implicazione vera, visto che abbiamo il se-
guente, perfettamente legittimo, ragionamento:
Se 0 = 1 allora 0 + 2 = 1 + 2, da cui segue 2 = 3.
Fissare che vale V( ) = 1 quando V() = 0 intende catturare lidea
che da premesse false `e possibile, secondo ragionamenti legittimi, ottenere
qualsiasi conclusione, anche conclusioni che sono a loro volta false.
Osservazione 1.3.2. Per denire una valutazione `e suciente denire i suoi
valori sulle formule atomiche. Infatti, una volta specicati questi valori, le
condizioni che deniscono la nozione di valutazione determinano il valore
su tutte le formule. Per esempio, dati formule atomiche p, q, r, se abbiamo
ssato denito V (p), V (q), V (r), allora V (p q r) pu`o essere calcolato
utilizzando i valori V (q) e V (r) per calcolare V (q r) e utilizzando poi
questo valore e quello di V (p) per calcolare V (p q r).
I valori di una valutazione possono essere descritti anche tramite le cosid-
dette tavole di verit`a per la logica proposizionale. Uno dei vantaggi delle
tavole di verita `e che esse permettono di calcolare i valori di una valutazione
in maniera completamente algoritmica, anche se laboriosa. Daremo ora le
tavole di verit`a per ciascun connettivo.
Esempio 1.3.3 (Tavola di verit`a della negazione). Possiamo calcolare la tavo-
la di verita per la negazione, che `e completamente determinata dalla tavola
di verita dellimplicazione.

1 0 0
0 0 1
Possiamo riassumere questa tavola come segue.

1 0
0 1
Quindi, una valutazione soddisfa se e solo se non soddisfa .
13

1 1 1
1 0 0
0 1 0
0 0 0

1 1 1
1 0 1
0 1 1
0 0 0

1 1 1
1 0 0
0 1 1
0 0 1
Figura 1.1: Tavole di verit`a dei connettivi proposizionali
Esempio 1.3.4. Possiamo combinare le tavole di verit`a date nora per otte-
nere le tavole di verit`a di formule complesse. Per esempio, ricordando che
abbiamo denito
( ) =
def
( ) ( ) ,
possiamo costruire la seguente tavola di verit`a:
( ) ( )
1 1 1 1 1
1 0 0 1 0
0 1 1 0 0
0 0 1 1 1
Possiamo riassumere questa tavola con la seguente:

1 1 1
1 0 0
0 1 0
0 0 1
14
Quindi, per ogni valutazione V, si ha che V( ) = 1 se e solo se
V() = V().
Esempio 1.3.5. Le tavole di verita ci permettono di vericare, almeno in casi
semplici, quando una formula `e una tautologia. Per esempio, verichiamo
che
( ) ( )
`e una tautologia. In base alle osservazioni fatte precentemente, `e suciente
vericare che V( ) = V( ) per ogni valutazione V. A tal ne,
calcoliamo la tavola di verit`a di , che `e la seguente:

1 1 0 1
1 0 0 0
0 1 1 1
0 0 1 1
Abbiamo quindi

1 1 1 1
1 0 0 0
0 1 1 1
0 0 1 1
Il che dimostra che, per ogni valutazione V, si ha V() = V( ),
come volevasi dimostrare.
Osservazione 1.3.6. Per concludere questa sezione, ritorniamo a considerare
la giusticazione della tavola di verit`a dellimplicazione. Si ricordi che la
formula
( ) ( )
`e un teorema. Se vogliamo, come `e naturale richiedere, che ogni teorema sia
una tautologia, la tavola di verit`a per `e completamente determinata
dalle tavole di verit`a per la disgiunzione e per la negazione, entrambe delle
quali sono ben motivate. Il fatto che la negazione sia denita in termini
dellimplicazione crea un apparente circolo vizioso, ma questo puo essere
evitato introducendo la negazione come un simbolo primitivo, anziche de-
nito, e aggiungendo regole di deduzione che permettano di dimostrare che
( ) `e un teorema.
15
1.4 Il teorema di validit`a
Denizione 1.4.1.
Sia un insieme di formule e una formula. Diremo che implica
semanticamente se ogni valutazione che soddisfa tutte le formule
in soddisfa anche . Scriveremo per indicare che implica
semanticamente .
Sia una formula. Diremo che `e una tautologia se `e soddisfatta da
ogni valutazione. Scriveremo per indicare che `e una tautologia.
Teorema 1.4.2 (Teorema di Validit`a). Se allora .
Dimostrazione. Supponiamo che . Questo signica che esiste un albero
di deduzione naturale con conclusione e le cui premesse non scaricate
sono elementi di . Per dimostrare che procediamo per induzione
sullaltezza di questalbero, distinguendo a seconda di quale sia lultima
regola applicata. Per il caso base, abbiamo che gli unici alberi di altezza 1,
sono


Per la prima regola, visto che `e lunica ipotesi dellalbero, dobbiamo dimo-
strare che se , allora . Questo `e evidente. Per la seconda regola,
ogni valutazione `e tale che V() = 1 e quindi non c`e nulla da dimostrare.
Se lultima regola applicata `e lintroduzione della congiunzione, lalbero
di deduzione ha la forma

1

2
Ipotesi induttive.
Se
1
contiene tutte le ipotesi del sottoalbero con conclusione
1
allora
1

1
.
Se
2
contiene tutte le ipotesi del sottoalbero con conclusione
2
allora
2

2
.
Tesi. Se contiene le tutte ipotesi dellalbero con conclusione
1

2
allora
1

2
.
16
Dimostrazione della tesi. Sia un insieme che contiene tutte le ipotesi del-
lalbero con conclusione
1

2
. Deniamo
1
come linsieme delle ipotesi
del sottoalbero con conclusione
1
,
2
come linsieme delle ipotesi del sot-
toalbero con conclusione
2
. Dalle ipotesi induttive, segue che
1

1
e

2

2
. Oltre a questo, abbiamo che
1

2
. Sia ora V una valuta-
zione che rende valida ogni formula in . In particolare V rende valida ogni
formula in
1
e in
2
. Visto che
1

1
e
2

2
, ne segue che V(
1
) = 1
e V(
2
) = 1. Da questo possiamo dedurre V(
1

2
) = 1, come volevasi
dimostrare.
Se lultima regola applicata `e uneliminazione della congiunzione, lalbero
di deduzione ha una delle seguenti due forme:

1

2

E,1

1

2

E,2

2
Le due regole sono analoghe e quindi trattiamo solo lalbero a sinistra.
Ipotesi induttiva. Se `e un insieme che contiene tutte le ipotesi del sottoal-
bero con conclusione
1

2
, allora
1

2
.
Tesi. Se contiene tutte le ipotesi dellalbero con conclusione
1
, allora

1
.
Dimostrazione della tesi. Sia allora un insieme che contiene tutte le ipotesi
dellalbero con conclusione
1
. Chiaramente, contiene tutte le ipotesi
del sottoalbero con conclusione
1

2
. Dallipotesi induttiva, possiamo
concludere che
1

2
. Da questo segue immediatamente che
1
,
come volevasi dimostrare.
Se lultima regola applicata `e lintroduzione dellimplicazione, lalbero
ha la forma:
[]
n

I,n

Ipotesi induttiva. Se contiene tutte le ipotesi dellalbero
17

()
allora .
Tesi. Se

contiene tutte le ipotesi dellalbero con conclusione , allora

.
Dimostrazione della tesi. Sia

un insieme che contiene tutte le ipotesi del-


lalbero con conclusione . Per assurdo, si supponga che

= ( ).
Allora, esiste una valutazione V che soddisfa ogni formula in

, ma che non
soddisfa . Questo avviene se e solo se V() = 1 e V() = 0. Si
denisca allora
=
def

.
Chiaramente, V soddisfa tutte le formule in . Inoltre, contiene tutte le
ipotesi dellalbero in (). Per lipotesi induttiva, si ha che e quindi
che V() = 1, una contraddizione.
Se lultima regola applicata `e leliminazione dellimplicazione, lalbero ha
la forma:

Ipotesi induttive.
Se

contiene tutte le ipotesi del sottoalbero con conclusione ,


allora

.
Se

contiene tutte le ipotesi del sottoalbero con conclusione , allora

.
Tesi. Se contiene tutte le ipotesi dellalbero con conclusione , allora
.
Dimostrazione della tesi. Se contiene tutte le ipotesi dellalbero con con-
clusione , allora contiene anche tutte le ipotesi del sottoalbero con conclu-
sione e del sottoalbero con conclusione . Dallipotesi induttiva, ne
segue che e . Per vericare che , si consideri una
valutazione V che soddisfa tutte le formule in . Da , segue che
18
V( ) = 1, e da segue che V() = 1. Deve quindi valere che
V() = 1. Se non lo fosse, avremmo V( ) = 0, una contraddizione.
Se lultima regola applicata `e lintroduzione della disgiunzione, lalbero
ha la forma

I,1

1

2

I,2

1

2
Come nel caso delleliminazione della congiunzione, le due regole sono es-
senzialmente analoghe e quindi trattiamo solo quella di sinistra.
Ipotesi induttiva. Se
1
contiene tutte le ipotesi del sottoalbero con conclu-
sione
1
allora
1

1
.
Tesi. Se contiene tutte le ipotesi dellalbero con conclusione
1

2
, allora

1

2
.
Dimostrazione della tesi. Chiaramente, se contiene tutte le ipotesi del-
lalbero con conclusione
1

2
, allora contiene anche tutte le ipotesi del
sottoalbero con conclusione
1
. Dallipotesi induttiva, possiamo concludere
che
1
. Da questo segue immediatamente
1

2
, come volevasi
dimostrare.
Se lultima regola applicata `e leliminazione della disgiunzione, lalbero
ha la forma

1

2
[
1
]
n

[
2
]
m

E,n,m

Ipotesi induttive.
Se contiene tutte le ipotesi del sottoalbero con conclusione
1

2
,
allora
1

2
.
Se
1
contiene tutte le ipotesi del sottoalbero

allora
1
.
19
Se
2
contiene tutte le ipotesi del sottoalbero

allora
2
.
Tesi. Se

contiene tutte le ipotesi dellalbero con conclusione allora

.
Dimostrazione della tesi. Se

contiene tutte le ipotesi dellalbero con con-


clusione , allora contiene tutte le ipotesi del sottoalbero con conclusione

2
e quindi, per ipotesi induttiva,

2
. Vogliamo dimostrare che

. Per assurdo, si supponga che esista una valutazione V che soddisfa


tutte le formule in

, ma tale che V() = 0. Visto che


1

2
, deve
valere V(
1
) = 1 o V(
2
) = 1. Nel primo caso, deniamo

1
=
def

Chiaramente,
1
contiene tutte le ipotesi del sottoalbero

Quindi, per ipotesi induttiva


1
. Ma sappiamo che V soddisfa ogni
formula in
1
e quindi V() = 1, una contraddizione. La dimostrazione nel
secondo caso, in cui V(
2
) = 1, `e analoga.
Se lultima regola applicata `e leliminazione del falso, lalbero ha la forma

Ipotesi induttiva. Se contiene tutte le ipotesi del sottoalbero con conclu-


sione , allora .
Tesi. Se contiene tutte le ipotesi dellalbero con conclusione , allora
.
20
Dimostrazione della tesi. Si supponga che contiene tutte le ipotesi dellal-
bero con conclusione . Per assurdo, si supponga che = . Allora esiste
una valutazione V che soddisfa tutte le formule in , ma tale che V() = 0.
Visto che contiene anche tutte le ipotesi del sottoalbero con conclusione
, per ipotesi induttiva vale che . Ne segue che V() = 1, una
contraddizione.
Se lultima regola applicata `e quella per dimostrazioni per assurdo, lal-
bero ha la forma
[]
n

RAA
n

Ipotesi induttiva. Se contiene tutte le ipotesi dellalbero

()
allora .
Tesi. Se

contiene tutte le ipotesi dellalbero con conclusione , allora

.
Dimostrazione della tesi. Supponiamo che

contenga tutte le ipotesi del-


lalbero con conclusione . Per assurdo, supponiamo che

= . Allora,
esiste una valutazione V che soddisfa tutte le formule in

, ma tale che
V() = 0. Quindi, V() = 1. Deniamo allora
=
def

.
`
E chiaro che contiene le ipotesi dellalbero in () e che V soddisfa le formule
in . Per lipotesi induttiva, abbiamo V() = 1, una contraddizione.
La dimostrazione del teorema di validit`a `e completa.
Corollario 1.4.3. Se `e un teorema, allora `e una tautologia.
Dimostrazione. Caso speciale del teorema di validit`a, con =
21
1.5 Il teorema di completezza
Proposizione/Denizione 1.5.1. Sia un insieme di formule. Le se-
guenti condizioni sono equivalenti.
(i) Esiste una formula tale che e .
(ii) .
(iii) Per ogni formula , si ha che .
Se soddisfa queste condizioni, diremo che `e contraddittorio. Se non `e
contraddittorio, lo chiameremo coerente.
Dimostrazione. Esercizio.
Lemma 1.5.2. Sia un insieme di formule e una formula.
(i) Se `e contraddittorio, allora .
(ii) Se `e contraddittorio, allora .
Dimostrazione.
(i) Se `e contraddittorio, allora esiste un albero di derivazione

con ipotesi contenute in . Quindi, possiamo estendere lalbero


di derivazione con unapplicazione della legge per le dimostrazioni per
assurdo:
[]
n

RAA
n

Quindi .
(ii) Se `e contraddittorio, allora esiste una derivazione

22
Possiamo quindi estendere questo albero con unapplicazione della leg-
ge per lintroduzione dellimplicazione:
[]
n


I,n

Quindi .
Denizione 1.5.3. Un insieme coerente massimale `e un insieme di formule
che `e coerente e tale che, per ogni insieme coerente

, se

allora
=

.
Lemma 1.5.4. Sia un insieme coerente massimale e una formula.
Se allora .
Dimostrazione. Si supponga che . Per assurdo, si supponga che / .
Visto che `e coerente massimale, non pu`o essere coerente, ed `e
quindi contraddittorio. Da questo segue che . Abbiamo quindi che
e , ovvero che `e contraddittorio, un assurdo.
Lemma 1.5.5. Sia un insieme coerente massimale e una formula.
(i) oppure .
(ii) se e solo se / .
Dimostrazione.
(i) Deniamo

=
def
. Se

`e contraddittorio, allora . Da
questo segue che . Se invece

`e coerente, allora deve valere


che

= , per la massimalita di , da cui segue che .


(ii) Se , allora non `e possibile che , visto che in quel caso
sarebbe contraddittorio. Se / , allora deve valere che .
Infatti, se non valesse avremmo una contraddizione con lenunciato in
(i).
Lemma 1.5.6. Sia un insieme coerente massimale. Per ogni e , le
seguenti asserzioni sono equivalenti.
(i) ( ) .
23
(ii) Se allora .
Dimostrazione.
(i) (ii). Supponiamo ( ) e . Ma allora e
, da cui segue . Visto che `e un insieme coerente massimale,
possiamo dedurre che , come volevasi dimostrare.
(ii) (i). Supponiamo che se allora . Distinguiamo due casi:
se , allora per lipotesi vale che , da cui segue ( ) . Se
invece / , allora . Da questo segue . Ma allora vale che
e quindi vale che ( ) .
Lemma 1.5.7. Per ogni insieme coerente esiste un insieme coerente
massimale

che contiene .
Dimostrazione. Visto che linsieme delle formule atomiche `e al pi` u numerabi-
le, anche linsieme di tutte le formule lo `e. Fissiamo quindi unenumerazione
delle formule

0
,
1
, . . . ,
n
,
n+1
, . . .
Deniamo una famiglia di insiemi di formule (
n
[ n N) nel modo seguente:

0
=
def

n+1
=
def
_

n

n+1
, se
n

n+1
`e coerente.

n
, altrimenti.
Si noti che
n
`e coerente per ogni n N. Ora deniamo

=
def

nN

n
.
Chiaramente,

. Per dimostrare che

`e coerente, procediamo per


assurdo. Supponiamo che

. Allora, esiste un albero di derivazione


con ipotesi non scaricate
1
, . . . ,
m

e conclusione . Per 1 i m,
esiste n
i
N tale che
i

m
i
. Deniamo n =
def
max(n
i
[ 1 i m). Da
questo segue che
1
, . . . ,
m

n
e quindi che
n
, una contraddizione.
Inne, dimostriamo che

`e un insieme coerente massimale. Sia un


insieme coerente e tale che

. Dimostriamo che

. Sia .
Dallesistenza di una enumerazione di tutte le formule, segue che esiste n N
tale che =
n
. Visto che
n

e che `e coerente, abbiamo che

n
`e coerente. Quindi
n+1
=
n

n
, da cui segue che
n

.
Lemma 1.5.8 (Lemma di Esistenza di Valutazioni). Sia un insieme di
formule. Se `e coerente allora esiste una valutazione che soddisfa ogni
formula in .
24
Dimostrazione. Supponiamo che sia coerente. Sappiamo che esiste un
insieme massimamente consistente

tale che

. La dimostrazione
si conclude in tre passi. Per il primo passo, deniamo una valutazione v
ssando
V (p) =
def
_
1 se p

,
0 altrimenti.
Per il secondo passo, dimostriamo per induzione che, per ogni formula ,
vale V () = 1 se e solo se

.
Caso base. Per le formula atomiche p P, vale che V (p) = 1 se e solo se
p

per denizione di V .
Primo caso induttivo. Date formule e , dobbiamo dimostrare che V (
) = 1 se e solo se V () = 1 e V () = 1. Per ipotesi induttiva, questo vale
se e solo se

. Ma questo vale se e solo se

.
Secondo caso induttivo. Date formule e , dobbiamo dimostrare che V (
) = 1 se e solo se

. Abbiamo che V ( ) = 1 se e solo se


V () = 1 oV () = 1, il che vale se e solo se

, per ipotesi
induttiva. Rimane quindi da dimostrare che

se e solo se

. Ma questo segue dal primo caso induttivo, utilizzando il fatto che


( ) `e un teorema.
Terzo caso induttivo. Date formule e , dobbiamo dimostrare che V (
) = 0 se e solo se ( ) /

. Si ha che V ( ) = 0 se e solo se
V () = 1 e V () = 0. Per ipotesi induttiva, questo vale se e solo se

e /

. Ma questo vale se e solo se ( ) /

.
Per il terzo e ultimo passo, dimostriamo che V soddisfa tutte le formule
in . Avendo dimostrato che V () = 1 se e solo se

, dal fatto che


segue che V () = 1 per ogni , come volevasi dimostrare.


Teorema 1.5.9 (Teorema di Completezza). Se allora .
Dimostrazione. Dimostriamo che se - allora = . Supponiamo che
- . Da questo segue che `e coerente. Per il Lemma di Esistenza
di Valutazioni, esiste una valutazione v che soddisfa tutte le formule in
ma che non soddisfa . Questo implica che = .
25
Capitolo 2
Logica del primo ordine
2.1 Linguaggi del primo ordine
Denizione 2.1.1. Un linguaggio del primo ordine L consiste dei seguenti
dati:
un insieme di variabili (x, y, z, . . .), Var
L
un insieme di costanti (a , b , c . . .)
per ogni n N, un insieme di simboli di predicato n-ario (P, Q, R,
. . . )
per ogni n N, un insieme di simboli di funzione n-aria (f, g, h, . . .).
Dora in poi considereremo un linguaggio del primo ordine L ssato e fare-
mo lassunzione che L sia numerabile, ovvero che ciascuno degli insiemi di
variabili, costanti, simboli di funzioni e simboli di predicato sia numerabi-
le. Linsieme dei termini di L `e denito come il pi u piccolo insieme X che
soddisfa le propriet`a seguenti.
Se x `e una variabile di L, allora x X,
Se a `e una costante di L, allora a X,
Se t
1
, . . . , t
n
X e f `e un simbolo di funzione n-aria, allora f(t
1
, . . . , t
n
) X.
Linsieme delle formule di L `e il pi u piccolo insieme X che soddisfa le
propriet`a seguenti.
, X,
26
Se P `e un simbolo per predicato n-ario e t
1
, . . . , t
n
sono termini,
allora P(t
1
, . . . , t
n
) X,
Se t
1
e t
2
sono termini, allora (t
1
= t
2
) X
Se , X, allora ( ), ( ), ( ) X,
se X e x `e una variabile, allora (x) X e (x) X.
Non enunceremo i principi di induzione e di ricorsione associate allinsieme
dei termini e dellinsieme delle formule, ma li utilizzeremo in modo analogo
a quanto fatto nel caso della logica proposizionale.
Sia t un termine di L. Linsieme FV(t) delle variabili libere di t `e denito
ricorsivamente tramite le clausole seguenti.
FV(x) = x, se x `e una variabile.
FV(a) = , se a `e una costante.
FV(f(t
1
, . . . , t
n
)) = FV(t
1
). . . FV(t
n
), se f `e un simbolo per funzione
n-aria e t
1
, . . . , t
n
sono termini.
Sia una formula di L. Linsieme FV() delle variabili libere di `e denito
ricorsivamente tramite le clausole seguenti.
FV() = FV() = .
FV(P(t
1
, . . . , t
n
)) = FV(t
1
) . . . FV(t
n
).
FV(t
1
= t
2
) = FV(t
1
) FV(t
2
).
FV( ) = FV() FV(), ove , , .
FV
_
(x)
_
= FV() x e FV
_
(x)
_
= FV() x.
Diremo che una formula `e chiusa se FV() = .
Denizione 2.1.2. Sia L un linguaggio del primo ordine. Una teoria del
primo ordine in L `e un insieme di formule chiuse di L, dette gli assiomi della
teoria.
Esempio 2.1.3. Il linguaggio dellaritmetica di Peano contiene, oltre a varia-
bili, una costante 0 (zero), due simboli per funzioni binarie + e (addizio-
ne e moltiplicazione), e un simbolo di funzione unaria S (successore). Per
esempio, abbiamo termini
0 + S(0) , S(S(0)) , S(0) S(S(0)) , x +y ,
27
e formule
x = S(0) , S(S(0)) + 0 = 0 , (x)(x + 0 = y) .
Gli assiomi di PA sono i seguenti:
(x)(Sx ,= 0) ,
(x)(y)
_
Sx = Sy x = y
_
,
(x)
_
x + 0 = x
_
,
(x)(y)
_
x +Sy = S(x +y)
_
,
(x)
_
x 0 = 0
_
,
(x)(y)
_
x Sy = x y +x
_
,
(0) (x)
_
(x) (Sx)
_
(x)(x) .
Lultimo assioma `e in realt`a uno schema, ovvero una famiglia innita di
assiomi, uno per ogni formula (x) del linguaggio di PA.
Esempio 2.1.4. Il linguaggio della teoria degli insiemi di Zermelo-Fraenkel
contiene solo variabili e un simbolo per un predicato binario (appartenza).
Le espressioni
(x)(y)(y x ) , x y x z x u
sono formule. Gli assiomi della teoria degli insiemi di Zermelo-Fraenkel
saranno presentati nel Capitolo 3. Diamo solo un esempio, lassioma della
coppia:
(x
1
)(x
2
)(u)(x)
_
x u x = x
1
x = x
2
_
.
Esempio 2.1.5. Il linguaggio della teoria dei gruppi contiene, oltre a va-
riabili, una costante 1 (elemento neutro), un simbolo per funzione bina-
ria (moltiplicazione) e un simbolo di funzione unaria ( )
1
(inverso). Le
espressioni
1 (x y) , x
1
x, (x y) x
1
.
sono termini, mentre le espressioni
x 1 = y , (x)(y)(x y = y x)
sono formule. Gli assiomi della teoria dei gruppi sono i seguenti:
(x)(y)(z)
_
x (y z) = (x y) z
_
,
(x)
_
(x 1 = x) (1 x = x)
_
,
(x)
_
(x x
1
= 1) (x
1
x = 1)
_
.
28
Esempio 2.1.6. Il linguaggio degli ordini parziali contiene oltre a variabili,
solo un simbolo di predicato binario, . La teoria degli ordini parziali `e data
dai seguenti assiomi:
(x)(x x)
(x)(y)(z)(x y y z x z) ,
(x)(y)(x y y x x = y) .
Si noti che nel linguaggio degli ordini parziali possiamo denire le seguenti
formule:
x < y =
def
x y x ,= y ,
x > y =
def
y < x,
x y =
def
y x,
x y z =
def
x y y z .
2.2 Il calcolo della deduzione naturale
Introduciamo adesso il calcolo di deduzione naturale per la logica del primo
ordine. Avremo regole per luguaglianza, regole per i connettivi proposizio-
nali, e regole per i quanticatori. Le regole per i connettivi proposizionali
sono le stesse della regole introdotte per la logica proposizionale e quindi non
le ripeteremo. Per le regole per i quanticatori, come nel caso della logica
proposizionale daremo, per ciascun quanticatore, regole di introduzione e
regole di eliminazione. Come vedremo, le regole di deduzione naturale per i
quanticatori coinvolgono anche condizioni che ne restringono lapplicazione.
Regole per luguaglianza. Ci sono cinque regole. Le prime tre regole
esprimono che luguaglianza `e una relazione simmetrica, riessiva e transi-
tiva:
x = x
x = y
y = x
x = y y = z
x = z
Le ultime due regole determinano il comportamento delluguaglianza rispet-
to alla sostituzione:
x
1
= y
1
x
n
= y
n
t(x
1
, . . . , x
n
) = t(y
1
, . . . , y
n
)
x
1
= y
1
x
n
= y
n
(x
1
, . . . , x
n
)
(y
1
, . . . , y
n
)
29
Regole per il quanticatore universale. La regola di introduzione `e
(x)

I
x(x)
Questa regola `e soggetta alla condizione che la variabile x non sia una delle
variabili libere delle ipotesi non scaricate nel sottoalbero con conclusione
(x). La regola di eliminazione per il quanticatore universale `e
x(x)

E
(t)
Questa regola `e soggetta alla condizione che il termine t sia sostituibile per
x in (x). Deniremo precisamente che cosa vuol dire che un termine t `e so-
situibile per una variabile x in una formula (x) pi u avanti. Informalmente,
questa condizione garantisce che nessuna delle variabili libere che compaio-
no in t venga legata (ovvero resa non libera) da uno dei quanticatori che
compaiono in (x). Per il momento, ci baster`a sapere che x `e sempre sosti-
tuibile per x in (x), cosicch`e la seguente istanza della regola
E
`e sempre
corretta:
x(x)

E
(x)
()
Esempio 2.2.1. Diamo due esempi di applicazioni corrette delle regole.
(i) Costruiamo un albero di derivazione la cui unica ipotesi non scaricata
`e xy(x, y) e la cui conclusione `e yx(x, y). Lalbero `e costruito
come segue:
xy(x, y)

E
y(x, y)

E
(x, y)

I
x(x, y)

I
yx(x, y)
Si noti come le applicazioni della regola
I
soddisfano la condizione
necessaria per la loro applicazione, visto che le variabili x e y non
compaiono come variabili libere nellipotesi non scaricata dellalbero.
La regola
E
`e stata poi applicata solo nel caso speciale indicato in ().
(ii) Costruiamo un albero con conclusione la formula x(x) x(x) e la
cui unica ipotesi non scaricata `e la formula x((x) (x)). Lalbero
`e costruito come segue:
30
x((x) (x))

E
(x) (x)

E
(x)

I
x(x)
x((x) (x))

E
(x) (x)

E
(x)

I
x(x)

I
x(x) x(x)
Esempio 2.2.2. Diamo due esempi di applicazioni scorrette delle regole.
(i) Nel linguaggio dellaritmetica di Peano, lapplicazione
x = 0
x(x = 0)
della regola
I
non `e corretta, in quanto la variabile x compare come
variabile libera nella formula x = 0, che non `e scaricata.
(ii) Lapplicazione
xy(x = y)
y(y = y)
della regola
E
non `e corretta. Abbiamo applicato la regola
E
con
la formula y(x = y) al posto della formula (x) e y al posto del
termine t. Secondo la denzione che daremo pi u avanti, tuttavia, y
non `e sostituibile per x in y(x = y). Informalmente, questo avviene
perch`e la variabile y appare tra le variabili quanticate di y(x = y)
e quindi se sostituiamo y per x in questa formula otteniamo che y viene
legata dal quanticatore y. Anche se non abbiamo introdotto ancora
la nozione di validit`a di una formula, anticipiamo che lipotesi non
scaricata dellalbero `e valida in ogni struttura con almeno due elementi
distinti, mentre la conclusione non `e valida in una tale struttura.
Regole per il quanticatore esistenziale. La regola di introduzione `e
(t)

I
x(x)
Questa regola `e soggetta alla condizione che il termine t sia sostituibile per
x in (x). La regola di eliminazione `e
x(x)
[(x)]

E,

31
Questa regola `e soggetta alla condizione che la variabile x non sia una delle
variabili libere n`e di n`e delle ipotesi non scaricate nel sottoalbero con
conclusione tranne (x).
Esempio 2.2.3. Costruiamo un albero con conclusione x(x) x(x) e
con unica ipotesi non scaricata x((x) (x)). Lalbero `e il seguente:
x((x) (x))
[(x) (x)]
3
[(x)]
1
x(x)
x(x) x(x)
[(x)]
2
x(x)
x(x) x(x)

E,1,2
x(x) x(x)

E,3
x(x) x(x)
Si noti che lapplicazione della regola
E
`e corretta in quanto le ipotesi
(x) e (x) che potrebbero contenere la x tra le loro variabili libere sono
state scaricate nellapplicazione della regola
E
, e quindi non sono pi u tra
le ipotesi non scaricate del sottoalbero con conclusione x(x) x(x).
Le nozioni di albero di derivazione, di derivabilit`a di una formula da un
insieme di formule e di teorema sono denite come per la logica proposizio-
nale. Useremo notazione identica a quella introdotta precedentemente. In
particolare, scriveremo per indicare che esiste un albero di derivazione
con conclusione e le cui ipotesi non scaricate sono contenute in .
Come promesso, deniamo che cosa vuol dire che un termine t `e sostituibile
per una variabile x in una formula . Per ricorsione su , deniamo:
t `e sempre sostituibile per x in P(t
1
, . . . , t
n
).
t `e sostituibile per x in , ove , , , se t `e sostituibile per
x in e .
t `e sostituibile per x in y e y se vale almeno una delle seguenti
due possibilit`a:
x non compare come variabile libera in (y) e y.
y non compare come variabile libera in t e t `e sostuibile per x in
.
32
2.3 Strutture e modelli
Denizione 2.3.1. Sia L un linguaggio del primo ordine. Una struttura
per L consiste dei seguenti dati.
Un insieme non vuoto /, detto il dominio della struttura.
Una funzione che assegna ad ogni costante a di L un elemento a /.
Una funzione che assegna ad ogni simbolo di funzione n-ario f di L
una funzione
f : /. . . /
. .
n volte
/
Una funzione che assegna ad ogni simbolo di predicato n-ario P di L
un sottoinsieme
P /. . . /
. .
n volte
.
Denizione 2.3.2. Sia L un linguaggio del primo ordine e /una struttura
per L. Unassegnazione per le variabili di L in /`e una funzione : Var
L

/.
Notazione 2.3.3.
`
E utile introdurre la seguente notazione per modicare il
valore di una assegnazione su di una variabile. Sia : Var
L
/ una
assegnazione. Dati x Var
L
e m /, deniamo la valutazione [x m] :
Var
L
/ nel modo seguente. Il valore di questa valutazione su x `e m,
ovvero:
[x m](x) =
def
m,
mentre il valore su di ogni altra variabile y `e lo stesso di , ovvero:
[x m](y) =
def
(y) .
Fissiamo ora una struttura /per L ed unassegnazione : Var
L
/. Da-
to un termine t di L, deniamo lelemento t

/, detto linterpretazione
di t in / relativa ad , tramite la seguente denizione ricorsiva:
x

=
def
(x)
a

=
def
a
f(t
1
, . . . , t
n
)

=
def
f
_
t
1

, . . . , t
n

_
33
Usando questa denizione, deniamo il valore di verit` a di una formula
di L in / relativo ad tramite la seguente denizione ricorsiva:
P(t
1
, . . . , t
n
)

=
def
_
1 se
_
t
1

, . . . , t
n

_
P
0 altrimenti
t
1
= t
2
=
def
_
1 se t
1

= t
2

0 altrimenti

=
def
_
1 se

= 1 e

= 1
0 altrimenti

=
def
_
1 se

= 1 o

= 1
0 altrimenti

=
def
_
0 se

= 1 e

= 0
1 altrimenti
x(x)

=
def
_
1 se per ogni d / vale che (x)
[xd]
= 1 ,
0 altrimenti.
x(x)

=
def
_
1 se esiste d / tale che (x)
[xd]
= 1 ,
0 altrimenti.
Diremo che (/, ) soddisfa una formula se vale che

= 1. Si noti che
se `e una formula chiusa il suo valore di verit`a non dipende dallassegna-
zione . In questo caso, scriveremo semplicemente anziche

. Se T
una teoria del primo ordine in L, un modello di T `e una struttura / per L
che soddisfa tutti gli assiomi di T.
Denizione 2.3.4.
Sia un insieme di formule e sia una formula. Diremo che implica
semanticamente se ogni coppia (/, ) che soddisfa tutte le formule
in soddisfa anche . Scriveremo per indicare che implica
semanticamente .
Sia una formula. Diremo che `e una tautologia se ogni coppia
(/, ) soddisfa . Scriveremo per indicare che `e una tautologia.
34
2.4 Il teorema di validit`a
Lemma 2.4.1 (Lemma di Sostituzione). Sia L un linguaggio del primo
ordine. Siano (x) una formula e t un termine di L. Per ogni coppia
(/, ), vale che
(x)
[xt

]
= (t)

.
Traccia della dimostrazione. Consideriamo solo un caso particolare. Per
esempio, si ha
x = y
[xt

]
= t = y

.
Infatti il valore di verit`a sulla sinistra `e 1 se e solo se vale che
x
[xt

]
= y
[xt

]
.
Questo vale se e solo se t

= y

, e questultima asserzione vale se e solo


se t = y

= 1.
Nella dimostrazione del teorema di validit`a, assumeremo che se x(x)
allora la variabile x non compare tra le variabili libere di . Infatti, anche
quando questa assunzione non `e vericata `e sempre possibile cambiare no-
me alle variabili senza modicare il senso dellasserzione. Per esempio, si
consideri
x(P(x) Q(x)) , xP(x) , R(x) xQ(x) . ()
In questo caso, x FV() in quanto x FV(R(x)). Tuttavia, lasserzione
in () `e chiaramente equivalente a
y(P(y) Q(y)) , yP(y) , R(x) yQ(y) .
E adesso abbiamo che y / FV(), come volevasi.
Teorema 2.4.2 (Teorema di Validit`a). Se allora [= .
Dimostrazione. Si ricordi che signica che esiste un albero di deriva-
zione il cui insieme di ipotesi non scaricate `e contenuto in e con conclu-
sione . Per dimostrare il teorema di validit`a procederemo per induzione
sullaltezza di questalbero, distinguendo diversi casi a seconda di quale sia
lultima regola applicata. Tutti i casi riguardanti i connettivi della logica
proposizionale sono trattati in maniera completamente analoga a quanto fat-
to nella dimostrazione del teorema di validit`a per la logica proposizionale.
Si tratta quindi di considerare solo i casi in cui lultima regola applicata sia
35
una delle regole per luguaglianza oppure una delle regole per i quantica-
tori. Il caso delle regole per luguaglianza `e omesso, in quanto la verica `e
immmediata.
Caso dellintroduzione del . Se lultima regola applicata `e lintroduzione di
un quanticatore universale, la derivazione ha la forma:

(x)
x(x)
Ipotesi induttiva. Se contiene le ipotesi del sottoalbero con conclusione
(x), allora [= (x).
Tesi. Se contiene le ipotesi dellalbero con conclusione x(x), allora
[= x(x).
Dimostrazione della tesi. Sia come nella tesi. Salvo cambiare variabili,
possiamo supporre che x non compaia tra le variabili libere di . Dallipotesi
induttiva (che possiamo applicare visto che lalbero e il sottoalbero hanno
lo stesso insieme di ipotesi non scaricate), segue che [= (x). Dobbiamo
dimostrare che [= x(x). Sia quindi (/, ) una coppia che soddisfa
tutte le formule in . Dobbiamo dimostrare che
x(x)

= 1 .
Questo vale se e solo se per ogni d / si ha che
(x)
[xd]
= 1
Visto che x non compare in , si ha che la coppia (/, [x d]) soddisfa
tutte le formule in . Dal fatto che [= (x), segue che
(x)
[xd]
= 1
come volevasi dimostrare.
Caso delleliminazione del . Se lultima regola applicata `e uneliminazione
del quanticatore universale, la derivazione ha la forma:

x(x)
(t)
36
Ipotesi induttiva. Se contiene le ipotesi non scaricate del sottoalbero con
conclusione x(x), allora [= x(x).
Tesi. Se contiene le ipotesi dellalbero con conclusione (t) allora [=
(t).
Dimostrazione della tesi. Sia come nella tesi. Applicando lipotesi indut-
tiva, si ha che [= x(x). Dobbiamo dimostrare che [= (t). Sia quindi
(/, ) una coppia che soddisfa tutte le formule in . Dobbiamo dimostrare
che
(t)

= 1
Da [= x(x) segue che per ogni d / si ha
(x)
[xd]
= 1
In particolare, considerando d = t

, si ha che
(x)
[xt

]
= 1
Applicando il Lemma di Sostituzione, abbiamo che
(t)

= (x)
[xt

]
= 1
come volevasi dimostrare.
Caso dellintroduzione del . Se lultima regola applicata `e lintroduzione
del quanticatore esistenziale, la derivazione ha la forma:

(t)
x(x)
Ipotesi induttiva. Se contiene tutte le ipotesi del sottoalbero con conclu-
sione (t), allora [= (t).
Tesi. Se contiene tutte le ipotesi del sottoalbero con conclusione x(x),
allora [= x(x).
Dimostrazione della tesi. Sia come nella tesi. Applicando lipotesi indut-
tiva, si ha che [= (t). Dobbiamo dimostrare che [= x(x). Sia (/, )
una coppia che soddisfa tutte le formule in . Quindi vale che
(t)

= 1 .
37
Dobbiamo dimostrare che
x(x)

= 1
Questo vale se e solo se esiste d / tale che
(x)
[xd]
= 1
Consideriamo d = t

. Applicando il Lemma di Sostituzione, abbiamo che


(x)
[xt

]
= (t)

= 1
come volevasi dimostrare.
Caso delleliminazione del . Se lultima regola applicata `e leliminazione
del quanticatore esistenziale, la derivazione ha la forma:

x(x)
[(x)]

E,

Ipotesi induttive. Abbiamo due ipotesi induttive, corrispondenti ai due


sottoalberi nelle premesse della regola.
Se contiene tutte le ipotesi del sottoalbero con conclusione x(x),
allora [= x(x).
Se

contiene le ipotesi del sottoalbero


(x)

allora

[= .
Tesi. Se contiene le ipotesi del sottoalbero con conclusione , allora [= .
Dimostrazione della tesi. Sia come nella tesi. Salvo cambiare variabili,
possiamo supporre che x non compaia in . Dobbiamo dimostrare che [=
. Sia (/, ) una coppia che soddisfa tutte le formule in . Per la prima
ipotesi induttiva, vale che [= x(x). Quindi, si ha che
x(x)

= 1
38
Questo vuol dire che esiste d / tale che
(x)
[xd]
= 1
Sia

=
def
(x). Chiaramente, vale che (/, [x d]) soddisfa tutte
le formule in

, visto che x non compare in e (x)


[xd]
= 1, come
abbiamo appena visto. Da questo e dal fatto che

[= , che vale per la


seconda ipotesi induttiva, segue che

[xd]
= 1
Ma x non compare tra le variabili libere di e quindi

=
[xd]
= 1
come volevasi dimostrare.
La dimostrazione del teorema di validita `e completa.
2.5 Il teorema di completezza
Teorema 2.5.1 (Teorema di Completezza). Sia un insieme di formule,
una formula. Se [= allora .
La dimostrazione del teorema di completezza per la logica del primo ordi-
ne non `e in programma, ma ne discutiamo qualche aspetto. Il passaggio
fondamentale consiste nel dimostrare il Lemma di Esistenza dei Modelli,
che `e lanalogo per la logica del primo ordine del Lemma di Esistenza di
Valutazioni per la logica proposizionale.
Lemma 2.5.2 (Lemma di Esistenza dei Modelli). Sia un insieme di for-
mule. Se `e coerente, allora ha un modello, ovvero esiste una coppia
(/, ) che soddisfa tutte le formule in .
Lidea alla base della dimostrazione del Lemma di Esistenza dei Modelli `e
di costruire il modello richiesto a partire dal linguaggio L. A tal ne, si
potrebbe ssare
/ =
def
t [ t termine di L
e denire : Var
L
/ ponendo (x) =
def
x. Ci sono due problemi da
risolvere. Come primo problema, dobbiamo decidere come assegnare valori
di verit`a alle formule di L, in modo da rendere valida ogni formula di .
Come secondo problema, dobbiamo essere sicuri che se x(x) allora la
struttura /contiene un elemento d /, ovvero un termine del linguaggio,
39
tale che (x)
[xd]
= 1. Per risolvere il primo problema, `e suciente
considerare, come nel caso della logica proposizionale, insiemi massimamente
consistenti che contengano . Per risolvere il secondo problema, invece, `e
necessario estendere il linguaggio con nuove costanti, in modo da garantire
lesistenza di termini che siano dei testimoni per le asserzioni esistenziali
derivabili da . Questo secondo problema viene risolto tramite il metodo
delle cosiddette teorie di Henkin, che non tratteremo. Per questo argomento,
si veda [3, 4, 7]. Discutiamo invece qualche applicazione del Teorema di
Completezza.
Teorema 2.5.3 (Teorema di Compattezza). Sia T una teoria del primo
ordine. Allora T ha un modello se e solo se ogni sottoinsieme nito T

T
ha un modello.
Dimostrazione. Sia T come nellenunciato. Dimostreremo il seguente enun-
ciato, equivalente a quello desiderato: T non ha nessun modello se e solo
se esiste un sottoinsieme nito T

T che non ha nessun modello. Suppo-


niamo che T non abbia nessun modello. Allora, T non pu`o essere coerente.
Infatti, se lo fosse, avrebbe un modello per il Lemma di Esistenza di Modelli.
Quindi T . Ma allora esiste un insieme nito T

T tale che T

.
Questo perch`e ogni derivazione ha un numero nito di premesse non scarica-
te. Dal fatto che T

segue che T

non ha nessun modello, come volevasi


dimostrare. Supponiamo adesso che esista un sottoinsieme T

T che non
ha nessun modello. Allora `e impossibile che esista un modello di T. Infatti,
se esistesse, questo sarebbe anche un modello di T

, essendo T

T.
Teorema 2.5.4 (Teorema di Lowenhein-Skolem Downward). Sia T una
teoria del primo ordine. Se T ha un modello innito, allora T ha un modello
di cardinalita numerabile.
Traccia della dimostrazione. Il modello di T `e costruito a partire dallinsie-
me dei termini del linguaggio L, che abbiamo assunto essere numerabile,
tramite operazioni che preservano la numerabilit`a dellinsieme. Per esem-
pio, se aggiungiamo al linguaggio costanti c

per ogni formula chiusa della


forma x(x), il linguaggio rimane numerabile, in quanto le formule della
forma x(x) sono anchesse numerabili.
Teorema 2.5.5 (Teorema di Lowenheim-Skolem Upward). Sia T un teo-
ria del primo ordine. Se T ha un modello innito, allora T ha modelli di
cardinalit`a arbitrariamente grande.
40
Dimostrazione. Sia I un insieme innito. Vogliamo costruire un modello di
T di cardinalit`a almeno [I[. A questo ne, deniamo L

come lestensione
del linguaggio L con una nuova costante c
i
per ogni i I. Sia adesso
T

= T c
i
,= c
j
[ i, j I, i ,= j
Adesso dimostriamo che T

ha un modello di cardinalit`a almeno [I[. Si


osservi che ogni sottoinsieme nito di T

ha un modello, visto che T ha un


modello innito, e quindi `e sempre possibile trovare elementi distinti del
modello per una quantit`a nita delle costanti c
i
, in modo quindi da rendere
valide le formule c
i
,= c
j
. Unapplicazione del teorema di compattezza ci
permette di concludere che T

ha un modello. Questo modello deve avere


almeno cardinalit`a [I[, visto che deve contenere elementi distinti c
i
per
ogni i I.
Esempio 2.5.6. Gli assiomi della teoria dellaritmetica del primo ordine han-
no un modello innito, dato dallinsieme N con la ovvia struttura. Per il
teorema di Lowenheim-Skolem Upward, si cha che esistono modelli della-
ritmetica arbitrariamente grandi, i cosiddetti modelli non-standard.
41
Capitolo 3
Teoria degli Insiemi
3.1 Gli assiomi di ZF
La teoria degli insiemi di Zermelo-Fraenkel (ZF) `e una teoria del primo ordi-
ne nel linguaggio che contiene, oltre a variabili, il solo simbolo di predicato
binario , detto appartenenza. Il linguaggio non contiene ne costanti ne
simboli di funzione. Per semplicare la scrittura degli assiomi, utilizzeremo
sia a, b, c, . . . che x, y, z, . . . come variabili. Come al solito, deniamo
a b =
def
(x)(x a x b) .
Elenchiamo gli assiomi di ZF, dando una breve spiegazione informale per
ciascuno di essi. Lassiomatizzazione di ZF che presentiamo non `e mini-
male, nel senso che `e possibile derivare alcuni assiomi da altri, ma facilita
lesposizione.
1. Assioma di estensionalit`a.
(a)(b)
_
a = b (x)(x a x b)
_
.
In base a questo assioma, due insiemi sono uguali se e solo se hanno
gli stessi elementi.
2. Assioma dellinsieme vuoto.
(a)(x)
_
x a
_
Questo assioma dice che esiste un insieme a tale che
x
_
x a
_
.
42
Per lassioma di estensionalit`a, un tale insieme a `e unico. Possiamo
quindi introdurre un simbolo speciale per indicarlo. Come al solito,
utilizzeremo il simbolo .
3. Schema di separazione. Data una formula (x), abbiamo lassioma
(a)(b)(x)
_
x b x a (x)
_
.
Questo assioma dice che per ogni insieme a esiste un insieme b tale che
(x)
_
x b x a (x)
_
.
Come prima, un tale insieme `e necessariamente unico. Nel seguito,
sara indicato con la notazione x A [ (x).
4. Assioma della coppia.
(a)(b)(c)(x)
_
x c x = a x = b
_
.
Questo assioma dice che per ogni due insiemi a e b esiste un insieme c
tale che
x
_
x c x = a x = b
_
.
Un tale insieme c `e necessariamente unico, sempre per lassioma di
estensionalit`a. Lo indicheremo con la notazione a , b. Nel caso a = b,
scriveremo semplicemente a anziche a , a.
5. Assioma dellunione.
(a)(b)(y)
_
y b (x a)(y x)
_
.
Questo assioma dice che per ogni insieme a esiste un insieme b tale che
(y)
_
y b (x b)(y x)
_
.
Ancora una volta, un tale insieme b `e necessariamente unico e noi lo
indicheremo con

a. Dati due insiemi a e b, utilizzando lassioma della
coppia e lassioma dellunione, possiamo denire a b =
def

a , b.
6. Assioma delle parti.
(a)(b)(x)
_
x b x a
_
.
Questo assioma dice che per ogni insieme a esiste un insieme b tale che
(x)
_
x b x a
_
.
Anche in questo caso, un tale insieme b `e unico e noi lo indicheremo
con il simbolo T(a).
43
7. Assioma dellinnito.
a
_
a x(x a x x a)

.
Come vedremo, questo assioma implica lesistenza dellinsieme dei
numeri naturali.
8. Assioma di fondazione.
a
_
a ,= (m a)(x)(x m x / a)

.
La spiegazione di questo assioma richiede lintroduzione di alcune
nozioni ausiliarie e quindi la postponiamo temporaneamente.
9. Schema di Rimpiazzamento. Per ogni formula (x, y) abbiamo
lassioma
(a)
_
(x a)(!y)(x, y) (b)(x a)(!y b)(x, y)
_
.
Consideriamo una formula (x, y) ssata. Sia a un insieme e suppo-
niamo che valga
(x a)(!y)(x, y)
Dato x a, scriviamo F(x) per indicare lunico insieme y per cui
vale (x, y). Lassioma di rimpiazzamento ci permette, insieme al-
lassioma di separazione, di dimostrare che esiste un insieme b tale
che
(y)
_
y b (x a)(y = F(x))
_
.
Questo insieme b `e unico e lo indicheremo con F(x) [ x a.
Nel seguito, utlizzeremo spesso la notazione delle classi. Formalmente, una
classe `e una formula del linguaggio di ZF con una variabile libera. Rappre-
senteremo la classe data da una formula (x) con la notazione x [ (x).
Un elemento di una classe A = x [ (x) `e un insieme x per cui vale
(x). Nel seguito, scriveremo x A per indicare che x `e un elemento di A.
Due classi sono uguali se e solo se hanno gli stessi elementi. Un insieme a
pu`o essere sempre visto come una classe, ovvero la classe dei suoi elementi
x [ x a, ma il viceversa non vale sempre. Una classe A = x [ (x) `e
un insieme se e solo se esiste un insieme a che ha gli stessi elementi di A,
ovvero vale che x
_
x a (x)
_
.
44
Il cosiddetto paradosso di Russell `e losservazione che la classe di tutti gli
insiemi V =
def
x [ x = x non `e un insieme. Infatti, supponiamo che esista
un insieme a tale che
(x)(x a x = x) .
Per lassioma di separazione, possiamo denire b =
def
x a [ x / x.
Dalla denizione di a, segue che b = x [ x / x. Ma adesso abbiamo
b b b / b, una contraddizione. Una classe che non `e un insieme `e detta
una classe propria.
3.2 Codica in ZF e induzione insiemistica
Come esempio di come sia possibile codicare la pratica matematica allin-
terno di ZF, dimostriamo lesistenza dellinsieme N dei numeri naturali. Per
altri esempi, si veda [2]. Deniamo 0 =
def
. Dato un insieme x, deniamo
il successore di x come linsieme x + 1 =
def
x x. Dato un insieme a,
deniamo la formula
Ind(a) =
def
0 a (x)
_
x a x + 1 a
_
.
Un insieme a per cui vale Ind(a) verra detto induttivo. Vogliamo denire
linsieme dei numeri naturali come il pi u piccolo insieme induttivo. A questo
ne, deniamo la formula
Nat(x) =
def
(a)(Ind(a) x a
_
.
Proposizione 3.2.1.
(i) La classe N =
def
x [ Nat(x) `e un insieme.
(ii) Il principio di induzione per i numeri naturali,
_
(0) (x N)
_
(x) (x + 1)
_
(x N) (x) ,
`e un teorema di ZF.
Dimostrazione.
(i) Lassioma dellinnito ci dice che esiste un insieme induttivo a. Vo-
gliamo dimostrare che N = x a [ Nat(x), da cui segue quanto
richiesto. Lunica cosa da dimostrare `e che se vale Nat(x) allora x a.
Visto che a `e induttivo, vale (x)(Nat(x) x a), che implica quanto
desiderato.
45
(ii) Ragioneremo in maniera informale. Supponiamo (0) e (x N)((x)
(x + 1)). Deniamo
a =
def
x N [ (x)
Le ipotesi implicano che a `e induttivo. Quindi vale che (x)(Nat(x)
x a
_
. Da questo segue che (x N) (x), come volevasi dimostrare.
Ritorniamo a considerare lassioma di fondazione. Prima daremo una spie-
gazione della sua formulazione e poi una sua applicazione. Sia A un insieme.
Una relazione binaria < su A `e detta essere ben fondata se ogni sottoinsie-
me non vuoto S A ha un elemento <-minimale. Data una classe A e una
relazione binaria < su A, la ben fondatezza di < `e espressa dalla formula
(S A)
_
S ,= (m S)(x)(x < m x / S)
_
.
Lassioma di fondazione esprime esattamente che la relazione sulla clas-
se V =
def
x [ x = x `e ben fondata. Infatti, possiamo riscrivere lassioma
di fondazione equivalentemente come:
(S V )
_
S ,= (m S)(x)(x m x / S)
_
.
Illustriamo adesso come lassioma di fondazione permette di dedurre il co-
siddetto principio di induzione insiemistica, ovvero lo schema
(a)
_
(x a)(x) (a)

(a)(a) ,
ove (x) `e una formula arbitraria con una variabile libera x. A tal ne,
introduciamo la nozione di insieme transitivo.
Denizione 3.2.2. Un insieme a `e transitivo se vale che (x a)(x a).
Dato un insieme a, la chiusura transitiva di a `e il pi u piccolo insieme transi-
tivo che contiene a. Questo insieme, che indicheremo con TC(a), puo essere
denito esplicitamente come
TC(a) = a ,
_
a ,
__
a , . . . .
Proposizione 3.2.3. ZF Principio di Induzione Insiemistica.
Dimostrazione. Supponiamo che valga
(a)
_
(x a)(x) (a)

. (3.1)
46
Dobbiamo dimostrare che vale (a)(a). Per assurdo, si supponga che non
valga, e che quindi esista a tale che (a). Consideriamo adesso linsieme
b = x TC(a) [ (x) .
Visto che a TC(a) e (a), vale che a b e quindi b non `e vuoto.
Per lassioma di fondazione, deve avere un elemento -minimale, diciamo
m. Visto che m b, deve valere (m). Ma vale anche che
(x m)(m) ,
visto che gli elementi di m sono in TC(a) b. Ma allora, dallipotesi
in (3.1), segue (m), una contraddizione.
La dimostrazione appena svolta utilizza in maniera essenziale lassioma di
fondazione. Sulla base degli altri assiomi di ZF, infatti, lassioma di fonda-
zione `e equivalente al principio di induzione insiemistico.
3.3 Ordinali
Denizione 3.3.1. Sia A un insieme. Un buon ordine su A `e un ordine
parziale < rispetto al quale ogni sottoinsieme non vuoto di A ha un ele-
mento minimo. Un buon ordinamento `e una coppia (A, <) costituita da un
insieme A e un buon ordine <.
Esempi 3.3.2.
(N, <) `e un buon ordinamento.
Per ogni n N, linsieme 0, 1, . . . , n `e bene ordinato.
(Z, <) non `e un buon ordinamento, visto che x Z [ x < 0 non ha
un elemento minimo.
Se (A, <) `e un buon ordinamento, allora < `e un ordine totale. Infatti, dati
x, y A, il sottoinsieme x, y deve avere un elemento minimo. Inoltre, < `e
una relazione ben fondata. Infatti, dato un sottoinsieme non vuoto S A,
il minimo di S `e anche lunico elemento minimale di S.
Denizione 3.3.3. Un ordinale `e un insieme transitivo per cui la relazione
di appartenenza `e un buon ordine.
47
Una delle ragioni che motivano lintroduzione e lo studio degli ordinali `e
che essi rappresentano le classi di equivalenza di buoni ordini. Infatti, si
pu`o dimostrare che per ogni buon ordine (A, <) esiste un ordinale e un
isomorsmo di buoni ordinamenti f : (A, <) (, ). Questo signica che f
`e una funzione biiettiva tale che sia f che f
1
rispettano lordine, ovvero
per ogni x, y A, x < y se e solo se f(x) f(y). Per una dimostrazione di
questo fatto, che non `e parte del programma, si veda [2, 4].
Esempio 3.3.4. Si ricordi che i numeri naturali sono codicati in ZF indut-
tivamente nel modo seguente:
0 =
def

n + 1 =
def
n n .
Per esempio, abbiamo
1 = 0 , 2 = 1 1 , 3 = 2 2 , . . .
Da questo segue che 0 1 2 3 . . .. Ogni numero naturale, visto come
insieme, `e un ordinale. Per vericarlo, cominciamo con il dimostrare per
induzione che ogni numero naturale `e transitivo. Per il passo base, si osservi
che 0 =
def
`e trivialmente un ordinale. Per il passo induttivo, supponiamo
che n N sia un ordinale e dimostriamo che n + 1 =
def
n n `e un
ordinale. Innanzitutto, dimostriamo che n + 1 `e transitivo. Sia i n + 1 e
j i. Dobbiamo dimostrare che j n+1. Se i n+1, allora i n o i = n.
Nel primo caso, j n per la transitivit`a di n, da cui segue che j n + 1.
Nel secondo caso, j n + 1 visto che n n + 1. Rimane da dimostrare che
la relazione dappartenenza `e un buon ordine su ogni numero naturale. Ma
questo segue dal fatto che la relazione dappartenenza sui numeri naturali
coincide con la familiare relazione dordine.
Per lAssioma di Fondazione, per ogni insieme A, la restrizione della relazio-
ne di appartenza su A `e ben fondata. Utilizzando questo fatto, dimostre-
remo che, anch`e sia un buon ordinamento, `e suciente che la restrizione
di su A sia tricotoma. Per dimostrare questo fatto, consideriamo una
relazione ben fondata in generale.
Lemma 3.3.5. Sia A un insieme e < una relazione binaria su A.
(i) Se < `e ben fondata, allora `e irriessiva.
(ii) Se < `e ben fondata e tricotoma, allora `e transitiva.
Dimostrazione.
48
(i) Se < non fosse irriessiva, esisterebbe x A tale che x < x. Al-
lora il sottoinsieme x A non avrebbe un elemento minimale, in
contraddizione con la ben fondatezza di <.
(ii) Siano x, y, z A e supponiamo che x < y e y < z. Il sottoinsieme
x, y, z A, deve avere un elemento minimale. Questo elemento
minimo non pu`o essere n`e y n`e z, visto che x < y e y < z, e quindi
deve essere x. Per la tricotomia di <, deve valere x < z o x = z
o z < x. Ma non vale n`e x = z (altrimenti z sarebbe minimale) n`e
z < x (altrimenti x non sarebbe minimale). Quindi deve valere x < z,
come volevasi dimostrare.
Proposizione 3.3.6. Una relazione binaria < su di un insieme A `e un buon
ordine se e solo se < `e ben fondata e tricotoma.
Dimostrazione. Dimostriamo le due implicazioni separatamente. Supponia-
mo che < sia un buon ordine. Abbiamo gi`a visto che < `e ben fondata.
Inoltre, essere tricotoma `e parte della denizione di buon ordine. Viceversa,
supponiamo che < sia ben fondata e tricotoma. Dal Lemma 3.3.5, abbiamo
che < `e irriessiva e transitiva e quindi che `e antisimmetrica. Rimane da
dimostrare che ogni sottoinsieme non vuoto S A ha un elemento minimo,
ma questo segue dal fatto che in un ordine totale, un elemento minimale di
un sottoinsieme `e necessariamente il suo minimo.
In base alla Proposizione 3.3.6, un insieme `e un ordinale se e solo se `e
transitivo e la relazione di appartenenza su `e tricotoma, ovvero vale che
(x, y )(x y x = y y x) .
Utilizzeremo questo fatto per dimostrare una serie di risultati che ci permet-
tono di costruire nuovi esempi di ordinali.
Lemma 3.3.7. Se `e un ordinale, allora + 1 `e un ordinale.
Dimostrazione. Si ricordi che +1 = . Dimostriamo che `e transitivo.
Supponiamo che e . Se , allora per la
transitivit`a di , da cui segue + 1. Se invece = , si ha ancora che
e quindi, come prima, +1. La dimostrazione che la relazione
su + 1 `e tricotoma `e ugualmente facile.
Lemma 3.3.8. Gli elementi di un ordinale sono ordinali.
49
Dimostrazione. Sia un ordinale. Se , la transitivit`a di implica
che . Da questo segue che `e ben ordinato da . Per dimostrare
che `e transitivo, si consideri e . Visto che e , si
ha . Per la transitivit`a di , si ottiene quindi che . Dal fatto
che , possiamo concludere che . Visto che e e che
`e un ordinale, deve valere o o = o . Ma le ultime due
possibilit`a non possono valere, perch`e altrimenti il sottoinsieme , ,
non avrebbe un elemento minimo. Deve quindi valere che , come
volevasi dimostrare.
Lemma 3.3.9. Se e sono ordinali, o .
Dimostrazione. Supponiamo che _ . Allora non `e vuoto e quindi
ha un elemento -minimo, . Dimostriamo che = . Per uninclusione,
sia . Visto che `e un ordinale, abbiamo che o o = o
. Nei primi due casi, dovrebbe valere che , in contraddizione
con lipotesi che . Quindi, vale , come volevasi dimostrare.
Per laltra inclusione, sia . Visto che , dalla transitivit`a di
possiamo dedurre che . Ma / , visto che altrimenti avremmo
una contraddizione con la -minimalit`a di tra gli elementi di . Da
e / segue che e quindi , come volevasi
dimostrare. Dalle due inclusioni, segue che = . Visto che ,
abbiamo che . Abbiamo quindi dimostrato che se _ allora
. Analogamente, si pu`o dimostrare che se _ allora .
Quindi, se non valesse n`e n`e , avremmo che , in
contraddizione con lassioma di fondazione.
Corollario 3.3.10. Siano e ordinali.
(i) se e solo se o = .
(ii) o = o .
(iii) Se
i
[ i I `e un insieme non vuoto di ordinali, allora

iI

i
`e un
ordinale ed `e lelemento -minimo di
i
[ i I.
Dimostrazione.
(i) Se , allora = oppure _ . Nel caso valga _ , abbiamo
(come visto nella dimostrazione del Lemma 3.3.9). Ma
e quindi = , da cui segue .
(ii) Segue dal punto (i) e dal Lemma 3.3.9.
50
(iii) Innanzitutto, si osservi che

iI

i

j
per ogni j I. Per lassioma
di fondazione, linsieme
i
[ i I ha un elemento -minimale e
quindi esiste j I tale che
j
`e -minimale. Visto che la relazione di
appartenza tra ordinali `e tricotoma,
j
`e in eetti lelemento -minimo
di
i
[ i I. Essendo
j
il -minimo di
i
[ i I, dal punto (ii)
segue che
j

i
per ogni i I e quindi
j


iI

i
. Abbiamo
quindi che
j
=

iI

i
e quindi

iI

i
`e eettivamente lelemento
-minimo di
i
[ i I, come volevasi dimostrare.
Proposizione 3.3.11. Lunione di un insieme di ordinali `e un ordinale.
Dimostrazione. Lunione di un insieme di insiemi transitivi `e sempre un
insieme transitivo. Sia
i
[ i I un insieme di ordinali. Dobbiamo
dimostrare che

iI

i
`e un ordinale. Gli elementi di

iI

i
sono ordi-
nali per il Lemma 3.3.8 e sono ordinati totalmente per il punto (ii) del
Corollario 3.3.10.
Possiamo applicare i risultati appena dimostrati per costruire nuovi ordinali.
Per esempio, sappiamo che tutti i numeri naturali sono ordinali. Quindi,
possiamo considerare linsieme n [ n N e prenderne lunione

nN
n.
Visto che N =

nN
n, dal Lemma 3.3.11 possiamo concludere che linsieme
dei numeri naturali `e un ordinale. Quando considerato come ordinale, `e
consuetudine scrivere anzich`e N. Possiamo poi considerare gli insiemi
+ 1 , + 2 , +n, . . .
che sono tutti ordinali per il Lemma 3.3.7. Applicando ancora il Lem-
ma 3.3.11, otteniamo che
2 =
def
_
nN
+n
`e un ordinale. In maniera analoga, si possono costruire gli ordinali
3, . . . , n, . . . In questo modo, si possono continuare a generare ordinali
sempre e sempre pi` u grandi.
Scriveremo Ord per la classe degli ordinali. Il cosiddetto paradosso di Burali-
Forti `e losservazione che la classe Ord non pu`o essere un insieme. Infatti,
per il lemma 3.3.8, la classe Ord `e transitiva, nel senso che se Ord allora
Ord. Inoltre, per il corollario 3.3.10 (ii), la relazione di appartenenza
su Ord `e un buon ordine. Se Ord fosse un insieme, sarebbe quindi un
ordinale e quindi avremmo che Ord Ord, in contraddizione con lassioma
di fondazione.
51
Anche se non lo dimostreremo, gli ordinali si possono dividere in tre gruppi:
lo zero, 0, gli ordinali successori, ovvero gli ordinali per cui esiste un
ordinale tale che = + 1, e gli ordinali limite, ovvero gli ordinali tali
che =

. Gli ordinali niti sono dati dai numeri naturali 0, 1, 2, . . .. Il


primo ordinale limite `e . Si pu`o dimostrare che la classe Ord degli ordinali
`e la pi u piccola classe X che soddisfa le seguenti propriet`a:
0 X ,
x
_
x X x + 1 X
_
,
x
_
x X
_
x X
_
.
Tramite questa caratterizzazione induttiva della classe degli ordinali, si pu`o
vedere che `e possibile dimostrare propriet`a degli ordinali per induzione e
denire funzioni dalla classe degli ordinali per ricorsione. Un esempio di
questo tipo di denizione `e la denizione della gerarchia di Von Neumann,
data da una funzione Ord V denita da
V
0
=
V
+1
= T(V

)
V

=
_

Per ogni insieme a `e possibile denire un ordinale rk(a), detto il rango di a,


tale che x V

se e solo se rk() < . La totalit`a degli insiemi puo essere


quindi vista come organizzata in livelli, dati dagli ordinali. Il rango di un
insieme a `e esattamente il livello di a e linsieme V

ha come elementi tutti


gli insiemi con livello inferiore ad .
3.4 Lassioma della scelta
Nonostante ZF sia suciente per codicare gran parte della matematica
e dimostrare moltissimi risultati, ci sono alcune asserzioni che possono es-
sere dimostrate solo in ZFC, lestensione di ZF con lAssioma della Scelta
(AC), come per esempio il teorema di Tychono (il prodotto cartesiano di
una famiglia di spazi topologici compatti `e compatto), il teorema dellideale
massimale (ogni ideale di un anello `e contenuto in un ideale massimale), e
il teorema di Hamel (ogni spazio vettoriale ha una base). Cominciamo con
lenunciare lassioma della scelta.
52
Assioma della scelta. Se (A
i
[ i I) `e una famiglia di insiemi non vuoti,
allora esiste una funzione
f : I

iI
A
i
tale che f(i) A
i
per ogni i I.
Proposizione 3.4.1. Le seguenti asserzioni sono equivalenti.
(i) Assioma della scelta.
(ii) Ogni insieme A ha una funzione di scelta, ovvero una funzione
f : T(A) A
tale che f(S) S per ogni S T(a) .
Dimostrazione.
(i) (ii). Si consideri I = T(A) e la famiglia (S [ S I). Ogni
elemento della famiglia `e non vuoto, e quindi possiamo applicare lassioma
della scelta e derivare lesistenza di una funzione
f : T(A)

SI
S
tale che f(S) S per ogni S I. La conclusione segue osservando che

SI
S = A.
(ii) (i). Data una famiglia (A
i
[ i I), deniamo
A =

iI
A
i
.
Sia f : T(A) A una funzione di scelta per A. La funzione desiderata
`e data dalla funzione f

: I

iI
A
i
`e denita da f

(i) =
def
f(A
i
), per
i I.
Proposizione 3.4.2. Sia A un insieme. Le seguenti aermazioni sono
equivalenti.
(i) Esiste un buon ordinamento di A,
(ii) Esiste una funzione di scelta su A.
Traccia della dimostrazione.
(i) (ii). Sia < un buon ordinamento su A. La funzione di scelta f :
T(A) A `e data denendo f(S) come lelemento minimo di S, ove
S T(A) .
(ii) (i). Non `e in programma.
53
La Proposizione 3.4.2 implica che lassioma della scelta `e equivalente al co-
siddetto principio del buon ordinamento, che asserisce che ogni insieme ha
un buon ordinamento.
Introduciamo il Lemma di Zorn, un principio equivalente allAssioma della
Scelta che viene utilizzato spesso nella pratica matematica. Per enunciarlo,
dobbiamo ssare un po di terminologia. Sia (A, <) un ordine parziale.
Una catena in A `e un sottoinsieme S a che `e totalmente ordinato dalla
restrizione di < a S. In altre parole, (S, <) `e un ordine totale. Diremo che
(A, <) `e induttivo se per ogni catena S A ha un maggiorante, ovvero esiste
a A tale che per ogni x S si ha x a . Inne, diciamo che m A `e un
elemento massimale di (A, <) se vale che (x A)
_
m x m = x
_
.
Lemma di Zorn. Se un insieme parzialmente ordinato `e induttivo, allora
ha un elemento massimale.
Proposizione 3.4.3. I seguenti principi sono equivalenti.
(i) Lassioma della scelta.
(ii) Il lemma di Zorn.
Dimostrazione.
(i) (ii). Non `e in programma.
(ii) (i). La dimostrazione `e un tipico esempio di applicazione del lemma
di Zorn. Sia a un insieme. Vogliamo denire una funzione di scelta su a. La
strategia della dimostrazione `e di denire un insieme parzialmente induttivo
il cui elemento massimale `e la funzione richiesta. A questo ne, consideriamo
linsieme delle funzioni f con dominio un sottoinsieme di T(a) tali che
f(p) p, per ogni p dom(f). Questo insieme ha un ordine parziale denito
dichiarando f
1
f
2
se f
2
estende f
1
, ovvero dom(f
1
) dom(f
2
) e f
1
(p) =
f
2
(p) per ogni p dom(f
1
). Questo ordine parziale `e induttivo e quindi,
per il lemma di Zorn, ha un elemento massimale, diciamo f. Vogliamo
dimostrare che dom(f) = T(a). Se non valesse, esisterebbe x
_
T(a)

_
dom(f), ovvero un elemento di T(a) che non appartiene al
dominio di f. Visto che x non `e vuoto, esiste y x e quindi possiamo
denire una funzione f

: dom(f) x a che coincide con f su dom(f)


e denita da f

(x) = y su x. Lesistenza di questa funzione contraddice


la massimalit`a di f. Quindi, deve valere che dom(f) = T(a) , come
volevasi dimostrare.
54
3.5 Cardinali
La nozione di cardinale `e quanto si ottiene astraendo dalla nozione di insieme
il fatto che gli elementi di un insieme sono essi stessi degli insiemi. Pi u
precisamente, vorremmo denire un cardinale come una classe di equivalenza
rispetto alla relazione di equivalenza denita da
A B se e solo se esiste una funzione biiettiva f : A B.
A priori, le classi di equivalenza di questa relazione di equivalenza sono classi
proprie, non insiemi. Tuttavia, `e possibile denire una funzione che sceglie
un rappresentante per ciascuna di queste classi di equivalenza, ovvero una
funzione
card : V V
tale che
(A)(B)
_
card(A) = card(B) A B
_
. (3.2)
Noi non deniremo la funzione card, ma ci limiteremo ad utilizzarla tramite
la propriet`a in (3.2). Possiamo adesso denire un cardinale come un insieme
della forma card(A), ove A `e un insieme qualsiasi. Come abituale, utilizze-
remo le lettere , , , . . . per indicare cardinali. Introduciamo una relazione
dordine tra i cardinali dichiarando che vale se e solo se esiste una
funzione iniettiva i : A B, ove card(A) = e card(B) = . Il teorema di
Cantor-Schroeder-Bernstein, che non dimostreremo asserisce che se e
, allora = .
Deniamo le operazioni fondamentali dellaritmetica dei cardinali. Siano
e due cardinali. Se A e B sono insiemi tali che card(A) = e card(B) = ,
allora deniamo
+ =
def
card(A+B)
=
def
card(AB)

=
def
card(B
A
)
ove A + B `e lunione disgiunta di A e B, A B `e il prodotto cartesiano di
A e B e B
A
`e linsieme delle funzioni da A a B.
Si osservi che, per ogni insieme A, esiste una biiezione : T(A) 2
A
, ove
2 = 0 , 1, denita mappando S T(A) nella funzione caratteristica di S,

S
: A 2. Da questo segue
card(T(A)) = card(2
A
) = 2
card(A)
.
55
Deniamo
0
= card(N) e
1
come il pi u piccolo cardinale strettamente
maggiore di
0
. Lipotesi del continuo `e lasserzione
2

0
=
1
(CH)
Visto che linsieme dei numeri reali 1 `e in biiezione con T(N), vale che
card(1) = card(T(N)) = 2
card(N)
= 2

0
Lipotesi del continuo pu`o essere quindi letta come lasserzione che il pi` u
piccolo cardinale strettamente maggiore della cardinalit`a di N `e dato dalla
cardinalit`a di 1, o, equivalentemente, che non esiste alcun cardinale tra [N[
e [1[. Cohen e Godel hanno rispettivamente dimostrato che se ZFC non `e
contraddittoria, allora ZFC - CH e ZFC - CH. Questi risultati esprimono
che gli assiomi di ZFC non sono sucienti a dimostrare n`e lipotesi del
continuo n`e la sua negazione. Per una dimostrazione, si veda [2, 5].
56
Capitolo 4
Teoria della Calcolabilit`a
4.1 Macchine a registri
Cominciamo introducendo le macchine a registri, modelli idealizzati di calco-
latori, molto simili alle macchine di Turing. Una macchina a registri consiste
di un nastro innito
R
1
R
2
R
3
R
4

ove R
1
, R
2
, . . . N, sono detti i registri della macchina. Un programma per
una macchina a registri `e una sequenza di istruzioni, o stati. Abbiamo due
stati speciali:
S
0
, lo stato terminale, in cui lesecuzione del programma termina.
S
1
, lo stato iniziale, da cui comincia sempre lesecuzione del program-
ma.
Per ogni stato S
i
abbiamo due istruzioni possibili:
Aggiungi 1 al registro R
n
ed esegui S
j
,
Verica se R
n
= 0. Se s, esegui S
j
; altrimenti, sottrai 1 al registro R
n
ed esegui S
k
.
Per convenzione, se un programma termina, considereremo R
1
come il ri-
sultato del programma. Utilizzeremo la seguente notazione per abbreviare
questi comandi:
R
n
:= R
n
+ 1 ed esegui S
j
,
57
Se R
n
= 0 allora esegui S
j
altrimenti R
n
:= R
n
1 ed esegui S
k
.
Esempio 4.1.1. Il seguente programma aggiunge il valore di R
2
a R
1
.
S
0
Termina
S
1
Se R
2
= 0 allora esegui S
0
altrimenti R
2
:= R
2
1 ed esegui S
2
S
2
R
1
:= R
1
+ 1 ed esegui S
1
,
Si verichi che il programma, cominciando con
5 2 0 0
termina con
7 0 0 0
Si verichi che `e possibile scrivere programmi che non terminano, ovvero che
non raggiungono mai ad eseguire S
0
.
Denizione 4.1.2. Una funzione f : N
n
N `e calcolabile se esiste un
programma P tale che, per ogni (x
1
, . . . , x
n
) N
n
, si ha che:
se f(x
1
, . . . , x
n
) esiste, allora il programma, cominciando con
x
1
x
2
x
n
0 0
termina arrivando a
f(x
1
, . . . , x
n
)
se f(x
1
, . . . , x
n
) non esiste, allora P non termina.
4.2 Funzioni ricorsive
Linsieme delle funzioni ricorsive `e il pi u piccolo insieme X di funzioni da
potenze di N (ovvero insiemi della forma N
n
, per qualche n N) a N che
soddisfa le propriet`a seguenti.
(i) Per ogni 1 i n, la proiezione i-esima

i
: N
n
N
(x
1
, . . . , x
n
) x
i
`e in X.
58
(ii) La funzione costante 0 e la funzione successore
c
0
: N N
x 0
S : N N
x x + 1
sono in X.
(iii) Se f : N
n
N `e in X e, per ogni 1 i n, g
i
: N
m
N `e in X, allora
la funzione composta
f(g
1
, . . . , g
n
) : N
m
N
x
1
, . . . , x
m
f(g
1
(x
1
, . . . , x
n
), . . . , g
n
(x
1
, . . . , x
n
))
`e in X.
(iv) Se f : N
n
N e g : N
n+2
N sono in X, allora la funzione
h : N
n+1
N
(x
1
, . . . , x
n
, 0) f(x
1
, . . . , x
n
)
(x
1
, . . . , x
n
, y + 1) g(x
1
, . . . , x
n
, y, h(x
1
, . . . , x
n
, y)
`e in X.
(v) Se f : N
n+1
N `e in X, allora la funzione
Min(f) : N
n
N
(x
1
, . . . , x
n
) minx N [ f(x
1
, . . . , x
n
, x) = 0
`e in X.
Scriveremo Rec per indicare linsieme delle funzioni ricorsive. Le funzioni
in (i) e (ii) sono dette le funzioni ricorsive di base. Le funzioni ottenute
tramite lapplicazione delle regole in (i)-(iv) sono dette le funzioni primitive
ricorsive.
Si noti che linsieme delle funzioni ricorsive include non solo funzioni totali,
ma anche funzioni parziali f : N
n
N, che non necessariamente associano
un valore ad ogni elemento (x
1
, . . . , x
n
) N
n
. Per esempio, anche se f :
N
n+1
N `e una funzione totale, Min(f) : N
n
N `e una funzione parziale
qualora ci sia una sequenza (x
1
, . . . , x
n
) N
n
per cui non esiste x N tale
che f(x
1
, . . . , x
n
) = 0.
59
Nel caso n = 0, la denizione per ricorsione in (iv) assume la seguente
forma. Dato un elemento a N e una funzione g : N N N, abbiamo
una funzione
h : N N
0 a
y + 1 g(y, h(y))
Nel caso n = 1, la denizione per ricorsione in (iv) assume la seguente forma.
Date funzioni f : N N e g : N N N N, abbiamo una funzione
h : N N N
(x, 0) f(x)
(x, y + 1) g(x, y, h(x, y))
Osservazione 4.2.1. La funzione f : N N che calcola i numeri di Fibonacci
soddisfa le equazioni
f(0) = 1
f(1) = 1
f(x + 2) = f(x) +f(x + 1)
Nonostante la denizione di questa funzione non rientri nello schema delle
funzioni ricorsive, `e possibile tuttavia dimostrare che `e ricorsiva. In generale
possiamo denire funzioni ricorsive f : N N anche quando f(x+1) dipende
da tutti i valori f(0), . . . , f(x), e non solo da f(x). Per dimostrare questo,
`e necessario codicare i valori f(0), . . . , f(x) in un singolo numero. Lidea
che ci permette di fare questo `e di associare ad una sequenza
x
0
, x
1
, , . . . , x
n
di numeri (che, per semplicit`a, supponiamo diversi da zero), il numero
2
x
0
3
x
1
. . . p
x
n
n
ove, per 0 i n, p
i
denota il numero primo (i + 1)-esimo.
`
E chiaro che
questa denizione determina una funzione ricorsiva f : N
n
N.
`
E meno
evidente, ma comunque vero, che per ogni 0 i n, possiamo denire
una funzione da N a N che assegna ad un numero x il numero (x)
i
, denito
come lesponente della pi u alta potenza di p
i
che divide x. In con questa
denizione, `e chiaro che vale
(2
x
0
3
x
1
. . . p
x
n
n
)
i
= x
i
per ogni 0 i n. Grazie ha questa idea, data una funzione ricorsiva f :
N
n+1
N`e possibile denire una nuova funzione ricorsiva

f : N
n+1
N tale
che

f(x
1
, . . . , x
n
, y+1) codica tutti i valori f(x
0
, . . . , x
n
, 0), . . . f(x
0
, . . . , x
n
, y).
60
4.3 La tesi di Church
Teorema 4.3.1. Ogni funzione ricorsiva `e calcolabile.
Dimostrazione. Deniamo
X = f : N
n
N [ f `e calcolabile
Dimostreremo che X soddisfa le proprieta (i)-(v) con cui abbiamo denito
linsieme Rec delle funzioni ricorsive. Dalla minimalita di Rec, seguira che
Rec X, da cui si ottiene lasserzione desiderata. Dimostreremo ciascuna
delle proprieta separatamente.
Per (i), dobbiamo dimostrare che ciascuna delle proiezioni
i
: N
n
N, per
1 i n, `e calcolabile. Per i = 1, `e suciente scrivere un programma che
non modica R
1
e che poi termina. Per esempio:
S
0
Termina
S
1
R
2
:= R
2
+ 1 ed esegui S
0
Per i > 1, scriviamo un programma che azzera R
1
, trasferisce il valore di R
i
in R
1
e termina:
S
0
Termina
S
1
Se R
1
= 0 allora esegui S
2
altrimenti R
1
:= R
1
1 ed esegui S
1
S
2
Se R
i
= 0 allora esegui S
0
altrimenti R
i
:= R
i
1 ed esegui S
3
S
3
R
1
:= R
1
+ 1 ed esegui S
2
Per (ii), la funzione costante c
0
: N N `e calcolata dal programma:
S
0
Termina
S
1
Se R
1
= 0 allora esegui S
0
altrimenti R
1
:= R
1
1 ed esegui S
1
La funzione successore S : N N `e invece calcolata dal programma:
S
0
Termina
S
1
R
1
:= R
1
+ 1 ed esegui S
0
Per (iii), supponiamo di avere una funzione calcolabile f : N
n
N e, per
ogni 1 i n, una funzione calcolabile g
i
: N
m
N. Dobbiamo dimostrare
61
che la funzione f(g
1
, . . . , g
n
) : N
m
N `e calcolabile. Per capire come scri-
vere il programma, si ricordi che il valore di questa funzione su (x
1
, . . . , x
m
)
`e dato da:
f(g
1
(x
1
, . . . , x
m
), . . . , g
n
(x
1
, . . . , x
m
))
Calcoleremo separatamente i valori di g
1
(x
1
, . . . , x
m
), . . . , g
n
(x
1
, . . . , x
m
). A
questo ne, `e necessario salvare i valori di x
1
, . . . , x
m
in modo da poterli uti-
lizzare pi u di una volta. Possiamo poi applicare il il programma che calcola
f sui valori di g
1
(x
1
, . . . , x
m
), . . . , g
n
(x
1
, . . . , x
m
) per ottenere il risultato
desiderato. Il programma desiderato `e quindi il seguente.
Primo passo. Copiamo i valori di R
1
, . . . , R
m
in R
k+1
, . . . , R
k+m
,
R
1
R
2
R
m
R
k+1
R
k+m
ove k > m `e sucientemente grande da fare in modo che questi valori non
vengano modicati dai calcoli che seguono. Questo ci permette di utilizzare
ripetutamente i valori iniziali di R
1
, . . . , R
m
, come faremo nel secondo passo.
Secondo passo. Per ogni 1 i n, copiamo i valori di R
k+1
, . . . , R
k+m
in
R
n+1
, . . . , R
n+m
:
R
n+1
R
n+m
R
k+1
R
k+m
A questo punto, applichiamo il programma che calcola g
i
: N
m
N, traslato
di n, ai valori in R
n+1
, . . . , R
n+m
. Il valore ottenuto `e contenuto in R
n+1
.
Copiamo questo valore in R
i
.
Terzo passo. A questo punto, per 1 i n, il registro R
i
contiene il valore
ottenuto dallapplicazione del programma che calcola g
i
sui valori iniziali di
R
1
, . . . , R
m
. Possiamo quindi applicare il programma che calcola f su
R
1
R
2
R
n

e terminare il programma.
Per (iv), supponiamo di avere due funzioni computabili f : N
n
N e
g : N
n+2
N. Dobbiamo dimostrare che la funzione h : N
n+1
N, denita
da
h(x
1
, . . . , x
n
, 0) = f(x
1
, . . . , x
n
) ,
h(x
1
, . . . , x
n
, y + 1) = g(x
1
, . . . , x
n
, y, h(x
1
, . . . , x
n
, y)) .
62
`e calcolabile. Per capire come funziona il programma che calcola h, consi-
deriamo qualche esempio:
h(x
1
, . . . , x
n
, 0) = f(x
1
, . . . , x
n
)
h(x
1
, . . . , x
n
, 1) = g(x
1
, . . . , x
n
, 0, h(x
1
, . . . , x
n
, 0))
h(x
1
, . . . , x
n
, 2) = g(x
1
, . . . , x
n
, 1, h(x
1
, . . . , x
n
, 1))
h(x
1
, . . . , x
n
, 3) = g(x
1
, . . . , x
n
, 2, h(x
1
, . . . , x
n
, 2))
.
.
.
.
.
.
Consideriamo i seguenti registri:
R
1
R
n
R
n+1
R
n+2
R
k+1
R
k+n
R
k+n+1
R
k+n+2
I registri saranno utilizzati come segue.
I registri R
1
, . . . , R
n
vengono utilizzati per calcolare f o g e poi rista-
biliti al loro valore iniziale.
Dopo averne salvato il valore iniziale, il registro R
n+1
viene ssato a
0 e poi incrementato progressivamente, assumendo i valori 0, 1, 2, . . .,
analogamente allincremento dellargomento (n+1)-esimo di g nel lato
destro delle equazioni precedenti.
Il registro R
n+2
contiene i valori temporanei di h.
I registri R
k+1
, . . . , R
k+n
conservano i valori iniziali di R
1
, . . . , R
n
.
Il registro R
k+n+1
viene inizialmente ssato con il valore di R
n+1
e poi progressivamente decrementato, in modo da segnalare quando
dobbiamo terminare il programma.
Il registro R
k+n+2
viene inizialmente ssato a 0 e poi progressivamente
incrementato, permettendoci di incrementare R
n+1
.
Inizio. Assumiamo che il registro abbia la forma
R
1
R
2
R
n
R
n+1
0 0
Primo passo. Copiamo R
1
, . . . , R
n
, R
n+1
in R
k+1
, . . . , R
k+n
, R
k+n+1
R
1
R
n
R
n+1
R
n+2
R
k+1
R
k+n
R
k+n+1
R
k+n+2
ove k > n + 1 `e sucientemente grande.
Secondo passo. Applichiamo il programma che calcola f ai valori in R
1
, . . . , R
n
.
Terzo passo. Se R
k+n+1
= 0 allora esegui S
0
altrimenti R
k+n+1
:= R
k+n+1

1 ed esegui il seguente sottoprogramma.


63
Copia R
1
in R
n+2
.
Copia R
k+1
, . . . , R
k+n
in R
1
, . . . , R
n
.
Copia R
k+n+2
in R
n+1
Esegui il programma che calcola g su R
1
, . . . , R
n
, R
n+1
, R
n+2
.
Incrementiamo di 1 il valore di R
k+n+2
.
Ritorna ad eseguire i comandi del terzo passo.
Per (v), supponiamo che f : N
n+1
N sia calcolabile. Dobbiamo dimo-
strare che Min(f) : N
n
N `e calcolabile. Il programma che calcola Min(f)
consiste, essenzialmente, nel calcolare
f(x
1
, . . . , x
n
, 0)
f(x
1
, . . . , x
n
, 1)
.
.
.
f(x
1
, . . . , x
n
, x)
.
.
.
Vericando, ad ogni passaggio, se abbiamo ottenuto 0. Una volta ottenuto
0, diamo il valore di x. Ancora una volta, per fare questo, abbiamo bisogno
di salvare i valori iniziali di x
1
, . . . , x
n
in una parte remota del nastro. Il
programma `e esplicitamente dato come segue.
Primo passo. Copiamo i valori di R
1
, . . . , R
n
in R
k+1
, . . . , R
k+n
, ove k `e
sucientemente grande.
Secondo passo. Eseguiamo il seguente sottoprogramma.
Copiamo R
k+1
, . . . , R
k+n+1
in R
1
, . . . , R
n+1
;
Applichiamo il programma che calcola f su R
1
, . . . , R
n+1
.
Terzo passo. Se R
1
= 0 allora esegui S
i
altrimenti R
1
:= R
1
1 ed esegui S
j
,
ove S
i
copia il contenuto di R
k+n+1
in R
1
e termina il programma, mentre
S
j
incrementa R
k+n+1
di 1 e ritorna allinizio del secondo passo.
La dimostrazione `e completata.
Teorema 4.3.2. Ogni funzione calcolabile `e ricorsiva.
64
Traccia della dimostrazione. Sia f : N
n
N una funzione calcolabile. Sia P
un programma che calcola f. Deniamo una funzione ausiliaria g : N
n+2

N come segue:
g(x
1
, . . . , x
n
, 0, t) `e denito come il numero dello stato raggiunto dal
P dopo aver eseguito t passi, assumendo di iniziare con
x
1
x
n
0 0
Conveniamo che se P termina in meno di t passi, siamo nello stato S
0
.
Per i > 0, g(x
1
, . . . , x
n
, i, t) `e denito come il valore del registro R
i
dopo che P ha eseguito t passi.
Dimostreremo che
f(x
1
, . . . , x
n
) = g(x
1
, . . . , x
n
, 1, h(x
1
, . . . , x
n
)) ()
ove h(x
1
, . . . , x
n
) `e denito come il minimo t tale che g(x
1
, . . . , x
n
, 0, t) = 0.
Per dimostrare (), `e suciente osservare che g(x
1
, . . . , x
n
, 1, h(x
1
, . . . , x
n
))
`e il valore di R
1
dopo che P ha eseguito h(x
1
, . . . , x
n
) passi. Per denizione
di h, quindi, g(x
1
, . . . , x
n
, 1, h(x
1
, . . . , x
n
)) `e il valore di R
1
dopo che P ha
eseguito il minimo numero di passi t tale che g(x
1
, . . . , x
n
, 0, t) = 0. Per
denizione di g, quindi, questo valore `e il contenuto del registro R
1
dopo
che P ha eseguito il minimo numero di passi che permettono di raggiungere
S
0
, ovvero di terminare. Visto che P calcola f, il valore in R
1
quando P
termina `e esattamente f(x
1
, . . . , x
n
). Rimane da dimostrare che g, e quindi
h sono ricorsive. Da questo, tramite lequazione in (), seguira che f `e
ricorsiva, come vogliamo dimostrare. Questultima verica non `e parte del
programma.
4.4 Esempio di una funzione non ricorsiva
Vogliamo dare un esempio di una funzione f : N
n
N che non sia ricorsiva.
`
E chiaro che una tale funzione deve esistere, visto che linsieme delle funzioni
ricorsive f : N
n
N `e numerabile, mentre linsieme di tutte le funzioni
f : N
n
N non lo `e. Per denire una funzione non ricorsiva, procederemo
in tre passi. Nel terzo passo, utilizzeremo il metodo della diagonalizzazione
di Cantor.
Come primo passo, osserviamo che uninstruzione del tipo
R
n
:= R
n
+ 1 ed esegui S
j
65
`e completamente determinata dai numeri n e j. Per convenzione, le asse-
gneremo il codice 2
n
5
j
. Invece, unistruzione del tipo:
Se R
n
= 0 allora esegui S
j
altrimenti R
n
:= R
n
1 ed esegui S
k
`e completamente determinata dai numeri n, j, e k. Quindi, per convenzione,
le assegnamo il codice 2
n
3 5
j
7
k
. Il fattore 3 in questo codice serve
per aiutarci a distinguere i numeri che codicano istruzioni del primo tipo
rispetto ad istruzioni del secondo tipo.
Come secondo passo, si noti che un programma per macchine a registri non
`e nientaltro che una sequenza di istruzioni. Quindi possiamo assegnare
a ciascun programma un codice nel modo seguente. Dato un programma
che consiste di istruzioni S
0
, . . . , S
n
, innanzitutto assegnamo un codice a
ciascuna istruzione, secondo quanto spiegato nel primo passo, e otteniamo
quindi una sequenza di numeri i
0
, . . . , i
n
. Dopodich`e, associamo a questa
sequenza di numeri il singolo numero
2
i
0
3
i
1
. . . p
i
n
n
Tra i numeri naturali, esisteranno quindi numeri n ottenuti tramite questa
procedura. Possiamo pensare a questi numeri come codici di programmi per
macchine a registri. Dato n N, scriveremo P
n
per il programma codicato
da n, se questo esiste.
Come terzo e ultimo passo, dati n N e k N deniamo f
n,k
come la
funzione ricorsiva f
n,k
: N
k
N calcolata dal programma P
n
, se questo
esiste.
Teorema 4.4.1. La funzione g : N N denita da
g(n) =
_
f
n,1
(n) + 1 , se f
n,1
esiste e f
n,1
(n) `e denito.
0 , altrimenti.
non `e ricorsiva.
Dimostrazione. Innanzitutto, non esiste n N tale che g = f
n,1
. Infatti se
esistesse, avremmo sia che g(n) = f
n,1
(n) (per ipotesi) che g
n
(n) = f
n,1
(n)+
1 (per denizione di g). Da questo segue che g non `e ricorsiva. Infatti, se lo
fosse, esisterebbe un programma P
n
per qualche n N, che calcola g. Ma
allora avremmo g = f
n,1
, in contraddizione con quanto appena stabilito.
66
4.5 Insiemi ricorsivi e ricorsivamente enumerabili
Denizione 4.5.1. Un sottoinsieme S N `e detto essere ricorsivo se la
sua funzione caratteristica
S
: N N, denita da

S
(x) =
_
1 se x S ,
0 altrimenti ,
`e una funzione ricorsiva.
Proposizione/Denizione 4.5.2. Sia S N. Le seguenti condizioni sono
equivalenti.
(i) Esiste una funzione ricorsiva f : N
n
N tale che
S = f(x
1
, . . . , x
n
) N [ (x
1
, . . . , x
n
) N
n
.
(ii) Esiste una funzione ricorsiva f : N N tale che
S = x N [ f(x) `e denito .
(iii) La funzione
S
: N N denita da

S
(x) =
_
1 se x S
non denito altrimenti
`e ricorsiva.
(iv) La funzione
S
: N N denita da

S
(x) =
_
x se x S
non denito altrimenti
`e ricorsiva.
Un sottoinsieme S N che soddisfa queste condizioni sar`a detto ricorsiva-
mente enumerabile. delle condizioni equivalenti.
Dimostrazione. Dimostreremo (ii) (iii) (iv) (i) (ii).
(ii) (iii). Sia f come in (ii). Dato un programma P che calcola f, pos-
siamo ottenere un programma che calcola
S
aggiungendo a P uni-
struzione che, dopo aver calcolato f(x), assegna il valore 1 al registro
R
1
.
67
(iii) (iv). Dato un programma che calcola
S
`e immediato scrivere un
programma che calcola
S
. Per esempio, basta copiare x in una parte
remota della macchina, eseguire il programma per
S
, e poi copiare x
su R
1
.
(iv) (i).
`
E suciente considerare f data da
S
.
(i) (ii). Sia f : N
n
N come in (i). Dato un programma che calcola f,
descriviamo un programma Q che, dato un input x S, termina se
e solo se x S. Dato un input x, il programma Q calcola i valori
di f(x
1
, . . . , x
n
) e confronta il risultato ottenuto con x. Se il risultato
ottenuto `e uguale ad x, allora il programma termina. Altrimenti, Q
procede a calcolare un altro valore di f(x
1
, . . . , x
n
).
Proposizione 4.5.3. Un sottoinsieme S N `e ricorsivo se e solo se sia S
che N S sono ricorsivamente enumerabili.
Dimostrazione. Sia S un insieme ricorsivo. Per denizione,
S
`e ricorsi-
va. Da questo segue che sia
S
che
N\S
sono ricorsive, e quindi che sia S
che N S sono ricorsivamente enumerabili. Viceversa, supponiamo che S e
N S siano ricorsivamente enumerabili. Allora
S
che
N\S
sono ricorsive.
Utilizzando i programmi che calcolano
S
e
N\S
, `e possibile scrivere un
programma che calcola
S
nel modo seguente: dato un input x, il program-
ma calcola simultaneamente
S
(x) e
N\S
(x) e produce 1 o 0 a seconda di
quale programma termina prima. Si noti che almeno uno dei due programmi
deve terminare.
Teorema 4.5.4. Esiste una funzione ricorsiva u : N
3
N tale che, per
(n, k, m) N
3
, si ha che se n `e il codice di un programma, m`e il codice di una
sequenza ((m)
1
, . . . , (m)
k
)), e f
n,k
(((m)
1
, . . . , (m)
k
)) = r, allora u(n, k, m) =
r; altrimenti, u(n, k, m) non `e denito.
Un programma che calcola la funzione u del Teorema 4.5.4 `e detto un pro-
gramma universale, in quanto `e capace di simulare lazione di un qualsiasi
programma per macchine a registri. Applichiamo questo teorema al seguente
corollario.
Corollario 4.5.5. Le inclusioni
S [ S `e ricorsivo S [ S `e ricorsivamente enumerabile T(N)
sono inclusioni strette, ovvero
S [ S `e ricorsivo _ S [ S `e ricorsivamente enumerabile _ T(N) .
68
Dimostrazione. Sia u una funzione come nel Teorema 4.5.4. Deniamo
S =
def
n N [ u(n, 1, 3
n
) `e denito .
Linsieme S `e ricorsivamente enumerabile perche soddisfa la propriet`a (ii)
della Propositione/Denizione 4.5.2. Verichiamo che S non `e ricorsivo.
Abbiamo che
u(n, 1, 3
n
) = r sse n `e il codice di un programma, 3
n
`e il codice di
una sequenza (3
n
)
1
e f
n,1
((3
n
)
1
) = r
sse n `e il codice di un programma e f
n,1
(n) = r
Quindi,
u(u, 1, 3
n
) =
_
f
n,1
(n) se n `e il codice di un programma
non `e denito altrimenti
Da questo segue che la funzione non ricorsiva g : N N denita preceden-
temente puo essere descritta come
g(n) =
_
u(n, 1, 3
n
) + 1 se n `e il codice di un programma
0 altrimenti
Se S fosse ricorsivo, allora anche g sarebbe ricorsiva. Quindi, S non `e
ricorsivo, come volevasi dimostrare.
Diamo adesso un esempio di un insieme non ricorsivamente enumerabile.
Sia
S =
def
n N [ f
n,1
`e totale .
Se S fosse ricorsivamente enumerabile, esisterebbe una funzione ricorsiva
totale h : N N tale che S = h(n) [ n N (questo `e un fatto che non
dimostreremo). Allora, possiamo denire
h

(n) = f
h(n),1
+ 1
Si noti che
h

(n) = f
h(n),1
+ 1 = u(h(n), 1, 3
n
) + 1
A questo punto avremmo una contraddizione tra il fatto che h

`e ricorsiva
e totale e il fatto che h

,= f
n,1
per ogni n S. Quindi, S non puo essere
ricorsivo, come volevasi dimostrare.
69
Appendice A
Appendice
A.1 Insiemi, relazioni e funzioni
Utilizzeremo le lettere A, B, C, . . . X, Y, Z, . . . per indicare insiemi. Scrivere-
mo a A per indicare che a `e un elemento di A. Scriveremo a / A quando
questo non si verica. Una notazione simile verr`a adottata per la negazione
di altre relazioni. I simboli N, Z, , 1 indicano, come al solito, gli insiemi
dei numeri naturali (che per noi includono lo zero), interi, razionali e reali.
Siano A e B due insiemi. Scriveremo A B per indicare che A `e un sottoin-
sieme di B. Scriveremo invece A B per indicare che A `e un sottoinsieme
proprio di B, ovvero A B e A ,= B. Abbiamo che A = B se e solo se
A B e B A.
Sia A un insieme. Data una propriet`a (x) che gli elementi x A possono
avere o non avere, scriveremo x A [ (x) per indicare il sottoinsieme
di A che contiene tutti e soli gli elementi x A per cui vale (x). Per
esempio, linsieme dei numeri naturali pari `e dato da n N [ n `e pari .
Utilizzeremo questa notazione per richiamare la denizione delle operazioni
di intersezione, unione e dierenza tra sottoinsiemi di un insieme A ssato.
Dati S, T A, abbiamo
S T =
def
x A [ x S e x T ,
S T =
def
x A [ x S o x T ,
S T =
def
x A [x S e x / T .
Tra i sottoinsiemi di A ci sono anche linsieme vuoto, che indichiamo con il
simbolo , e linsieme A stesso. Linsieme delle parti di A `e linsieme T(A)
che ha come elementi i sottoinsiemi di A. Ovvero, S T(A) se e solo se
S A.
70
Siano A e B due insiemi. Il prodotto cartesiano di A e B `e linsieme AB che
ha come elementi le coppie ordinate della forma (a, b), ove a A e b B.
Se A ,= B allora A B ,= B A. Due coppie (a, b), (a

, b

) A B
sono uguali se e solo se a = a

e b = b

. Una relazione tra A e B `e un


sottoinsieme R A B. Diremo che x A `e in relazione con y B se
(x, y) R. A volte, scriveremo R(x, y) oppure xRy per indicare che x `e in
relazione con y.
Denizione A.1.1. Siano A e B due insiemi. Una funzione f : A B da
A a B `e una relazione tra A e B che `e
totale, ovvero per ogni x A esiste y B tale che (x, y) f,
univoca, ovvero per ogni x A e y, y

B, se (x, y) f e (x, y

) f
allora y = y

.
In base alla denizione, una funzione f : A B `e un sottoinsieme f AB
tale che per ogni x A esiste un unico y B tale che (x, y) f. Dato un
elemento x A, scriveremo f(x), come al solito, per indicare lunico y B
tale che (x, y) f. Per denire una funzione f : A B `e quindi necessario
denire per ogni x A un elemento f(x) B. A volte, questo sar`a fatto
tramite la notazione
f : A B
x . . .
ove i punti di sospensione saranno sostituiti dalla denizione di f(x).
Sia f : A B una funzione. Chiameremo A e B il dominio e il codominio
di f, rispettivamente. Diremo che due funzioni f : A B e f

: A B sono
uguali se sono uguali come sottoinsiemi di AB. Questo vale se e solo se per
ogni x Asi ha che f(x) = f

(x). Siano f : A B e g : B C due funzioni.


La funzione composta gf : A C `e denita ponendo (gf)(x) =
def
g(f(x))
per x A. Date funzioni f : A B, g : B C e h: C D, vale che
h (g f) = (h g) f
Dato un insieme A, scriviamo 1
A
: A A per indicare la funzione identit`a su
A, che `e denita ponendo 1
A
(x) =
def
x, per ogni x A. Data una funzione
f : A B si ha che
f 1
A
= f , 1
B
f = f .
Sia f : A B una funzione. Diremo che f `e iniettiva se, per ogni x, x

A,
f(x) = f(x

) implica che x = x

. Diremo invece che f `e suriettiva se per


ogni y B esiste x A tale che f(x) = y. Inne, diremo che f `e biiettiva
71
se f `e sia iniettiva e suriettiva. Questo signica che una funzione f : A B
`e biiettiva se per ogni y B esiste un unico x A tale che f(x) = y. Si
ricordi che f : A B `e biiettiva se e solo se ha una funzione inversa, ovvero
esiste una funzione g : B A tale che f g = 1
B
e g f = 1
A
. Se una
funzione inversa esiste, essa `e necessariamente unica e la indicheremo con
f
1
: B A.
A.2 Ordini parziali e ordini totali
Denizione A.2.1. Sia A un insieme. Diremo che una relazione binaria
su A `e un ordine parziale se `e
(i) riessiva, ovvero per ogni x A, x x,
(ii) antisimmetrica, ovvero per ogni x, y A, se x y e y x allora
x = y,
(iii) transitiva, ovvero per ogni x, y, z A, se x y e y z allora x z.
Inoltre, diremo che `e un ordine totale (o lineare) se `e anche
(iv) tricotoma, ovvero per ogni x, y A, x y o y x.
Un insieme parzialmente (totalmente) ordinato `e una coppia (A, ) costi-
tuita da un insieme A e un ordine parziale (totale) su A.
Esempio A.2.2.
Le familiari relazioni dordine su N, Z, e 1 sono ordini totali.
Sia A un insieme. Linsieme delle parti di A, T(A) = S [ S A ha
un ordine parziale data dalla relazione di inclusione . In generale,
questo ordine parziale non `e un ordine totale. Infatti, se fosse un ordine
totale dovrebbe valere che per ogni S
1
, S
2
A, si ha che o S
1
S
2
o S
2
S
1
. Ma se consideriamo S
1
= 1, 2 e S
2
= 2, 3, non vale
nessuna delle due alternative.
La denizione di ordine parziale e totale enunciata sopra `e espressa in termini
di una relazione dordine debole , ovvero una relazione per cui se x = y
allora x y. Dato un insieme parzialmente ordinato (A, ), possiamo
denire la relazione dordine stretto < dichiarando che per ogni x, y A, si
ha
x < y se e solo se x y e x ,= y .
Utilizzando la denizione di ordine parziale, `e possibile dimostrare che la
relazione < soddisfa le seguenti propriet`a:
72
(i)

per ogni x A, x x,
(ii)

per ogni x, y A, se x < y allora y x,


(iii)

per ogni x, y, z A, se x < y e y < z allora x < z.


Inoltre, se abbiamo un ordine totale, allora vale anche che
(iv)

per ogni x, y A o x < y o x = y o x < y.


Viceversa, se abbiamo una relazione < che soddisfa le condizioni (i)

-(iii)

,
possiamo denire un ordine parziale dichiarando che
x y se e solo se x < y o x = y .
Inoltre, se la relazione < soddisfa anche la condizione in (iv)

allora `e un
ordine totale. Nel seguito, passeremo implicitamente da un ordine stretto <
a un ordine debole e viceversa, a seconda di cosa risulti pi` u conveniente.
Esempio A.2.3. Nel seguito utilizzeremo frequentemente diagrammi della
forma
a
E
E
E
E
E
E
E
b
y
y
y
y
y
y
y
c
d
{
{
{
{
{
{
{
C
C
C
C
C
C
C
e f
per denire ordini parziali. Un diagramma di questo tipo determina lordine
parziale (A, ) denito nel modo seguente. Innanzitutto, A `e linsieme dei
nodi del diagramma. In questo caso,
A =
def
a, b, c, d, e, f
Lordine parziale `e denito ssando che, per x, y A, vale x < y se esiste
un tratto ascendente da x verso y. In questo caso, abbiamo e < d, f < d,
d < c, c < a, c < b. Inoltre, visto che lordine parziale `e transitivo, si ha
anche, per esempio, che d < a e e < b. Quando non c`e un tratto ascendente
tra due elementi, vuol dire che questi non sono confrontabili nellordine. Per
esempio, il diagramma indica che a _ b e b _ a. Di consequenza, questo
diagramma rappresenta un ordine parziale che non `e totale.
73
Proposizione/Denizione A.2.4. Sia (A, ) un insieme parzialmente or-
dinato. Dato S A, per un elemento m S, le seguenti propriet`a sono
equivalenti.
(i) Non esiste x S tale che x < m.
(ii) Per ogni x S, se x m allora x = m.
(iii) Per ogni x A, se x < m allora x / S.
Quando m ha una, e quindi ognuna, di queste propriet`a, diremo che `e
un elemento minimale di S.
Dimostrazione. Esercizio.
Esempio A.2.5.
Si consideri lordine parziale (Z, ) e il sottoinsieme S Z denito
da S =
def
x Z [ x < 0. Questo insieme non ha un elemento
minimale.
Si consideri lordine parziale (T(N), ) e il sottoinsieme S T(N)
denito da S =
def
p T(N) [ p ,= . Tutti gli insiemi del tipo n,
per n N, sono elementi minimali di S. Si noti che un elemento
minimale, se esiste, non `e unico.
Denizione A.2.6. Sia (A, ) un insieme parzialmente ordinato e S A.
Diremo che m S `e un elemento minimo di S se x m per ogni x S.
Esempio A.2.7.
In generale, un elemento minimale non `e un elemento minimo. Per
esempio, 0 `e minimale in S = p T(N) [ p ,= , ma non `e
minimo. Infatti, 0 _ 2, 3.
Se (A, ) `e un ordine totale, un elemento minimale m di un sottoin-
sieme S A `e il suo minimo. Infatti, dato x S il fatto che m sia
minimale implica che x m. Da questo, per la tricotomia di <, segue
che m x.
74
Bibliograa
[1] G. S. Boolos, J. P. Burgess, and R. C. Jerey. Computability and Logic.
Cambridge University Press, 5th edition, 2007.
[2] F. R. Drake and D. Singh. Intermediate Set Theory. Wiley, 1996.
[3] H. B. Enderton. A Mathematical Introduction to Logic. Academic Press,
2nd edition, 2001.
[4] P. T. Johnstone. Notes on Logic and Set Theory. Cambridge University
Press, 1987.
[5] K. Kunen. Set Theory - An Introduction to Independence Proofs.
Elsevier, 1980.
[6] I. Moerdijk and J. van Oosten. Sets, models and proofs. Dispense
disponibili alla pagina web di J. van Oosten, 2009.
[7] D. van Dalen. Logic and Structure. Springer, 4th edition, 2008.
75

You might also like