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