Professional Documents
Culture Documents
2), linclusione
`e propria.
3.3 Operazioni su insiemi
Dati due insiemi A e B possiamo costruire altri insiemi:
Lintersezione di A e B, in simboli A B, `e linsieme di tutti gli enti che
stanno tanto in A quanto in B.
Lunione di A e B, in simboli AB, `e linsieme di tutti gli enti che stanno
in A o in B (o in entrambi gli insiemi),
La differenza tra A e B, in simboli A B, `e linsieme di tutti gli enti che
stanno in A ma non in B.
31
La differenza simmetrica tra A e B, in simboli AB, `e linsieme di
tutti gli enti che stanno in uno dei due insiemi ma non nellaltro.
Linsieme delle parti di un insieme A `e linsieme di tutti i sottoinsiemi di
A
P(A) = B [ B A .
Osserviamo che linsieme delle parti `e un insieme i cui elementi sono a loro volta
insiemi.
Le operazioni di unione e di intersezione possono essere generalizzate a famiglie
arbitrarie di insiemi. Una famiglia arbitraria di insiemi `e denotata da A
i
[ i I
ad ogni indice i I corrisponde un insieme A
i
. Lunione degli A
i
`e linsieme
_
iI
A
i
= x [ x A
i
, per qualche i I
mentre lintersezione degli A
i
`e linsieme
iI
A
i
= x [ x A
i
, per ogni i I .
Chiaramente ogni
iI
A
i
contiene ogni A
j
mentre
iI
A
i
`e contenuta in ogni A
j
.
Per esempio, se consideriamo la famiglia A
n
[ n N di intervalli di R dove
A
n
= [1; 1 2
n
], allora
_
nN
A
n
= [1; 1) e
nN
A
n
= [1; 0].
Se invece A
n
= [1; 1 + 2
n
], allora
_
nN
A
n
= [1; 2) e
nN
A
n
= [1; 1].
3.4 Relazioni e funzioni
Il prodotto cartesiano di A e B, in simboli A B, `e linsieme di tutte le
coppie ordinale (x, y) dove x A e y B, cio`e
A B = (x, y) [ x A e y B .
Osserviamo che, a dierenza degli insiemi, nelle coppie ordinate lordine `e fonda-
mentale, cio`e (x, y) `e un oggetto diverso da (y, x), a meno che x non sia y. Quindi
A B `e distinto da B A, a meno che A = B nel qual caso scriveremo A
2
. Per
esempio R
2
`e linsieme delle coppie ordinate di numeri reali e questo insieme viene
32
usualmente identicato con il piano mediante un sistema di assi cartesiani. In
generale se n 2
(x
1
, x
2
, . . . , x
n
)
indica la n-upla ordinata costituita degli elementi x
1
, x
2
, . . . , x
n
e
A
n
= A A
. .
n
`e il prodotto cartesiano di n-copie dellinsieme A.
Una relazione n-aria, con n 1 `e un sottoinsieme di A
1
A
n
, per
qualche insieme A
1
, . . . , A
n
e se questi insiemi sono tutti lo stesso insieme A parle-
remo di relazione n-aria su A. Se n = 1 parleremo di relazione unaria o predicato,
se n = 2 parleremo di relazione binaria, se n = 3 parleremo di relazione ternaria,
etc. Spesso le relazioni binarie si dicono semplicemente relazioni e si scrive a R b
invece di (a, b) R.
Denizione 3.2. Diremo che una relazione (binaria) R su un insieme A `e
riessiva se a R a per ogni a A,
simmetrica se ogni qual volta a R b ne segue che b R a,
antisimmetrica se ogni qual volta a R b e b R a ne segue che a = b,
transitiva se da a R b e b R c segue che a R c.
Denizione 3.3. Una relazione di equivalenza su A `e una relazione ries-
siva, simmetrica e transitiva su A.
La diagonale o identit
`
a dellinsieme A `e
I(A) =
def
(a, a) [ a A .
I(A) e A A sono relazioni di equivalenza su A. Inoltre se E `e una relazione di
equivalenza su A, allora I(A) E A A.
La classe di equivalenza di un elemento a A relativamente ad una
relazione di equivalenza E su A `e
[a]
E
=
def
x A [ x E a
linsieme di tutti gli elementi E-equivalenti ad a. Spesso si usa il simbolo a/E
invece di [a]
E
. Linsieme quoziente `e
A/E =
def
[a]
E
[ a A
linsieme di tutte le classi di equivalenza. Osserviamo che linsieme quoziente `e
una famiglia di sottoinsiemi di A, cio`e
A/E P(A).
33
Proposizione 3.4. Data una relazione di equivalenza E su un insieme A, due
classi di equivalenza sono disgiunte o coincidono.
Dimostrazione. Fissiamo due classi di equivalenza [a]
E
e [b]
E
, dove a, b A.
Caso 1: a E b. Sia c [a]
E
: allora c E a e per la propriet`a transitiva c E b e
quindi c [b]
E
. Quindi [a]
E
[b]
E
.
Sia c [b]
E
: allora c E b, per la propriet`a simmetrica b E a e per la propriet`a
transitiva c E a e quindi c [a]
E
. Quindi [b]
E
[a]
E
.
Per il principio della doppia inclusione abbiamo quindi [a]
E
= [b]
E
.
Caso 2: a , E b. Verichiamo che in questo caso [a]
E
[b]
E
= . Supponiamo,
per assurdo, che ci sia un c [a]
E
[b]
E
. Allora c E b e quindi b E c
per simmetria, e dato che c E a si ha b E a per transitivit`a. Ma questo
contraddice la nostra assunzione.
Quindi il risultato `e dimostrato.
Denizione 3.5. Una partizione di un insieme A ,= `e una famiglia ( di
sottoinsiemi non vuoti di A, a due a due disgiunti, che ricoprono A, cio`e
(1) se X ( allora , = X A,
(2) se X, Y ( e X ,= Y allora X Y = ,
(3) ogni elemento di A appartiene a qualche X (.
Se E `e una relazione di equivalenza su A, allora A/E `e una partizione di A.
Viceversa, data una partizione ( di A, la relazione E A
2
denita da
a E b se e solo se a e b appartengono al medesimo X (
`e una relazione di equivalenza su A.
Denizione 3.6. Una relazione dordine su A o pi` u semplicemente: un
ordine o ordinamento su A `e una relazione riessiva, antisimmetrica e
transitiva su A.
Lesempio canonico di ordinamento `e la relazione su N, cio`e linsieme
_
(n, m) N
2
[ n m
_
.
Analogamente `e un ordinamento sugli insiemi Z, Q e R. Lordinamento su
questi insiemi `e un ordine lineare, dove
34
Denizione 3.7. Un ordine R su un insieme A `e lineare o totale se a R b o
b R a per ogni scelta di a, b A.
Linclusione `e un ordinamento su P(A), ma se A ha almeno due elementi,
diciamo a e b, questo ordine non `e lineare, dato che a e b non sono sottoinsiemi
luno dellaltro.
Denizione 3.8. Sia _ un ordinamento su A. Un elemento a A si dice
massimo se b _ a per ogni b A
minimo se a _ b per ogni b A.
Esempi 3.9. Lordinamento su N ha minimo (il numero 0), ma non ha
massimo.
Lordinamento su Z non ha ne minimo, ne massimo.
Lordinamento sullintervallo (0; 1] =
def
x R [ 0 < x 1 ha massimo
(il numero 1) ma non ha minimo.
Lordinamento su P(A) ha minimo (linsieme ) e massimo (linsieme A).
Esercizio 3.10. Deniamo _ su N come
n _ m se e solo se m = nk, per qualche k N.
Dimostrare che _ `e un ordine non totale su N che ha minimo e massimo.
La relazione < non `e un ordine su N, Z, Q o R dato che non vale la propriet`a
riessiva. Per questo motivo introduciamo la seguente
Denizione 3.11. Un ordine stretto su A `e una relazione R su A tale che
R I(A)
`e un ordine su A.
Denizione 3.12. Una relazione F A B `e una funzione da A in B se
(1) per ogni a A c`e un b B tale che (a, b) F.
(2) ogni qual volta (a, b
1
) F e (a, b
2
) F succede che b
1
= b
2
.
In questo caso scriveremo F : A B e lunico b B tale che (a, b) F lo si indica
con F(a).
35
Denizione 3.13. Una funzione F : A B `e
iniettiva se da a
1
,= a
2
segue che F(a
1
) ,= F(a
2
), o, equivalentemente, se da
F(a
1
) = F(a
2
) segue che a
1
= a
2
;
suriettiva se ogni b B `e della forma F(a) per qualche a A;
biettiva se `e iniettiva e suriettiva.
Denizione 3.14. Una operazione n-aria su A `e una F : A
n
A.
36
4 Il principio di induzione
In matematica (ed in informatica) `e spesso necessario dimostrare che una certa
propriet`a `e vera per tutti i numeri naturali. Per esempio:
Per ogni n N,
n
i=0
i =
n(n + 1)
2
.
Consideriamo un frammento di codice della forma:
while (b)
S;
Se P `e una proposizione che esprime una relazione tra i valori delle variabili
che compaiono nellistruzione S, allora si pu`o denire unaltra propriet`a
Q(n) P `e vera dopo n iterazioni del ciclo while.
Propriet`a di questo tipo sono utilizzate per stabilire che P `e una propriet`a
invariante del ciclo in questione.
Se E(n) `e unespressione aritmetica che contiene la variabile n, lequazione
f(n) = E(n)
stabilisce che la funzione f per largomento n ha lo stesso valore dellespres-
sione E(n). Se immaginiamo che la funzione f sia denita ricorsivamente, si
pu`o dimostrare per induzione che f(n) = E(n) per ogni valore naturale di n,
stabilendo cos` la correttezza della denizione ricorsiva della funzione il cui
valore per n `e dato da E(n).
La formulazione pi` u generalmente nota del principio di induzione `e la seguente.
principio di dimostrazione per induzione: Data una propriet`a
P dei numeri naturali, se P(0) e P(n) P(n+1), allora x N.P(x).
Qui una propriet`a dei numeri naturali `e una propriet`a per la quale abbia senso
chiedersi se `e vera o falsa per un numero naturale. La base dellinduzione `e la
dimostrazione di P(0), mentre il passo induttivo `e la dimostrazione dellim-
plicazione P(n) P(n + 1), che normalmente si articola nel modo seguente: si
assume che P(n) sia vera (questa `e detta lipotesi induttiva), e si dimostra che
P(n +1). Unaltra formulazione, del tutto equivalente alla prima, del principio di
induzione, usa lestensione della propriet`a P, cio`e linsieme dei numeri naturali
per i quali la propriet`a `e vera:
Se A N `e tale che 0 A e, per ogni n N, n A n + 1 A,
allora A = N.
37
Aritmetica Vediamo subito il primo esempio di utilizzo del principio di indu-
zione:
Proposizione 4.1. Per ogni n N,
n
i=0
i =
n(n + 1)
2
.
Dimostrazione. Qui la propriet`a P(k) `e
k
i=0
i =
k(k + 1)
2
.
La base consiste nel vericare che entrambi i lati dellinduzione hanno valore 0.
Per dimostrare il passo induttivo, assumiamo che
n
i=0
i =
n(n + 1)
2
e dimostriamo che
n+1
i=0
i =
(n + 1)(n + 2)
2
.
Ora,
n+1
i=0
i =
_
n
i=0
i
_
+ (n + 1)
=
n(n + 1)
2
+ (n + 1) per lipotesi induttiva
=
n(n + 1)
2
+
2(n + 1)
2
=
(n + 1)(n + 2)
2
e mediante unapplicazione del principio di induzione si ottiene la conclusione.
Correttezza di programmi Consideriamo il problema di calcolare il quoziente
q ed il resto r della divisione di due numeri interi X 0 e D > 0. Lalgoritmo
usuale consiste nel sottrarre ripetutamente D a X, aumentando ogni volta di 1 il
valore di q che inizialmente ha valore 0. Schematicamente, lalgoritmo `e il seguente:
1. no a quando X D esegui le seguenti azioni: sottrai D a X; aumenta q di
1
38
2. quando X < D, poni r = X.
Un programma Java che realizza questo algoritmo `e il seguente:
class divisione {
public static void main (String[] args) {
int X, D, q, r;
X = 14;
D = 3;
q = 0;
r = X;
while (r >= D) {
r = r - D;
q = q + 1;
}
System.out.println ("Il quoziente `e: " + q);
System.out.println ("Il resto `e: " + r);
}
}
Come si pu`o dimostrare che il programma precedente `e corretto? Prima di tutto,
serve una specica precisa del problema da risolvere: La condizione di ingresso del
programma, cio`e la propriet`a che i dati in ingresso X e D devono soddisfare, `e che
X 0 e D > 0 (la seconda propriet`a serve ad evitare casi di divisione per 0). La
condizione di uscita del programma, cio`e la propriet`a che i dati in uscita q ed r
devono soddisfare, `e che X = q D+r, con r < D. Questa propriet`a dice proprio
che q ed r sono, rispettivamente, il quoziente ed il resto della divisione intera di X
per D. La correttezza del programma (qualche volta si parla di questa condizione
come di correttezza parziale) asserisce che:
per ogni dato in ingresso che soddisfa la condizione di ingresso, se il
programma termina, allora i dati in uscita soddisfano la condizione di
uscita.
Una condizione pi` u esigente di correttezza `e quella che si chiama correttezza
totale:
per ogni dato in ingresso che soddisfa la condizione di ingresso, il
programma termina e i dati in uscita soddisfano la condizione di uscita.
Per stabilire che un programma soddisfa la specica vi sono vari modi, ma la
tecnica pi` u conveniente consiste nel trovare quello che si chiama un invariante
(di ciclo):
39
invariante (di un ciclo) `e una propriet`a che lega (tutte o alcune del)le
variabili coinvolte nel ciclo, e che `e vera dopo un numero arbitrario
di iterazioni del ciclo. In particolare, `e vera allingresso nel ciclo (cio`e
dopo 0 iterazioni).
Ci sono molte propriet`a invarianti del ciclo
while (r >= D) {
r = r - D;
q = q + 1;
}
nel programma precedente, per esempio la propriet`a q 0. Tra tutte le possibili
propriet`a ce ne sono alcune che sono pi` u interessanti di altre. Consideriamo ora la
propriet`a:
(6) X = q D +r
che `e molto simile alla condizione di uscita del programma. Che si tratti veramente
di un invariante `e qualcosa che deve ancora essere dimostrato, ma per il momento
assumiamo che lo sia. Quando il ciclo termina (e prima o poi deve terminare,
perche ad ogni iterazione a r viene sottratto il valore D che, per la condizione di
ingresso, `e un numero > 0, quindi prima o poi deve accadere che r < D) abbiamo
che X = q D + r perche abbiamo assunto che questa propriet`a sia invariante,
ed inoltre si esce dal ciclo perche r < D. Ma allora `e vera la propriet`a X =
q D + r, con r < D, che `e proprio la condizione di uscita del programma. Luso
dellinvariante ci permette quindi di dimostrare che il programma `e (parzialmente)
corretto. In questo caso abbiamo gi`a implicitamente dimostrato che il programma
`e anche totalmente corretto, perche abbiamo gi`a visto che il ciclo deve terminare.
Resta da dimostrare che la propriet`a (6) `e proprio invariante. Questo si pu`o fare
per induzione sul numero di iterazioni del ciclo. Supponiamo che questo numero
sia 0 (base dellinduzione) (ovviamente, la dimostrazione che (6) `e invariante vale
in generale, non solo per gli specici valori di X e D che abbiamo scelto). Allora
q = 0(perche q non viene incrementato) e r = X. Allora X = q D + r perche
questo si riduce a dire che X = 0D+X, che `e ovviamente vero. Supponiamo che
il ciclo sia stato eseguito n volte, e che la propriet`a (6) sia vera (ipotesi induttiva);
vogliamo dimostrare ora che resta vera anche dopo la (n + 1)-esima iterazione.
Durante questa iterazione vengono modicati i valori di q e di r, ottenendo valori
q
= q + 1
r
= r D
dove q
ed r
D +r
= (q + 1) D + (r D)
= q D +D +r D
= q D +r = X
dove lultimo passaggio sfrutta lipotesi induttiva. Per induzione si conclude allora
che la propriet`a (6) `e vera per qualsiasi numero di iterazioni del ciclo, quindi (6)
`e invariante.
Esempio 4.2. (Quadrato di un numero naturale) Vediamo un altro esempio della
tecnica appena usata per dimostrare la correttezza del programma per la divisione
intera, utilizzandola questa volta per sintetizzare un programma per calcolare il
quadrato di un numero naturale N. La condizione di ingresso sar`a dunque N 0,
mentre la condizione di uscita sar`a Y = X X e X = N dove Y `e il dato in uscita
ed X una variabile ausiliaria utilizzata come contatore. Linvariante appropriato
in questo caso `e la formula
(7) Y = X X.
Inizialmente avremo dunque X = 0 e Y = 0: linvariante `e ovviamente vero
in questo caso, e questo stabilisce la base della dimostrazione induttiva che la
propriet`a (7) `e invariante.
class quadrato {
public static void main (String[] args) {
int N, X, Y;
N = ? ; // inizializzazione
X = 0;
Y = 0;
while (X < N) {
Y = Y + 2 * X + 1;
X = X + 1;
}
System.out.println ("Quadrato = " + Y);
}
}
Per quanto riguarda il passo induttivo, lipotesi induttiva `e
41
Y = X X dopo ln-esima iterazione;
bisogna dimostrare che (7) resta vera dopo la (n + 1)-esima iterazione. Se Y
`e il
valore di Y dopo lesecuzione dellistruzione Y = Y + 2 X + 1, mentre X
`e il
valore di X dopo lesecuzione dellistruzione X = X + 1, possiamo calcolare
Y
= Y + 2 X + 1
= (X X) + 2 X + 1 (per ipotesi induttiva)
= (X + 1) (X + 1)
= X
i=0
i
4.1 Generalizzazioni del principio di induzione
C`e un altro principio fondamentale per ragionare sui numeri naturali:
Principio del minimo: Se la propriet`a P `e vera per qualche numero
naturale, allora c`e un minimo numero naturale n tale che P(n).
Dire che n `e il minimo per il quale la propriet`a P vale implica, in particolare,
che k < n. P(k). Una conseguenza fondamentale del principio del minimo `e la
seguente propriet`a, che si esprime dicendo che la relazione dordine stretta < sui
numeri naturali `e ben fondata:
In N non esiste alcuna successione discendente innita della forma
(8) n
0
> n
1
> n
2
> . . .
Infatti, se esistesse una successione della forma (8), linsieme n
0
, n
1
, n
2
, . . . non
avrebbe un minimo elemento. Limportanza di questa propriet`a dei numeri natu-
rali, che verr`a generalizzata nella sezione 4.1.2, risiede tra laltro nellutilizzo che
se ne pu`o fare per dimostrare la terminazione di programmi. Si ricordi che implici-
tamente questa propriet`a era gi`a stata utilizzata, per esempio, nella dimostrazione
della correttezza totale del programma per la divisione intera. La terminazione del
ciclo che calcola sul quale quel programma si basa viene dimostrata assegnando a
ciascuna congurazione di valori c = (X, D, q, r) assunti dalle corrispondenti va-
riabili del programma un numero naturale T(c) (nel caso specico r). Si utilizza
44
poi losservazione che, se il programma permette di passare da una congurazione
c = (X, D, q, r) ad una congurazione c
= (X
, D
, q
, r
).
Questo `e suciente a stabilire la terminazione: se il programma non terminasse
dovrebbe esistere una successione di congurazioni c
0
, c
1
, c
2
, . . . tale che il program-
ma passa dalla congurazione c
i
alla congurazione c
i+1
, per ogni i = 0, 1, 2, . . ..
Ma allora dovrebbe anche esistere una successione discendente di numeri naturali
T(c
0
) > T(c
1
) > T(c
2
) > . . ., contro la buona fondazione di < su N.
Dimostriamo ora che il principio di induzione implica il principio del minimo. Il
viceversa, cio`e che il principio del minimo implica il principio di induzione, `e un
bellesercizio per voi.
Teorema 4.7. Se P `e vera per qualche numero naturale, allora c`e un numero n
tale che P(n) ed inoltre k < n. P(k).
Dimostrazione. Per assurdo, cio`e cerchiamo di derivare una contraddizione dalla
negazione di quello che vogliamo dimostrare, che `e equivalente alla congiunzione
delle proposizioni seguenti:
(9) m N.P(m) n N.P(n) q < n.P(q).
Detto in italiano, assumiamo che ci sia un numero naturale che soddisfa P ma non
ci sia un minimo numero che soddisfa P e cerchiamo di ottenere una contraddizione.
Per induzione, dimostriamo che i N.Q(i), dove Q(i) `e vera se e solo se j <
i. P(j).
Base: Q(0) `e vera perche non c`e nessun numero naturale minore di 0 che la renda
falsa.
Passo induttivo: Assumiamo lipotesi induttiva Q(i), cio`e che
(10) j < i. P(j),
e dimostriamo che Q(i + 1), cio`e che j i. P(j). Sappiamo gi`a, per (10),
che P(0), . . . , P(i 1), ci resta da dimostrare che P(i), e facciamo questo
ancora per assurdo. In eetti, se P(i), mentre j < i. P(j) per (10), allora
i `e il minimo numero naturale che soddisfa P, ma questo contraddice lipotesi
(9). Quindi P(i) e perci`o j i. P(j), cio`e j < i + 1. P(j), che signica
Q(i +1). Unapplicazione del principio di induzione ci permette di concludere che
i N.Q(i). Ma allora non ci pu`o essere un numero naturale che soddisfa P:
infatti se ci fosse un n siatto, poiche vale Q(n + 1) per quanto abbiamo appena
concluso, si dovrebbe avere P(n) per la denizione di Q e per il fatto che Q `e
vera per ogni numero naturale, contro lipotesi (9). Abbiamo quindi raggiunto una
contraddizione con la nostra prima ipotesi, e questo dimostra che il principio del
minimo `e vero.
45
Vediamo unapplicazione del principio del minimo:
Proposizione 4.8. Ogni numero naturale 2 ha una scomposizione in fattori
primi.
Dimostrazione. Per assurdo, sia n 2 tale da non avere una scomposizione in
fattori primi. Supponiamo anche che n sia il minimo numero con questa propriet`a.
Ci sono due casi:
1. n `e primo: allora n ha una scomposizione in fattori primi, assurdo.
2. n `e composto: sia n = pq, dove p, q 2. I numeri p e q devono avere una
scomposizione in fattori primi, perche n `e il minimo che non ce lha, quindi
anche n deve averla, componendo in modo opportuno le scomposizioni di p
e q, assurdo.
In entrambi i casi abbiamo contraddetto lipotesi che ci sia un numero naturale che
non ha scomposizione in fattori primi, quindi abbiamo dimostrato la proposizione.
Esercizio 4.9. Sia s
1
, . . . , s
n
, dove n 2, una sequenza di interi dove s
1
`e positivo,
s
n
`e negativo e per ogni i, se 1 i < n, s
i+1
= s
i
1 o s
i+1
= s
i
+ 1. Si dimostri
che esiste i, con 1 < i < n, tale che s
i
= 0.
4.1.1 Il principio di induzione forte
Si pu`o anche dare la seguente formulazione del principio di induzione, che risulter`a
essere equivalente alla prima. Diciamo che una propriet`a P dei numeri naturali `e
progressiva se
(y < x.P(y)) P(x),
e scriviamo Prog(P) per indicare che P `e una propriet`a progressiva.
principio di dimostrazione per induzione forte: Se Prog(P),
allora n N.P(n).
Vediamo di dimostrare che il principio di induzione implica il principio di induzione
forte. A questo scopo, assumiamo che Prog(P). Lidea naturale sarebbe quella
di dimostrare per induzione che P(n) per ogni n N. In eetti si dimostra che
P(0) perche y < 0.P(y) e non c`e alcun elemento di N minore di 0, quindi per
lassunzione che Prog(P) abbiamo P(0). Per dimostrare il passo induttivo tuttavia,
dovremmo riuscire a dimostrare che P(n+1) assumendo che P(n), ma questo non
basta per applicare lipotesi Prog(P).
46
Allora seguiamo unaltra strategia: dimostriamo per induzione che n N.P
(n),
dove la nuova propriet`a P
(0). Supponiamo
ora (ipotesi induttiva) che P
(n + 1). Se P
abbiamo
y < n.P(y). Poiche Prog(P), P(n) `e vera e quindi y < n + 1.P(y), ma questo
equivale alla verit`a di P
1
, . . . ,
n
t
`e una dimostrazione di t.
Si pu`o associare ad ogni dimostrazione un numero naturale, detto la sua al-
tezza, nel modo seguente:
Una dimostrazione che consiste di ununica occorrenza di un assioma ha
altezza 0;
Una dimostrazione della forma
1
. . .
n
t
,
dove
1
, . . . ,
n
sono dimostrazioni di altezze rispettive k
1
, . . . , k
n
, ha altezza
maxk
1
, . . . , k
n
+ 1.
Vediamo ora alcuni esempi di sistemi formali:
Esempio 5.3. Uguaglianza di numeri naturali.
Operatori: come nellesempio 5.1.
Predicati: oltre a quelli dellesempio 5.1, una relazione = di categoria (N, N)F.
Regole di inferenza: oltre a quelle dellesempio , un assioma 0 = 0, e la regola
di inferenza
x = y
s(x) = s(y)
.
Esempio 5.4. Addizione di numeri naturali.
Operatori: oltre a quelli dellesempio 5.1, un operatore + di categoria (N, N)N.
Predicati: come nellesempio 5.3.
51
Regole di inferenza: oltre a quelle dellesempio 5.3, lassioma x + 0 = x e la
regola di inferenza
x +y = z
x +s(y) = s(z)
.
Si possono introdurre variazioni a questo esempio. Una possibilit`a `e quella di
sostituire la relazione = e loperatore + con una singola relazione A di categoria
(N, N, N)F con linterpretazione: la somma di e `e , con lassioma
A(x, 0, x) e la regola di inferenza
A(x, y, z)
A(s, s(y), s(z))
.
Esempio 5.5. Prodotto di numeri naturali.
Operatori: oltre a quelli dellesempio 5.4, un operatore di categoria (N, N)N.
Predicati: come nellesempio 5.4.
Regole di inferenza: un assioma x 0 = 0 e la regola di inferenza
x y = z x +z = u
x s(y) = u
.
Esempio 5.6. Numeri non primi.
Operatori: come nellesempio 5.5.
Predicati: oltre a quelli dellesempio 5.5, un predicato P di categoria (N)F.
Regole di inferenza: oltre a quelle dellesempio 5.5, la regola di inferenza
s(s(x)) s(s(y)) = z
P(z)
.
Esercizio 5.7. Scrivere esplicitamente una dimostrazione che stabilisce che
P(s(s(s(s(s(s(0)))))))
`e un teorema del sistema formale dellesempio 5.6.
Esercizio 5.8. (a) Costruire un sistema formale che abbia, tra gli altri, predicati
P e D di categoria (N)F tali che:
1. P(x) se e solo se x `e un numero naturale pari, e
2. D(x) se e solo se x `e un numero naturale dispari.
(b) Dimostrare che la equivalenze 1 e 2 sono vere, per induzione (Suggerimento:
per ciascuna delle due equivalenze, limplicazione da sinistra a destra deve essere
dimostrata per induzione sullaltezza delle derivazioni, mentre limplicazione da
destra a sinistra deve essere dimostrata per induzione sui numeri naturali).
52
Esercizio 5.9. (a) Costruire un sistema formale che abbia, tra gli altri, un predi-
cato M di categoria (N)F tale che:
1. M(x) se e solo se x rappresenta un numero naturale multiplo di 3.
(b) Dimostrare che lequivalenza 1 `e vera.
Esercizio 5.10. Si consideri il sistema formale con a, b : N, un operatore di
categoria (N, N)N che forma il termine xy a partire da termini x, y : N ed il
predicato unario S : (N)F, lunico assioma S(ab) e le regole
S(x)
S(axb)
S(x) S(y)
S(xy)
Dimostrare che se S(x) in questo sistema formale, allora x contiene lo stesso
numero di simboli a e b.
Vediamo ora una distinzione importante tra le regole di un sistema formale, pren-
dendo come esempio un sistema formale che ha operatori o di categoria N, di
categoria (N)N e 2 di categoria (N, N)N. I predicati sono O di categoria (N)F,
W di categoria (N)F e T di categoria (N)F. Abbiamo due assiomi: O(o) e
T(o 2 o) e le seguenti regole di inferenza:
O(x)
O((x))
O(x) O(y)
W(x 2 y)
T(x 2 y)
T((x) 2 (y))
Consideriamo prima la regola:
T(x 2 y)
T(((x)) 2 ((y))))
.
Si vede che questa regola si pu`o ottenere componendo le regole di inferenza del
sistema. Abbiamo qui un esempio di regola derivata. Invece, le seguenti
regole:
O(x)
T(x 2 x)
T(x 2 y)
W(x 2 y)
non si possono ottenere componendo le regole di inferenza del sistema, e tuttavia,
se usate, non permettono di ottenere nuovi teoremi rispetto a quelli che gi`a si
potevano dimostrare usando soltanto le regole di inferenza del sistema. Queste
regole sono esempi di regole ammissibili.
Proposizione 5.11. La regola
O(x)
T(x 2 x)
`e ammissibile.
53
Dimostrazione. Per induzione sullaltezza della dimostrazione della premessa della
regola.
Base: quando la premessa ha una dimostrazione di altezza 0, lunica possibilit`a `e
che questa sia un assioma, precisamente lassioma O(o). In questo caso allora la
conclusione `e semplicemente lassioma T(o 2 o).
Passo induttivo: se la premessa ha una dimostrazione di altezza > 0, allora deve
avere la forma
.
.
.
O(y)
O((y))
dove x = (y). Per ipotesi induttiva abbiamo che T(y 2y), quindi T((y) 2(y))
usando la regola di inferenza, e questo signica appunto T(x 2 x).
Esercizio 5.12. Dimostrare che la regola
T(x 2 y)
W(x 2 y)
`e ammissibile.
Esercizio 5.13. Per il sistema formale dellesercizio precedente:
(1) si interpreti a come ( e b come ). Si dimostri che, se S(x), allora linter-
pretazione di x `e una sequenza ben formata di parentesi.
(2) Dimostrare che la regola:
S(aaxbb)
S(axb)
non `e ammissibile in questo sistema formale.
54