La struttura dei numeri naturali
Linguaggi
5: La struttura dei numeri naturali
Claudio Sacerdoti Coen
<[email protected]>
Universitá di Bologna
29,?/10/2014
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Outline
1
La struttura dei numeri naturali
Claudio Sacerdoti Coen
La struttura dei numeri naturali
I numeri naturali
Wikipedia: “L’espressione “numeri naturali” spesso viene usata
sia per la sequenza di numeri interi positivi (1, 2, 3, 4, . . . ) sia
per quella dei numeri interi non negativi (0, 1, 2, 3, 4, . . . ).
Questi sono i primi numeri che si imparano da bambini e sono i
più semplici da comprendere.
Questa definizione fa uso dell’ellipsis “. . . ”
Analogamente, la nostra BNF per la logica proposizionale fa
uso di ellipsis:
F ::= ⊥ | > | A | B | . . . | ¬F | F ∧ F | F ∨ F | F ⇒ F
In entrambi i casi le due definizioni non sono formali.
Claudio Sacerdoti Coen
La struttura dei numeri naturali
I numeri naturali
I bimbi imparano i numeri naturali contando con le dita!
Possiamo semplicemente catturare questa idea con una BNF:
N ::= 0 | S N
0 rappresenta nessun dito
S (successore) rappresenta l’aggiunta di un dito
tale notazione si dice (con abuso di terminologia) in base 1
Esempio: 4 si indica con “S (S (S 0))”
Claudio Sacerdoti Coen
La struttura dei numeri naturali
I numeri naturali: assiomi di Peano
N ::= 0 | S N
La nostra BNF cattura i cinque assiomi di Peano:
1
0 è un numero naturale
2
se n è un numero naturale, anche S n lo è
3
iniettività di S: n 6= m implica S n 6= S m
4
non confusione: per ogni n si ha 0 6= S n
5
minimalità (o induzione): ogni insieme T tale che 0 ∈ T e
S n ∈ T ogni qual volta n ∈ T coincide con l’insieme dei
numeri naturali
Il quinto assioma altro non è che (un caso particolare del)
principio di induzione strutturale!
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Ricorsione e induzione strutturale sui numeri naturali
Questa struttura determina gli usuali principi di ricorsione e
induzione:
Principio di ricorsione strutturale:
f (0) = . . .
f (S n) = . . . f (n) . . .
Principio di induzione (strutturale):
Sia P un predicato. Supponiamo che P(0) e che per ogni n se
P(n) allora P(S n). Concludiamo che per ogni n vale P(n).
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Logica proposizionale: sintassi formale
Possiamo ora definire formalmente la sintassi della logica
proposizionale senza usare ellipsi:
F ::= ⊥ | > | AN | ¬F | F ∧ F | F ∨ F | F ⇒ F
dove N è un numero naturale (in base 1):
N ::= 0 | S N
Le definizioni date in precedenza che distinguevano i casi A e
B ora debbono distinguere fra i casi An e Am per n, m distinti.
Esercizio: definire per ricorsione strutturale la funzione che dati
n e m restituisce true se n = m e false se n 6= m.
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Ricorsione e induzione strutturale sui numeri naturali
Esercizio: definire la somma di due interi per ricorsione
strutturale.
Esercizio: provare a dimostrare per induzione strutturale la
proprietà commutativa della somma
1
Perchè la dimostrazione non viene?
2
Come possiamo far venire la dimostrazione?
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Predicati progressivi e recessivi
Esercizio: provare a dimostrare per induzione strutturale che
per tutti gli n, se n ≥ 4 allora n ≥ 2 usando solo il fatto che
0 6≥ 4 e che se n ≥ m allora S n ≥ m per ogni m.
Attenzione: il predicato da usare nella ricorsione è “se n ≥ 4
allora n ≥ 2”
Perchè la dimostrazione non viene?
Esercizio: provare a dimostrare che per tutti gli n se n ≤ 4
allora n ≥ 0 aggiungendo il fatto che se S n ≤ m allora n ≤ m
per ogni n.
Perchè la dimostrazione viene?
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Predicati progressivi e recessivi
Definizione: un predicato P è progressivo quando vale per una
formula ogni qual volta esso vale per tutte le sottoformule
immediate.
Per i naturali:
P progressivo se quando vale P(n) allora vale P(S n).
Nota: i predicati progressivi sono quelli che si possono
dimostrare valere per ogni n per induzione strutturale.
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Predicati progressivi e recessivi
Definizione: un predicato R è recessivo quando se vale per una
formula allora esso vale per tutte le sottoformule immediate.
Per i naturali:
R recessivo se quando vale R(S n) allora vale R(n).
Nota: i predicati recessivi NON si possono dimostrare valere
per ogni n per induzione strutturale.
Tuttavia sono utili nelle dimostrazioni per induzione.
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Predicati progressivi e recessivi
Teorema:
Il predicato costante P(n) = > è sia progressivo che
recessivo
Il predicato costante P(n) = ⊥ è sia progressivo che
recessivo
Se P è progressivo, ¬P è recessivo e viceversa.
La congiunzione di predicati progressivi (recessivi) è
ancora progressiva (recessiva)
La disgiunzione di predicati progressivi (recessivi) è
ancora progressiva (recessiva)
R ⇒ P è progressivo se R è recessivo e P è progressivo
P ⇒ R è recessivo se R è recessivo e P è progressivo
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Predicati progressivi e recessivi
Quando un caso di una formula ha più sottoformule immediate,
se al fine della dimostrazione servono solo alcune ipotesi
induttive, allora è possibile chiedere la recessività delle
premesse solo sulle sottoformule corrispondenti alle ipotesi che
servono.
Esercizio: dimostrare che ogni formula contradittoria F scritta
usando solo ∧, ⊥ e > contiene almeno un ⊥.
Esercizio: dimostrare che per ogni tautologia F scritta senza
usare negazioni e implicazioni e per ogni variabile
proposizionale A, si ha F [>/A]
Esercizio: perchè il precedente enunciato non è un teorema
quando si ammettono anche negazioni in F ? Trovare un
controesempio e mostrare dove la prova per induzione fallisce.
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Cambio di strutture
Quando la vostra ricorsione non è strutturale, spesso è perchè
avete sbagliato struttura.
Esempio: definire la funzione ricorsiva (non strutturale) che
calcola il logaritmo intero in base 2 di un numero naturale n.
Convincersi che una formulazione ricorsiva strutturale non è
banale.
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Cambio di strutture
Introduciamo i numeri naturali in base 2:
N ::= N0|N1|
Esempio: il numero 01101 rappresenta il numero 14.
La divisione per 2 si definisce con una funzione ricorsiva
strutturale banale:
/2 = N0/2 = N
N1/2 = N
Idem per is zero:
is zero() = true
is zero(N0) = is zero(N)
is zero(N1) = false
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Cambio di strutture
Infine, il logaritmo intero in base 2 di n si definisce
semplicemente come log0 (n) dove logk (n) è la seguente
funzione ricorsiva strutturale:
logk ()
logk (N0)
is zero(N0)
is zero(N1)
=
=
=
=
?
if is zero(N) then? else logk+1 (N)
is zero(N)
if is zero(N) then kelse logk+1 (N)
Claudio Sacerdoti Coen
La struttura dei numeri naturali
Conclusioni
Anche i numeri naturali hanno una loro struttura ricorsiva
Grazie ad essa possiamo definire la sintassi delle formule
in maniera finitaria (senza usare ellipsis)
Siamo pronti per definire in Matita la nostra sintassi!
Dimostrare asserzioni ipotetiche (“se . . . allora . . . ”) per
induzione strutturale richiede particolare attenzione
Se una funzione non è ricorsiva strutturale, può essere che
stiamo usando la struttura sbagliata
Claudio Sacerdoti Coen