Semantica della logica del prim`ordine

annuncio pubblicitario
Semantica della logica del prim’ordine
Linguaggi
18: Semantica della logica del prim’ordine
Claudio Sacerdoti Coen
<[email protected]>
Universitá di Bologna
11/04/2011
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Outline
1
Semantica della logica del prim’ordine
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Semantica
Wikipedia: “. . . ”
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Semantica classica della logica del prim’ordine
Al fine di definire la semantica classica di un linguaggio del
prim’ordine è necessario prima individuare la forma appropriata
per le descrizioni dei mondi.
La semantica classica associa:
A ogni connotazione proposizionale un valore di
verità ∈ {0, 1}
A ogni connotazione che è un termine un elemento del
dominio delle denotazioni per i termini
Inoltre, come nel caso proposizionale, un mondo deve fissare
esclusivamente la semantica delle “formule atomiche” (costanti,
funzioni, predicati) che verrà estesa a ogni formula possibile
assegnando una semantica invariabile ai connettivi e ai
quantificatori.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Semantica classica della logica del prim’ordine
Definizione: un mondo o interpretazione per la logica del
prim’ordine è una coppia (A, I) dove A è un insieme non vuoto
di denotazioni per i termini e I è una funzione di interpretazione
che associa
a ogni funzione f n una funzione il cui dominio è
An = A × . . . × A (n volte) e il cui codominio è A
Caso particolare: per ogni costante c, I(c) ∈ A
a ogni predicato P n una funzione il cui dominio è An e il cui
codominio è {0, 1} o, equivalentemente, un sottoinsieme
di An
Caso particolare: per ogni predicato 0-ario P, I(P) ∈ {0, 1}
come nel caso della logica proposizionale
Nota: un mondo non è più rappresentabile come una sequenza
di booleani e non è più possibile usare tabelle di verità.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Semantica classica della logica del prim’ordine
Siamo già in grado di interpretare in un mondo (A, I) termini e
proposizioni in cui non occorrano variabili. (La definizione
formale verrà data in seguito).
Esempio:
Sia A = N,
I(D) l’insieme dei numeri pari,
I(f 1 )(n) = n + 1
I(c) = 2.
Allora [[D(f (c))]](A,I) = 0.
Ma che semantica diamo a ∀x.P e a ∃x.P?
Intuitivamente, ∀x.P è vera quando P è sempre vera al variare
di x mentre ∃x.P è vera quando P è vera almeno una volta al
variare di x. La variazione è implicita essere sul dominio A del
nostro mondo.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Semantica classica della logica del prim’ordine
Come catturare la nozione di variazione di x sul dominio A?
Vediamo prima un paio di modi non corretti:
1
2
[[∀x.P]](A,I) = min{[[P[α/x] | α ∈ A]](A,I) }
Errata in quanto α è una denotazione e non una
connotazione! Pertanto P[α/x] non è ammesso dalla
sintassi.
[[∀x.P]](A,I) = min{[[P[t/x] | t ∈ Term]](A,I) } dove Ter è
l’insieme di tutte le connotazioni per termini nel nostro
linguaggio.
Errata in quanto il mio mondo potrebbe avere molte più
denotazioni per termini di quelle rappresentabili
sintatticamente tramite connotazioni. Esempio: A = R
poichè l’insieme delle connotazioni è sempre enumerabile.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Semantica classica della logica del prim’ordine
Come catturare la nozione di variazione di x sul dominio A?
Definizione: dato un mondo (A, I) un ambiente ξ è una funzione
il cui dominio è l’insieme di tutte le variabili e il cui codominio è
A.
Useremo gli ambienti per interpretare le variabili nello stesso
modo in cui usiamo I per interpretare le costanti.
Esempio: [[f 2 (c, x)]](A,I),ξ = I(f 2 )(I(c), ξ(x))
I quantificatori universale ed esistenziale fanno variare gli
ambienti per assegnare a una variabile x tutti i possibili valori
di A.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Semantica classica della logica del prim’ordine
Definizione di semantica classica della logica del prim’ordine.
Sia (A, I) un mondo e ξ un ambiente sul mondo. Definiamo per
induzione strutturale
[[x]](A,I),ξ = ξ(x)
[[f n (t1 , . . . , t n )]](A,I),ξ = I(f n )([[t1 ]](A,I),ξ , . . . , [[t n ]](A,I),ξ )
[[P n (t1 , . . . , t n )]](A,I),ξ = I(P n )([[t1 ]](A,I),ξ , . . . , [[t n ]](A,I),ξ )
[[⊥]](A,I),ξ = 0
[[>]](A,I),ξ = 1
[[¬P]](A,I),ξ = 1 − [[P]](A,I),ξ
[[P1 ∧ P2 ]](A,I),ξ = min{[[P1 ]](A,I),ξ , [[P2 ]](A,I),ξ }
[[P1 ∨ P2 ]](A,I),ξ = max{[[P1 ]](A,I),ξ , [[P2 ]](A,I),ξ }
[[P1 ⇒ P2 ]](A,I),ξ = max{1 − [[P1 ]](A,I),ξ , [[P2 ]](A,I),ξ }
[[∀x.P]](A,I),ξ = min{[[P]](A,I),ξ[x7→α] | α ∈ A}
[[∃x.P]](A,I),ξ = max{[[P]](A,I),ξ[x7→α] | α ∈ A}
dove ξ[x 7→ α] associa α a x e ξ(y) a y.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Soddisfacibilità, insoddisfacibilità, . . .
Tutte le definizioni viste per la logica proposizionale classica
che facevano riferimento alle nozioni di mondo e semantica
rimangono identiche per la logica del prim’ordine classica con
le nuove definizioni di mondo (e ambiente) e semantica.
Esempio: Γ G quando in ogni mondo (A, I) e ambiente ξ si
ha che se [[F ]](A,I),ξ = 1 per ogni F ∈ Γ allora [[G]](A,I),ξ = 1.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Semantica intuizionista della logica del prim’ordine
Accenniamo qui alla semantica intuizionista della logica del
prim’ordine dando le denotazioni per le proposizioni (ma non
per i termini in quanto tali):
[[∀x.P(x)]]={f | f è una funzione che a ogni x associa un
programma f (x) ∈ [[P(x)]]}
Il quantificatore universale corrisponde a una forma di
polimorfismo: per esempio, f ∈ [[∀x.(P(x) ⇒ Q(x)) quando per
ogni x si ha che f (x) è una funzione che associa a ogni input
i ∈ [[P(x)]] un output o ∈ [[Q(x)]], ovvero f è una funzione
polimorfa.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Semantica intuizionista della logica del prim’ordine
Accenniamo qui alla semantica intuizionista della logica del
prim’ordine dando le denotazioni per le proposizioni (ma non
per i termini in quanto tali):
[[∃x.P(x)]]={ht, qi | q ∈ [[P(t)]]}
La semantica del quantificatore esistenziale è l’insieme degli
elementi t (chiamati testimoni) per i quali la proprietà vale
assieme a un’evidenza (programma) per il fatto che la proprietà
valga.
In altre parole: una tautologia intuizionista ∀x.∃y .P(x, y) ha
come semantica programmi che associano a ogni input x un
output y con la prova che la coppia input/output soddisfa la
specifica data per il programma.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Semantica intuizionista della logica del prim’ordine
Esempio di specifica per un algoritmo di ordinamento:
∀l.(Lista(l)
⇒ ∃l 0 .(Lista(l 0 ) ∧ Ordinata(l 0 ) ∧ ∀z.(z ∈ l ⇐⇒ z ∈ l 0 )))
Ogni prova intuizionista del precedente enunciato ha come
semantica a essa associata una funzione che data una lista l
restituisce una lista l 0 assieme a un programma che mostra che
l e l 0 hanno gli stessi elementi e che l 0 è ordinata.
Una dimostrazione intuizionista corrisponde a dare
contemporaneamente un’implementazione e la dimostrazione
di correttezza dell’implementazione stessa!
Rimandiamo ancora una volta al corso di Fondamenti Logici
dell’Informatica lo studio di questo approccio alla programmazione.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Equivalenze logiche notevoli
Quantificatori dello stesso tipo commutano:
∀x.∀y.P ≡ ∀y .∀x.P
∃x.∃y.P ≡ ∃y .∃x.P
Quantificatori di tipo diverso NON commutano:
∃x.∀y.P ∀y .∃x.P
∀x.∃y.P 6 ∃y .∀x.P
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Equivalenze logiche notevoli
Le seguenti equivalenze possono essere utilizzate per spostare
i quantificatori in posizione di testa nelle formule:
∀x.(P ∧ Q) ≡ (∀x.P) ∧ (∀x.Q)
∃x.(P ∨ Q) ≡ (∃x.P) ∨ (∃x.Q)
∀x.P ≡ P se x ∈
6 FV (P)
∃x.P ≡ P se x ∈
6 FV (P)
(usata da dx a sx)
(usata da dx a sx)
(usata da dx a sx)
(usata da dx a sx)
∀x.(P ∨ Q) ≡ (∀x.P) ∨ Q se x ∈
6 FV (Q)
∃x.(P ∧ Q) ≡ (∃x.P) ∧ Q se x ∈
6 FV (Q)
Claudio Sacerdoti Coen
(usata da dx a sx)
(usata da dx a sx)
Semantica della logica del prim’ordine
Equivalenze logiche notevoli
Le leggi di De Morgan si estendono ai quantificatori universali
ed esistenziali (pensati come congiunzioni/disgiunzioni infinite):
¬∀x.P ≡ ∃x.¬P
∃x.¬P ¬∀x.P
¬∃x.P ≡ ∀x.¬P
solo in logica classica
in logica intuizionista
in logica classica e intuizionista
Attenzione: per dimostrare che ¬∀x.P basta dimostrare che
∃x.¬P ovvero è sufficiente un controesempio. Ma per
dimostrare ¬∃x.P dobbiamo dimostrare ∀x.¬P ovvero serve
una dimostrazione.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Equivalenze logiche notevoli
Sia x 6∈ FV (Q) (sempre vero per un qualche Q 0 che sia
α-convertibile con Q). Si ha
(∀x.P) ⇒ Q ≡ ∃x.(P ⇒ Q)
∃x.(P ⇒ Q) (∀x.P) ⇒ Q
(∃x.P) ⇒ Q ≡ ∀x.(P ⇒ Q)
Q ⇒ (∃x.P) ≡ ∃x.(Q ⇒ P)
Q ⇒ (∀x.P) ≡ ∀x.(Q ⇒ P)
Claudio Sacerdoti Coen
solo in logica classica
in logica intuizionista
Semantica della logica del prim’ordine
Forma normale prenessa
Definizione: una formula della logica del prim’ordine è in forma
normale prenessa quando è della forma Q1 x1 . . . Qn xn .P dove
P non contiene quantificatori e Qi ∈ {∀, ∃} per ogni i.
Teorema: solo in logica classica esiste un semplice algoritmo
per mettere ogni formula data in forma normale prenessa.
Dimostrazione (algoritmo): è sufficiente applicare le
equivalenze logiche notevoli viste in precedenza sempre da dx
a sx fino a quando possibile.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Forma normale prenessa
Esempio:
((∀x.P(x)) ∨ (∀x.Q(x)) ⇒ ∀x.R(x)
≡ ((∀x.P(x)) ∨ (∀y .Q(y)) ⇒ ∀z.R(z)
≡ (∀x.∀y .(P(x) ∨ Q(y)) ⇒ ∀z.R(z)
≡ ∃x.(((∀y .(P(x) ∨ Q(y)) ⇒ ∀z.R(z)))
≡ ∃x.∃y.(P(x) ∨ Q(y ) ⇒ ∀z.R(z)))
≡ ∃x.∃y.∀z.(P(x) ∨ Q(y ) ⇒ R(z)))
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Forma normale di Skolem
Definizione: una formula della logica del prim’ordine è in forma
normale di Skolem quando è della forma ∀1 x1 . . . ∀n xn .P dove P
non contiene quantificatori.
Definizione (Skolemizzazione): data una formula
Q1 x1 . . . Qn xn .P in forma normale prenessa la sua
Skolemizzata è la formual ottenuta rimuovendo ogni
quantificatore esistenziale ∃xi e sostituendo in P la variabile xi
con fi (xn1 , . . . , xni ) dove fi è un nuovo simbolo di funzione e
{xn1 , . . . , xni } è il sottoinsieme di {x1 , . . . , xi−1 } contenente solo
le variabili quantificate universalmente.
Esempio:
∃x.∀y.∀z.∃w.P(x, y , z, w) si skolemizza in
∀y.∀z.P(c, y, z, f (y , z)).
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Forma normale di Skolem
L’idea alla base della Skolemizzazione è che per dimostrare
che una proprietà esistenziale vale posso far riferimento alle
variabili universali in scope.
Esempio: ∀n.∃m.m > n è dimostrabile scegliendo come m, per
ogni n, il valore n + 1.
Sostituendo a quantificatori esistenziali (che dipendono dagli
universali in scope) delle funzioni (costanti) applicate alle
variabili in scope NON VIENE RISPETTATA L’EQUIVALENZA
LOGICA.
Esempio: ∀n.∃m.m > n che è soddisfatta nel mondo inteso
dell’aritmetica sui numeri naturali dove I(f )(n) = n − 1 si
skolemizza in ∀n.f (n) > n che non è soddisfatta nello stesso
mondo.
Claudio Sacerdoti Coen
Semantica della logica del prim’ordine
Forma normale di Skolem
Quindi la skolemizzazione non rispetta l’equivalenza logica.
Tuttavia essa rispetta la soddisfacibilità.
Esempio: ∀n.∃m.m > n che è soddisfatta nel mondo inteso
dell’aritmetica e si dimostra scegliendo n + 1 per m si
skolemizza in ∀n.f (n) > n che è soddisfatta nel mondo
dell’aritmetica ove I(f )(n) = n + 1.
Claudio Sacerdoti Coen
Scarica