You are on page 1of 212

Proof Theory

Fabio Strocco

22 maggio 2011

Indice

1 Logica classica

3

1.1 Preliminari

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

3

1.2 Sintassi

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

1.3 Semantica

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

1.4 Sistemi di deduzione

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

1.4.1 Deduzione naturale

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

1.4.2 Calcolo dei sequenti .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

33

2 Logica intuizionista

 

52

2.1 Preliminari

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

53

2.2 Sintassi

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

56

2.3 Sistemi di deduzione

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

57

2.3.1 Deduzione naturale

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

58

2.3.2 Calcolo dei sequenti .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

73

2.4 Semantica

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

88

2.4.1 Semantica alla Heyting

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

88

2.4.2 Semantica alla Kripke

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

91

2.5 Relazione tra logica classica e logica intuizionista

.

.

.

.

.

.

.

97

3 Logica e linguaggi di programmazione

 

101

3.1 λ-calcolo

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 101

3.1.1 Sintassi

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 101

3.1.2 Semantica operazionale .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 104

3.1.3 Sistema di tipi

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 110

3.2 Isomorfismo di Curry-Howard

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 113

3.2.1 Definizione e propriet`a

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 113

3.2.2 Normalizzazione forte .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 131

3.3 Sistema F

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 137

3.3.1

Logiche di ordine superiore .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 137

3.3.2

PCF

3.4 .

λ-calcolo al secondo ordine .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 141

. 143

i

 

3.5

Type inference .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 145

 

3.5.1 Unificazione

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 145

3.5.2 Ricostruzione di tipo

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 149

3.5.3 ML .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 153

4

Logica lineare

 

159

4.1 Proof Net

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 169

4.2 Semantica

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 177

4.3 Logica lineare intuizionista

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 179

ICC

4.4 .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 181

 

4.4.1

SLL

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 183

4.4.2

ESLL e isomorfismo

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 197

4.4.3

NESLL e isomorfismo

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

. 205

ii

Introduzione

La logica, inizialmente nata come branca della filosofia e successivamente divenuta branca della matematica, `e molto utilizzata in materie scientifiche come la matematica e l’informatica. Questo documento `e incentrato sulla proof theory, ossia teoria che studia come costruire dimostrazioni in maniera automatica, che `e la parte della logica che si occupa dello studio formale delle dimostrazioni.

Partiamo dal presupposto che esistono pi`u logiche, ciascuna delle qua-

li modella frasi o aspetti della realt`a tramite formule e si adatta meglio a determinati modi di pensare della mente umana. La scelta della logica da utilizzare dipende dall’uso che se ne vuole fare.

Il documento inizier`a con l’illustrare la logica classica, che dovrebbe almeno

in parte essere gi`a nota al lettore. Un esempio di formula logica `e A or not A che viene considerata in logica classica una tautologia, ossia una formula sempre vera. Di fatto questa formula `e vera indipendentemente dal fatto che l’asserzione A sia vera o falsa. Successivamente verr`a mostrata la logica intuizionista dove invece formule come la precedente sono vere solo se `e possibile esibirne una dimostrazione. L’ultima logica che verr`a mostrata `e la logica lineare, che si basa sul con- cetto di risorsa ed `e per questo molto pi`u vicina all’informatica. In generale un sistema logico `e costituito da regole definite in maniera precisa e che permettono di fare dimostrazioni in maniera molto meccanica. Infatti si tratter`a il legame tra i linguaggi di programmazione e la logica mo- strando come si possa sfruttare il sistema di tipi di un linguaggio di program- mazione per effettuare dimostrazioni. Il linguaggio preso in considerazione sar`a il lamba-calcolo tipato di Curry-Howard.

Per ogni sistema logico presentato, si dimostreranno delle propriet`a quali correttezza (tutte le regole di un sistema sono corrette) e completezza (per ogni formula con valore di verit`a vero `e sempre possibile esibire una dimostrazione).

1

Capitolo 1 Logica classica

La logica proposizionale classica `e una logica in cui le formule sono costituite da variabili proposizionali connesse tra loro tramite gli usuali connettivi logici (congiunzione, disgiunzione, ecc.). Come ogni sistema logico, la logica proposizionale `e caratterizzata da una sintassi, da una semantica che interpreta il valore di verit`a delle formule ed eventualmente da un insieme di regole che permettono di effettuare dimo- strazioni. Notare che in logica proposizionale non esistono predicati, funzioni e quan- tificatori ma solo variabili che possono avere valore di verit`a vero oppure falso.

1.1

Preliminari

Per dimostrare le propriet`a di un sistema logico, verr`a utilizzata spesso nel testo la tecnica della dimostrazione per induzione. Questa tecnica sfrutta il principio di induzione.

Esistono molti principi di induzione. Quello classico `e detto principio induzione ordinaria o semplicemente induzione o induzione sui numeri naturali. Ricordando che l’insieme N `e l’insieme che contiene la costante 0 e per ogni suo elemento n la funzione s(n) detta funzione successore 1 , il primo principio di induzione si pu`o formalizzare nel modo seguente Sia p(x) un predicato qualsiasi, allora

p(0) (p(n) p(s(n))) ⇒ ∀n p(n)

1 s(n) ha lo stesso significato della notazione pi`u familiare n + 1

3

Questa formula significa che se `e vero p(0) e per ogni p(n) `e vero p(n + 1)

allora p `e vero per ogni naturale. Di fatto l’implicazione ’se p(n) `e vero allora

e vero p(n + 1)’ indica che anche p(n + 2) `e vero e quindi anche per p(n + 3)

e cos`ı via. Unendo il fatto che p(0) `e assunto vero `e chiaro che se queste due premesse sono soddisfatte la propriet`a p vale per tutti i numeri naturali.

L’altro principio di induzione `e detto principio di induzione completa. Ricordiamo che una relazione di ordine parziale `e una relazione binaria su un insieme S riflessiva, antisimmetrica e transitiva, ossia una relazione x y con x S e y S tale che

x x

x

y y z x z

x

y y x x = y

Data una relazione d’ordine parziale , il principio di induzione completa generalizzato su un insieme di elementi S qualsiasi `e il seguente

(n (i (i n i

= n p(i)) p(n))) ⇒ ∀n p(n)

Si pu`o dimostrare che l’induzione completa `e equivalente a quella ordina- ria. Il vantaggio di questo principio `e per`o che si possono facilmente effettuare dimostrazioni basate su questa induzione anche per elementi non numerici, purch´e si stabilisca una relazione d’ordine parziale tra tali elementi. Le dimostrazioni fatte in questo documento, sfruttano solitamente questo principio di induzione utilizzando come elementi (dell’insieme S) termini di un linguaggio, alberi e comunque in generale elementi che rappresentano una qualche struttura (sintattica, un albero, ecc.). Questo tipo particolare di in- duzione viene detta induzione strutturale. Definiamo ad esempio il seguente semplice linguaggio sull’alfabeto Σ = {a, b, +, −}

e

::=

e + e

e

a

b

|

e | |

Sia NPlus(t) il numero di simboli + presenti nel termine t (che fa parte del linguaggio appena definito) e Dim(t) il numero di simboli presenti nel termine t (omettiamo la definizione formale di queste funzioni per semplicit`a). Supponiamo di voler dimostrare che il numero di simboli + presenti in un termine del linguaggio L appena definito `e sempre minore del numero di simboli presenti nel termine, cio`e che

t L NPlus(t) < Dim(t)

4

Per dimostrarlo si pu`o sfruttare il principio di induzione completa sostituen- do al predicato p(t) la formula NPlus(t) < Dim(t) ottenendo dunque la seguente formula

(t L (s (s t s

= t NPlus(s) < Dim(s))))

NPlus(t) < Dim(t)) ⇒ ∀t L NPlus(t) < Dim(t)

Quello che per`o non `e chiaro `e come la relazione d’ordine viene definita. Solitamente viene scelta la relazione tale che s t solo se s `e un sottotermine di t, ossia `e un termine pi`u piccolo nel senso che ha un numero minore di caratteri. Dunque si ha che

´

s t

⇐⇒ Dim(s) < Dim(t) s = t

E facile dimostrare che la relazione appena definita `e un ordine parziale. Dimostrando la premessa dell’implicazione principale del principio di indu- zione completa `e verificata si ricava che anche il conseguente lo `e ed il con- seguente `e proprio ci`o che si vuole dimostrare. Effettuare una dimostrazione per induzione significa proprio dimostrare la premessa dell’implicazione principale del principio di induzione. Vogliamo dunque dimostrare che

t L (s (s t s

= t NPlus(s) < Dim(s)) NPlus(t) < Dim(t))

Questo si pu`o dimostrare per induzione strutturale sulla sintassi del linguag- gio dato, considerando che un termine appartenente ad L deve essere sintatti- camente corretto e per esserlo deve essere in una delle 4 forme descritte dalla grammatica. Se si dimostra l’implicazione appena scritta per ogni termine nelle 4 forme, allora si `e dimostrata per tutti i termini del linguaggio.

a: si tratta di un termine con un solo carattere, per cui non ha sot- totermini e dunque basta dimostrare che NPlus(a) < Dim(a) perch´e

s (s t s

= t NPlus(s) < Dim(t)) `e sempre vera in quando la

premessa di questa implicazione `e sempre falsa. Siccome Nplus(a) = 0 e Dim(a) = 1 il teorema `e dimostrato per a. Il caso (come questo) in cui non ci sono sottotermini o comunque ele- menti pi`u piccoli secondo l’ordinamento dato si chiama caso base dell’induzione.

b: anche questo `e un caso base non esistendo sottotermini per b. Anche qu`ı si ha che NPlus(b) = 0 e Dim(b) = 1.

5

e 1 + e 2 : dove e 1 ed e 2 sono termini qualsiasi del linguaggio. In questo caso e 1 ed e 2 sono sottotermini di e 1 +e 2 dato che quest’ultimo termine

`e composto dai primi 2. Quindi non si `e nel caso base ma nel caso induttivo. Quello che occorre dimostrare `e dunque che

s (s e 1 +e 2 s

= e 1 +e 2 NPlus(s) < Dim(s)) NPlus(e 1 +e 2 ) < Dim(e 1 +e 2 )

Affinch´e questa implicazione sia vera, quando la premessa (s (s

= e 1 +e 2 NPlus(s) < Dim(s))) `e vera deve esserlo anche

la conseguenza (NPlus(s) < Dim(s)). Se la premessa `e vera, si ha che

per ogni sottotermine s di e 1 + e 2 `e vero NPlus(s) < Dim(s). Questa

ipotesi viene detta ipotesi induttiva e viene sfruttata per concludere

la dimostrazione. Infatti, essendo NPlus(s) < Dim(s) vero per tutti i

sottotermini di e 1 + e 2 lo `e sicuramente anche per e 1 e per e 2 , ossia

e 1 +e 2 s

NPlus(e 1 ) < Dim(e 1 ) NPlus(e 2 ) < Dim(e 2 )

´

E noto che

NPlus(e 1 + e 2 ) = NPlus(e 1 ) + NPlus(e 2 ) + 1

Dim(e 1 + e 2 ) = Dim(e 1 ) + Dim(e 2 ) + 1

E

quindi si pu`o concludere che

NPlus(e 1 +e 2 ) = NPlus(e 1 )+NPlus(e 2 )+1 < Dim(e 1 +e 2 ) = Dim(e 1 )+Dim(e 2 )+1

Perch´e NPlus(e 1 ) < Dim(e 1 ) e NPlus(e 2 ) < Dim(e 2 ) per cui la prima somma contiene elementi che sono tutti minori della seconda (eccetto 1 che `e uguale in entrambe le formule).

Analogamente al pre-

cedente caso per ipotesi induttiva si ha che NPlus(e 1 ) < Dim(e 1 ) e

NPlus(e 2 ) < Dim(e 2 ) per cui

e 1 e 2 :

anche questo `e un passo induttivo.

NPlus(e 1 e 2 ) = NPlus(e 1 )+NPlus(e 2 ) < Dim(e 1 )+Dim(e 2 )+1 = Dim(e 1 e 2 )

Le dimostrazioni per induzione trattate su questo documento hanno sem- pre approssimativamente questo stile e generalmente un elemento precede un altro nell’ordinamento quando questo `e costituito da un numero minore di elementi. Il principio di induzione verr`a anche utilizzato per effettuare definizioni di

6

funzioni o altri elementi. Ad esempio la funzione precedente Dim(t) poteva essere definita nel modo seguente

Dim(a) = 1 Dim(b) = 1

Dim(e 1 + e 2 ) = Dim(e 1 ) + Dim(e 2 ) + 1

Dim(e 1 e 2 ) = Dim(e 1 ) +

Dim(e 2 ) + 1

Questa definizione `e valida perch´e si pu`o sfruttare l’ipotesi induttiva sui sottotermini di un termine. Quando si utilizza l’ipotesi induttiva (sia nelle definizioni che nelle dimostra- zioni) occorre accertarsi che gli elementi su cui si applica precedano l’elemen- to preso in esame nell’ordinamento dato. Ad esempio applicare l’ipotesi su termini pi`u grandi di un termine t mentre si dimostra una propriet`a per t sarebbe un errore.

Dimostrazioni come quella appena effettuata sono dette per induzione strutturale perch´e l’induzione `e guidata dalla struttura degli elementi (in questo caso dei termini). Per ricavare le ipotesi induttive ad esempio viene fatta un’analisi sulla struttura dei termini e si individuano i sottotermini per cui `e necessario applicare l’ipotesi induttiva. Nell’induzione strutturale, la tecnica di dimostrazione consiste nel suddivi- dere tutti gli elementi dell’insieme scelto (in questo caso i termini) in pi`u gruppi in base alla loro struttura (ad esempio `e stato scelto il gruppo degli infiniti termini con la struttura e 1 +e 2 , il gruppo costituito dall’unico termine a, ecc.) e per ciascun gruppo (o meglio per ciascun caso) `e stato dimostrato che la propriet`a vale, sfruttando le ipotesi induttive per quegli elementi che hanno predecessori nell’ordinamento scelto. Affinch´e una dimostrazione per induzione strutturale sia valida, occorre che l’unione di tutti i gruppi di elementi formati costituisca l’intero insieme di elementi scelto. Ad esempio se non si considera il caso e 1 e 2 nella dimo- strazione, quest’ultima non `e completa 2 (a meno che questo caso non si dia per scontato).

Il documento `e strutturato nel seguente modo

Capitolo 1: verr`a presentata la logica classica e le sue propriet`a, con- siderando tale logica un punto di partenza per lo studio delle altre logiche.

2 Si noti che la scelta esaustiva dei casi pu`o essere pi`u complicata di quella da fare in questo esempio

7

Capitolo 2: verr`a modificata la logica classica per ottenere la logica intuizionista. Verr`a anche mostrato il legame tra logica classica e logica intuizionista.

Capitolo 3: partendo dalla logica intuizionista, sar`a mostrato il lega- me che vi `e tra questa ed il lambda-calcolo. Verrano in seguito presen- tati altri linguaggi di programmazione funzionali, la logica intuizionista sar`a estesa con i predicati in modo tale da mostrare nuovamente la rela- zione tra logica e lambda-calcolo, ma utilizzando la logica intuizionista predicativa.

Capitolo 4: verr`a presentata la logica lineare ed in particolare sar`a messa in relazione la logica lineare intuizionista con il lambda-calcolo lineare, per mostrare come sia possibile ottenere un linguaggio che permetta di implementare tutti e soli i programmi con complessit`a polinomiale.

1.2

Sintassi

La sintassi di una formula Φ della logica proposizionale classica `e definita nel modo seguente.

Φ

::=

A

|

V ariabile proposizionale

 

Φ

Φ | Congiunzione di formule

Φ

Φ

| Disgiunzione di formule

Φ

Φ

|

Implicazione

¬Φ

Negazione

La negazione ha precedenza sulla congiunzione che ha precedenza sul-

Quindi la

la disgiunzione che a sua volta ha precedenza sull’implicazione. formula

¬Φ Ψ ϕ ϕ

´

E equivalente alla formula

(((¬Φ) Ψ) ϕ) ϕ

Inoltre va detto che la congiunzione e la disgiunzione sono associative a sinistra mentre l’implicazione `e associativa a destra. Ossia

Φ Ψ ϕ = (Φ Ψ) ϕ

Φ Ψ ϕ = (Φ Ψ) ϕ

8

Φ Ψ ϕ = Φ (ϕ)

Nella sintassi `e stata omessa la biimplicazione, ma questa `e comunque ricavabile nel modo seguente

Φ ⇐⇒

Ψ = (Φ Ψ) Φ)

Nel seguito denoteremo con le lettere maiuscole dell’alfabeto (in ordine A, B, C, ecc.) le variabili proposizionali e con le lettere greche (tipicamente Φ, Ψ, ϕ, ecc.) le formule.

L’insieme infinito di tutte le variabili proposizionali verr`a indicato con X . Occorrono ora alcune definizioni sintattiche.

Definizione 1. L’insieme di tutte le formule proposizionali `e l’insieme F composto da tutte le variabili proposizionali e per ogni coppia di formule Φ, Ψ se Φ, Ψ ∈ F allora Φ Ψ ∈ F , Φ Ψ ∈ F , Φ Ψ ∈ F e ¬Φ ∈ F .

Occorre ora definire l’insieme delle variabili libere di una formula. Questo verr`a definito per induzione strutturale sulla sintassi delle formule proposi- zionale.

Definizione 2. L’insieme fv(Φ) delle variabili libere di una formula Φ `e definito come

fv(A) = {A} fvΨ) = fvΨ) = fvΨ) = fv(Φ) fv(Ψ) fv(¬Φ) = fv(Φ)

Ad esempio, data la formula Φ = AB A∨¬C, l’insieme delle variabili libere `e il seguente

fv(Φ) = fv(AB)fv(A∨¬C) = fv(A)fv(B)fv(A)fv(¬C) = {A, B, C}

Definizione 3. La sostituzione σ `e una funzione σ : X → F tale che σ(A) = A tranne che per un numero finito di variabili proposizionali.

Una sostituzione σ(A) = Φ indica di sostituire alla variabile A la formula Φ. In generale σ(A) = A equivale ad affermare che non occorre applicare

alcuna sostituzione alla variabile A, perch´e la sua sostituzione lascia invariata la variabile. Tuttavia, esiste un numero finito di variabili per cui questo non vale, ossia per cui a tali variabili occorre applicare una sostituzione.

In generale, la sostituzione σ tale che σ(A) = A tranne che per B 1 , dove σ(B i ) = Φ i pu`o essere indicata con

, B n

σ

= [Φ 1 /B 1 ,

.

, Φ n /B n ]

La sostituzione vuota si indica con [] e corrisponde alla sostituzione σ tale che σ(A) = A per ogni variabile A ∈ X .

9

Definizione 4. Sia σ una sostituzione e Φ una formula, allora l’applicazione della sostituzione σ alla formula Φ, indicata con Φσ `e definita nel modo

seguente = A

se σ(A) = A se Φσ = Ψ e Ψσ = ϕ se Φσ = Ψ e Ψσ = ϕ se Φσ = Ψ e Ψσ = ϕ se Φσ = Ψ

Ψ)σ = Ψ ϕ

Ψ)σ = Ψ ϕ Ψ)σ = Ψ ϕ (¬Φ)σ = ¬Ψ

L’applicazione della sostituzione σ ad una formula Φ `e dunque una nuova formula proposizionale dove tutte le variabili A che occorrono in Φ vengono sostituite con σ(A). Sia data ad esempio la formula Φ = A B C A e la sostituzione σ = [B/A, A C/B], si ha che

Φσ = (A B C)σ = (A B)σ

=

= B (A C) C

B

Notare che le sostituzioni vengono applicate contemporaneamente, ossia ad ogni variabile nello stesso istante. Si si applicasse la sostituzione B/A a tutti i termini e poi successivamente la seconda sostituzione a tutti i termini della formula ottenuta con la prima sostituzione il risultato sarebbe diverso.

´

E anche possibile utilizzare la composizione di sostituzioni dove Φσ σ equivale a (Φσ)σ che `e la formula ottenuta applicando la sostituzione σ alla formula ottenuta applicando la sostituzione σ a Φ.

1.3

Semantica

La

semantica di una logica `e uno strumento per dare un significato alle formu-

le,

mostrando dunque cosa rappresenta ogni formula e quindi come interpre-

tarla. Mentre la sintassi descrive solo come costruire formule, la semantica mostra come interpretarle. La semantica di una formula in logica classica associa ad ogni formula dei valori di verit`a, cio`e valori a scelta tra ’vero’ o

’falso’. Data una formula, il suo valore di verit`a dipende dai valori di verit`a delle singole variabili proposizionali. Ad esempio la formula A B ha valore

di verit`a ’vero’ solo le variabili proposizionali A e B hanno valore di verit`a

’vero’. In tutti gli altri casi la formula ha valore di verit`a ’falso’. Il valore di verit`a di una formula, dipende dunque dall’assegnazione dei valori alle variabili libere della formula stessa. Definiamo innanzitutto l’insieme B come l’insieme di tutti i possibili valori

10

di verit`a di una formula, ossia B = { , ⊥}, dove indica il valore di verit`a ’vero’ e il valore di verit`a ’falso’.

Definizione 5. Un assegnazione, o interpretazione, ρ `e una funzione ρ :

X → B.

Ad esempio, dato un assegnazione, ρ(A) = significa che la variabile proposizionale ha valore di verit`a ’vero’. Si definiscono ora le seguenti funzioni:

: B 2 B : B 2 B : B 2 B ¬ : B B

i cui valori sono espressi tramite le seguenti tabelle di verit`a, dove il primo argomento delle funzioni `e indicato dalle colonne e il secondo dalle righe.

∧ ⊥ ∨ ⊥ ⇒ ⊥ ¬ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥
¬

La semantica [[Φ]] ρ di una formula logica Φ sotto un assegnazione ρ (cio`e il valore di verit`a di una formula Φ dato un assegnazione ρ, ossia stabiliti i valori di verit`a delle variabili proposizionali all’interno della formula), viene definita per induzione strutturale nel modo seguente

[[A]] ρ = ρ(A)

[[Φ Ψ]] ρ = [[Φ]] ρ [[Ψ]] ρ

[[Φ Ψ]] ρ = [[Φ]] ρ [[Ψ]] ρ [[Φ Ψ]] ρ = [[Φ]] ρ [[Ψ]] ρ [[¬Φ]] ρ = ¬[[Φ]] ρ

Si consideri ad esempio una formula Φ = AB AB e un assegnazione ρ t.c. ρ(A) = , ρ(B) = la semantica [[Φ]] ρ viene calcolata nel seguente modo

[[Φ]] ρ = [[A B]] ρ [[A B]] ρ = ([[A]] ρ [[B]] ρ )([[A]] ρ [[B]] ρ ) =

( ∧⊥)( ∨⊥) = ⊥⇒ =

11

Definizione 6. Data una formula Φ ed un assegnazione ρ, ρ `e un modello

di Φ, oppure ρ soddisfa Φ se e solo se

[[Φ]] ρ =

che si indica con ρ |= Φ.

In altre parole ρ |= Φ `e un modo alternativo di indicare [[Φ]] ρ = e si- gnifica che la formula Φ ha valore di verit`a ’vero’ sotto l’assegnazione ρ.

Definizione 7. Dato un insieme di formule Γ si dice che Γ soddisfa Φ, indicato con Γ |= Φ se e solo se ogni assegnazione che soddisfa tutte le formule

in Γ `e un modello per Φ, cio`e

Γ |= Φ SSE ρ

(Ψ Γ

ρ |= Ψ) ρ |= Φ

Le formule della logica proposizionale classica possono essere classificate in base alla loro semantica sotto determinati assegnamenti in

Valide: ρ ρ |= Φ, ossia una formula Φ `e valida se `e vera sotto qualunque assegnazione delle variabili.

ρ |= Φ, ossia una formula Φ `e soddisfacibile se `e

Soddisfacibili: ρ

vera per qualche assegnazione delle variabili.

Insoddisfacibili: ρ

ρ |= Φ, ossia una formula Φ `e insoddisfacibile

se non `e falsa per qualunque assegnazione delle variabili.

Esiste un teorema che torner`a utile in seguito che lega l’assegnazione con la sostituzione.

Teorema 1. Data una sostituzione σ e un’assegnazione ρ, sia σρ un’asse- gnazione tale che σρ(A) = [[σ(A)]] ρ , allora

σ, ρ

[[Φσ]] ρ = [[Φ]] σρ

Dimostrazione. Per induzione sulle regole della semantica.

Φ = A: [[A]] ρ = ρ(A) e quindi per definizione di σρ si ha che

[[]] ρ = [[σ(A)]] ρ = σρ(A) = [[A]] σρ

La prima uguaglianza deriva dalla definizione di applicazione di una sostituzione ad una formula, la seconda dalla definizione di σρ e l’ultima dalla definizione di [[A]] ρ .

12

Φ = Ψ ϕ:

si ha che

[[ϕ)σ]] ρ = [[Ψσ ϕσ]] ρ = [[Ψσ]] ρ [[ϕσ]] ρ = [[Ψ]] σρ [[ϕ]] σρ = [[Ψ ϕ]] σρ

La prima uguaglianza deriva dalla definizione di applicazione di una

sostituzione ad una formula, la seconda dalla definizione di [[Ψ ϕ]] ρ ,

la terza dall’ipotesi induttiva su Ψ e ϕ e l’ultima nuovamente dalla

definizione di [[Ψ ϕ]] ρ .

Φ = ¬Ψ: si ha che

[[(¬Ψ)σ]] ρ = [[¬Ψσ]] ρ = ¬[[Ψσ]] ρ = ¬[[Ψ]] σρ = [[¬Φ]] σρ

La prima uguaglianza deriva dalla definizione di applicazione di una

sostituzione ad una formula, la seconda dalla definizione di [[¬Ψ]] ρ , la terza dall’ipotesi induttiva su Ψ e l’ultima nuovamente dalla definizione

di [[¬Ψ]] ρ .

Gli altri casi sono del tutto analoghi al secondo punto.

Ora che `e stata fornita la semantica delle formule, si pu`o verificare facil- mente che la congiunzione e la negazione sono sufficienti per esprimere tutte le formule logiche. Infatti l’implicazione e la disgiunzione si possono espri- mere utilizzando la congiunzione e la negazione. Dal teorema di De Morgan abbiamo infatti che, date due formule qualsiasi Φ e Ψ e un qualsiasi assegnazione ρ

formule qualsiasi Φ e Ψ e un qualsiasi assegnazione ρ [[ ¬ (Φ ∧ Ψ) ]]

[[¬Ψ)]] ρ = [[¬Φ ∨ ¬Ψ]] ρ

Per cui

[[Φ Ψ]] ρ = [[¬(¬Φ ∧ ¬Ψ)]] ρ

[[Φ Ψ]] ρ = [[Φ ∨ ¬Ψ]] ρ = [[¬(¬Φ Ψ)]] ρ

Questo risultato si pu`o verificare facilmente calcolando le tabelle di verit`a di queste due ultime formule. Inoltre, si ricordi che

[[Φ ⇐⇒

Ψ]] ρ = [[Ψ) Φ)]] ρ

In realt`a, `e sufficiente un solo connettivo per esprimerli tutti quanti. Si tratta del connettivo ’nand’ (|), dove Φ|Ψ = ¬Ψ). Infatti si ha che

¬Φ = Φ|Φ

13

Infatti se la formula `e falsa, in nand con se stessa ha valore di verit`a ve- ro, altrimenti falso. La congiunzione pu`o essere dunque espressa tramite la seguente uguaglianza

Φ Ψ = ¬|Ψ) = (Φ|Ψ)||Ψ)

Avendo a disposizione la congiunzione e la negazione possiamo dunque espri- mere tutti i connettivi. Analogamente esiste il connettivo ’nor’ () tale che Φ Ψ = ¬Ψ). Anche questo pu`o esprimere tutti i connettivi, infatti

¬Φ = Φ Φ

Φ Ψ = ¬(¬Φ ∨ ¬Ψ) = (Φ Φ)

Naturalmente esistono altri modi per dimostrare questi ultimi risultati.

Ψ)

˙

Per completezza, `e necessario citare anche il connettivo ’xor’ ( ), ossia di or

esclusivo tale che Φ Ψ `e vero solo se esattamente una delle due formule `e

vera. Questo connettivo pu`o comunque essere ricavato tramite la seguente ugua- glianza

Φ Ψ = (Φ ∧ ¬Ψ) ∧ ¬Φ)

Corollario 1.

˙

˙

Φ

Φ valida σ, ρ

[[Φ σ ]] ρ =

Dimostrazione. Per ogni σρ, [[Φ]] σρ = e per il teorema 1 [[Φ σ ]] ρ =

σ ρ = e per il teorema 1 [[ Φ σ ]] ρ = 1.4 Sistemi

1.4 Sistemi di deduzione

Con la semantica della logica proposizionale, `e possibile provare che una for- mula `e valida, oppure soddisfacibile o insoddisfacibile. Per dimostrare che una formula `e soddisfacibile, basta trovare un modello per tale formula. Provare che una formula `e valida (rispettivamente insoddisfacibile) utilizzan- do la semantica, richiede invece di verificare che ogni assegnazione `e (rispet- tivamente non `e) un modello per la formula. Ma il numero di assegnamenti `e esponenziale rispetto al numero di variabili libere di una formula cosicch´e la verifica della validit`a o insoddisfacibilit`a di una formula `e molto costosa e poco leggibile. Per verificare se una formula `e valida, la si pu`o considerare un teorema e cos`ı facendo si pu`o trovare una dimostrazione. I sistemi che permettono di

14

ricavare dimostrazioni di validit`a di una formula sono detti sistemi di de- duzione.

´

E

importante verificare se un sistema di deduzione ha o meno le propriet`a

di

correttezza (ogni formula dimostrabile `e valida secondo la semantica del

sistema logico) e di completezza (ogni formula valida secondo la semantica pu`o essere dimostrata). Sfortunatamente per logiche espressive come quelle

di ordine superiore al primo non `e possibile avere sistemi di deduzione che

godono di entrambe le propriet`a. Questo risultato deriva dal teorema di in- completezza di G¨odel.

1.4.1 Deduzione naturale

Come in molti sistemi di deduzione, il sistema di deduzione naturale `e co- stituito da regole di inferenza, o regole di deduzione, ossia regole nella forma

P 1

. P n (N)

C

che significa: se le premesse P 1

durre che la conseguenza C `e derivabile. N `e il nome della regola.

P n sono tutte derivabili, allora si pu`o de-

Le premesse delle regole mostrate nella figura sotto sono dimostrazioni

di formule, mentre le conseguenze sono formule. Una regola pu`o essere ap-

plicata se tutte le formule nelle premesse possono essere dimostrate. Se le premesse di una regola sono vere si pu`o concludere, o meglio derivare, la formula nel conseguente della regola stessa.

Data una formula logica dunque, questa `e valida solo se si possono dimostrare

le premesse di una qualche regola che contiene la formula come conclusione.

Le premesse vengono dimostrate applicando per ciascuna formula ricorsiva- mente delle regole, che generano altre premesse ecc. Una derivazione `e un grafo dove ogni vertice v `e una formula e i vertici

adiacenti sono le formule delle premesse di una regola che pu`o essere applica-

ta per v, ossia che permette di concludere v, oppure un’ipotesi da scaricare

(questo ultimo punto verr`a trattato in seguito). Le regole della deduzione naturale vengono suddivise in introduzioni (la conseguenza `e una formula che `e formata con un connettivo che lega una o pi`u formule presenti nelle premesse) ed eliminazioni (la conseguenza `e una formula pi`u piccola che contiene meno connettivi delle premesse).

15

La regola di introduzione dell’and (I) ad esempio, richiede nelle pre-

·

Φ · e una per Ψ, ossia

che si `e dimostrato che Φ e Ψ sono formule valide (qundi sempre vere, per qualunque assegnazione delle variabili). Allora si pu`o derivare che Φ Ψ `e valido. D’altronde se Φ e Ψ lo sono, la congiunzione porta sempre a valore di verit`a vero.

messe che esista una derivazione per Φ, indicato con

·

Introduzione

· ·

· ·

· ·

Ψ (I) Φ Ψ

Φ

[Φ] i

·

·

·

Ψ

Φ Ψ

i (I)

·

·

·

·

·

·

Φ

Ψ

Φ Ψ

(I 1 )

Φ Ψ

(I 2 )

[Φ] i

·

·

·

Ψ

¬Ψ i (¬I)

¬Φ

·

·

·

Φ

¬¬Φ

(¬¬I)

Eliminazione · · · · · · Φ ∧ Ψ Φ ∧ Ψ (∧E 1
Eliminazione
·
·
·
·
·
·
Φ ∧
Ψ
Φ ∧
Ψ
(∧E 1 )
(∧E 2 )
Φ
Ψ
·
·
·
·
·
·
Φ
Φ ⇒ Ψ (⇒ E)
Ψ
[Φ] i
[Ψ] i
·
·
·
·
·
·
·
·
·
Φ ∨ Ψ
ϕ
ϕ
i (∨E)
ϕ
·
·
·
·
·
·
Φ
¬Φ (¬E)
Ψ
·
·
·
¬¬Φ (¬¬E)
Φ

Le regole di eliminazione dell’and ((E 1 ) e (E 2 )) indicano che se si pu`o derivare Φ Ψ significa che entrambe le formule sono valide e quindi si pu`o derivare Ψ oppure Φ.

16

Quando si costruisce una derivazione, ad un certo punto occorre arrestarsi, altrimenti la derivazione sarebbe infinita. Le formule che non hanno pi`u premesse vengono dette, in questo sistema, ipotesi e si assume che siano valide. Ora, esaminiamo l’introduzione dell’implicazione (I). Le premesse richiedono proprio che ci sia una derivazione di Ψ che abbia come ipotesi Φ.

[Φ] i

·

·

·

Ψ

Assumendo dunque valida Φ si riesce a dimostrare che Ψ `e valida, per`o solo sotto queste assunzioni, altrimenti (a meno di non dimostrare ulteriormente la validit`a di tale formula, se questa `e valida) non si sarebbe potuta costruire questa derivazione. Questo significa che, se Φ `e valida, allora anche Ψ lo `e, se invece Φ non `e valida, nulla si pu`o dire riguardo a Ψ. Queste sono proprio le premesse per poter sostenere che Φ Ψ `e valida. Se Ψ `e valida solo sotto l’ipotesi che Φ lo sia, per Φ Ψ non occorre pi`u assumere questo, perch´e anche se Φ non `e valida , ossia pu`o avere valore di verit`a falso per qualche assegnazione, l’implicazione ha comunque valore di verit`a vero. L’ipotesi non `e pi`u necessaria e questo si indica racchiudendola tra parentesi quadre e identificandola con un valore (tipicamente numerico) i che viene assegnato anche accanto alla regola per indicare che da quel punto in poi l’ipotesi non `e pi`u necessaria. In gergo quando questa operazione viene effettuata si dice che si scarica l’i- potesi.

Una derivazione deve avere tutte le ipotesi scaricate, altrimenti non si pu`o concludere che la formula `e valida ma solo che lo `e se sono valide le ipotesi.

La regola dell’eliminazione dell’implicazione `e detta modus ponens ed `e molto intuitiva.

La regola (E) `e un po’ particolare. Sono date due derivazioni che dimo- strano che ϕ `e valida, una sotto l’ipotesi che Φ sia valida ed una con l’ipotesi Ψ se si `e anche derivato che Φ Ψ `e valido, allora si pu`o dedurre ϕ. Questo `e vero perch´e ϕ `e stato dimostrato con due derivazioni distinte ma `e valida solo sotto le ipotesi appena descritte. Tuttavia, se Φ Ψ `e valida, significa che almeno una delle due ipotesi Φ e Ψ, devono essere valide per cui almeno una derivazione che dimostra ϕ `e corretta. Le due ipotesi non sono dunque pi`u necessarie in quanto in ogni caso `e ora noto che ϕ `e deducibile, per cui

17

possono essere scaricate. La regola (¬I) stabilisce che se assumendo Φ si deduce una contraddizio-

ne 3 allora l’ipotesi Φ non pu`o mai essere vera (altrimenti si dedurrebbe una

contraddizione) per cui deve essere insoddisfacibile, cosa che permette di con- cludere che ¬Φ `e valida. La regola (¬E) `e particolare perch´e le premesse sono sempre false e quindi

si pu`o dedurre qualsiasi formula.

Le variabili Φ, Ψ, ecc. sono metavariabili e non variabili proposizionali vere e proprie in quanto il loro valore pu`o essere una qualsiasi formula pro- posizionale. Questo permette di effettuare dimostrazioni anche di carattere pi`u generale. Ad esempio si pu`o dimostrare che Φ Φ per ogni Φ. Segue la derivazione

[Φ] 1

1 (I)

Φ Φ Le dimostrazioni si costruiscono dal basso verso l’alto, ossia partendo da ci`o che si vuole dimostrare. Data l’implicazione, si applica la regola (I) dove la premessa `e il conseguente dell’implicazione, ossia la formula Φ. La

formula Φ `e anche un’ipotesi, per cui si pu`o concludere che si `e derivato Φ assumendo Φ come ipotesi. Questo consente di utilizzare la regola di intro- duzione dell’implicazione.

A questo punto l’ipotesi Φ pu`o essere scaricata derivando Φ Φ. La co-

struzione di una derivazione, `e del tutto analoga al procedimento utilizzato dagli interpreti Prolog per dimostrare che un goal `e derivabile dal programma.

Le derivazioni ottenute con queste regole, possono essere rappresentate

come grafi, i cui nodi sono formule e i loro figli sono le premesse. Si tratta di un grafo perch´e le premesse che sono ipotesi hanno come predecessore sia il conseguente che la formula la cui regola scarica quell’ipotesi.

Si noti come le regole (¬¬I) e (¬¬E) siano derivabili dalle altre. Infatti, se

esiste una derivazione

π

Φ

(?)

¬¬Φ

(¬¬I)

3 Ψ ∧ ¬Ψ `e una contraddizione in quanto se Ψ `e vera la formula `e falsa e se Ψ `e falsa la formula `e falsa. Questo risultato `e intuitivo e pu`o essere verificato tramite le tabelle di verit`a.