Fondamenti di Informatica 2 Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Semantica e dominio di interpretazione ♦ La sintassi di un linguaggio determina la forma delle espressioni corrette nel linguaggio. La semantica assegna un significato alle espressioni sintatticamente corrette di tale linguaggio. ♦ Nel caso della logica proposizionale abbiamo visto che una proposizione atomica può essere vera o falsa. Il significato dei connettivi è stato stabilito definendo il valore di verità di proposizioni complesse a partire da quello dei loro componenti. ♦ Pertanto il valore di verità di una formula α, α ∈ Prop dipende dal significato (il valore di verità ) degli atomi proposizionali in α. Per stabilire il significato di una formula proposizionale occorre assegnare un valore di verità a ciascuna variabile proposizionale. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Modelli La verità o falsità di una formula in M costituisce la sua interpretazione secondo M, ed è cosı̀ definita Definizione Sia M ⊆ A un insieme di simboli proposizionali, definiamo la relazione |= ⊆ (M × Prop) ricorsivamente come segue: 1. M |= > “ogni” insieme di simboli è un modello di > 2. M 6|= ⊥ “nessun” insieme di simboli è un modello di ⊥; (più formalmente, (x, ⊥) ∈|=, / per ogni x ∈ M); 3. M |= A se e solo se A ∈ M; 4. M |= ¬α se e solo se non (M |= α) ovvero, se e solo se M 6|= α; 5. M |= α ∧ β se e solo se M |= α e M |= β; 6. M |= α ∨ β se e solo se M |= α oppure M |= β; 7. M |= α → β se e solo se M 6|= α oppure M |= β; 8. M |= α ↔ β se e solo se M |= α e M |= β, oppure M 6|= α e M 6|= β. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Modelli ♦ La definizione precedente afferma che • Se M |= α indica che α è vera in M, cioè che se sono veri i simboli contenuti in M allora α è vera, cioè il significato di α in M è > (in questo caso si dice che M è un modello di α) • Altrimenti α è falsa in M e scriviamo M 6|= α ♦ Osservazioni • L’interpretazione di una formula dipende dall’interpretazione dell’insieme A dei simboli proposizionali che occorrono in essa • Una volta fissata un’interpretazione M per A, risulta definita l’interpretazione di qualsiasi formula in α ∈ Prop in base al significato delle lettere proposizionali che occorrono in essa e al significato dei connettivi logici. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Modelli ♦ Sia α una formula, se M |= α diciamo che M è un modello di α, ovvero che M rende vera α. ♦ Se α è una tautologia, scriviamo |= α (ogni modello rende vera α). ♦ Se M |= α per qualche M, allora diciamo che α è soddisfacibile. ♦ Se per nessun insieme di simboli proposizionali M è verificato che M |= α allora diciamo che α è insoddisfacibile. Equivalentemente una formula è insoddisfacibile se e solo se per essa non esiste un modello. ♦ La definizione di |= di fatto stabilisce il significato dei connettivi logici. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esempi 1. La formula A ∧ B ha {A, B} come modello, dunque è soddisfacibile. 2. La formula A ∧ ¬B ha {A} come modello. 3. La formula A ∧ ¬A non ha alcun modello, dunque non è soddisfacibile 4. La formula A → B ha {}, {B} e {A, B} come modelli; mentre {A} non è un modello. 5. La formula A ∨ B ha {A}, {B} e {A, B} come modelli. 6. Calcolare il valore di verità di P = (¬A ∨ B) → C nell’interpretazione M tale che M(A) = M(B) = > e M(C) = ⊥. Procediamo come segue: M |= (¬A ∨ B) → C se e solo se M 6|= (¬A ∨ B) oppure M |= C se e solo se M 6|= (¬A ∨ B) (perché M(C) = ⊥ , quindi M 6|= C) se e solo se M 6|= ¬A e M 6|= B se e solo se M |= A e M(B) = ⊥ se e solo se M(A) = > e M(B) = ⊥ Poiché M(B) = ⊥ è falso possiamo affermare che M 6|= (¬A∨B) → C Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Proprietà ♦ Se α implica logicamente β, allora la formula α → β è una tautologia e quindi vale |= α → β ♦ Dato un insieme di proposizioni Γ e una proposizione α, diciamo che Γ implica logicamente α e scriviamo Γ |= α se e solo se tutti i modelli di Γ sono anche modelli di α. ♦ Se α è logicamente equivalente a β, cioè se α ≡ β, allora la formula α ↔ β è una tautologia e quindi vale |= α ↔ β. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Notazioni ♦ Se M rende vere tutte le formule di un insieme Γ, cioè se M |= γ, per ogni formula γ in Γ, diciamo che M è un modello per Γ e indichiamo questo con M |= Γ. ♦ Data una formula α, indichiamo con M od(α) l’insieme dei modelli di α, M od(α) = {M | M |= α} ♦ Dato un insieme di proposizioni Γ, i modelli di Γ sono i modelli che ne soddisfano tutte le formule, M od(Γ) = {M | ∀γ ∈ Γ M |= γ} Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Proprietà dei modelli Data una formula γ = ¬α, l’insieme dei modelli di γ è M od(γ) = M od(α) Data una formula γ = α ∧ β, l’insieme dei modelli di γ è M od(γ) = M od(α) ∩ M od(β) Data una formula γ = α ∨ β, l’insieme dei modelli di γ è M od(γ) = M od(α) ∪ M od(β) Data una formula γ = α → β, l’insieme dei modelli di γ è M od(γ) = M od(α) ∪ M od(β) Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Implicazione logica e insoddisfacibilità Il seguente importante teorema lega le nozioni di implicazione logica e di insoddisfacibilità : Teorema Γ |= α se e solo se Γ ∪ {¬α} è insoddisfacibile. Dimostrazione (⇒) Supponiamo Γ |= α, ma Γ∪{¬α} soddisfacibile. Allora esiste un modello M tale che M |= Γ e M |= ¬α, contraddicendo la definizione di implicazione logica. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Implicazione logica e insoddisfacibilità Teorema Γ |= α se e solo se Γ ∪ {¬α} è insoddisfacibile. Dimostrazione (⇐) Supponiamo che Γ ∪ {¬α} sia insoddisfacibile, consideriamo le seguenti affermazioni ciascuna delle quali deriva dalla precedente 1. non esiste un modello M tale che M verifica entrambi gli asserti M |= Γ e M |= ¬α; 2. per ogni modello M, M non verifica entrambi gli asserti M |= Γ e M |= ¬α; 3. per ogni modello M, M 6|= Γ oppure M 6|= ¬α; 4. per ogni modello M, M |= Γ implica M 6|= ¬α; 5. M 6|= ¬α se e solo se M |= α; 6. per ogni modello M, M |= Γ implica M |= α; 7. Γ |= α. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esempio Verifichiamo che se A ∧ B |= B allora {A ∧ B} ∪ {¬B} è insoddisfacibile. Sia M = {A, B}, ogni modello M0 che contiene M è un modello di A ∧ B e, ovviamente, un modello di B. Si osservi che M∗ = {B} è un modello di B, ma non è un modello di A ∧ B. Più in generale, nessun sottoinsieme proprio di M è un modello di A ∧ B; in altre parole possiamo dire che M è minimale (nel senso che non esiste un modello equivalente che contiene un sottoinsieme di M). {A ∧ B} ∪ {¬B}, è equivalente a A ∧ (B ∧ ¬B); è evidente che tale formula non ha modelli. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Decidibilità ♦ Data una formula possiamo stabilire se è una tautologia? Data una formula possiamo stabilire se è soddisfacibile? (Problema SAT ) ♦ Definizione Un problema è decidibile se esiste un algoritmo che termina sempre e risolve il problema ♦ Data una formula α • Esiste un algoritmo che decide se α è una tautologia • Esiste un algoritmo che decide se α è soddisfacibile ♦ Possiamo pertanto dire che la logica proposizionale è decidibile Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Decidibilità ♦ Data una formula α • Esiste un algoritmo che decide se α è una tautologia • Esiste un algoritmo che decide se α è soddisfacibile ♦ Dimostrazione Un algoritmo che decide se una formula logica sia una tautologia o sia soddisfacibile è basato sulle tabelle di verità In particolare data una formula α con n simboli proposizionali l’algoritmo verifica se per ciascun combinazione dei valori di verità dei simboli α sia vera. Pertanto l’algoritmo crea una tabella con 2n righe e per ciascuna calcola il valore di verità di α. La formula è una tautologia se per ciascun valore abbiamo il valore vero, è soddisfacibile se contiene almeno una riga con il valore vero Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Tabelle di verità ridotte Usiamo nel seguito tabelle di verità ridotte, in cui il valore di verità dell’intera formula è leggibile nella colonna sottostante al suo connettivo principale. Esempio: Scriviamo la tabella di verità ridotta per P → (Q → P ) P → Q 1 1 1 1 1 0 0 1 1 0 1 0 → 1 1 0 1 P 1 1 0 0 Proprietà : α è una tautologia se e solo se la colonna della tabella di verità (sottostante al connettivo principale) contiene solo 1, è soddisfacibile se e solo se essa contiene almeno un 1, è contraddittoria se e solo se essa contiene tutti 0. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Complessità ♦ L’algoritmo basato sulle tabelle di verità ha un costo esponenziale nel numero dei simboli atomici (infatti, se ci sono n simboli atomici abbiamo una tabella con 2n righe) ♦ Questo costo è inaccettabile se n è molto grande. Infatti per valori di n grandi l’algoritmo non è utilizzabile (ad esempio se n = 100 allora l’algoritmo deve verificare più di mille miliardi di miliardi di miliardi di righe!) ♦ Domanda: Si può fare di meglio? È possibile trovare algoritmi polinomiali per risolvere il problema di decisione delle tautologie e della soddisfacibilità del calcolo proposizionale? Risposta: Per ambedue i problemi si conoscono algoritmi migliori di quello basato sulle tabelle di verità ma tutti gli algoritmi noti hanno costo esponenziale nella dimensione della formula (cioè il numero di simboli di proposizione distinti che in essa compaiono). Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Tecniche di dimostrazione ♦ Domanda: Esiste la possibilità di dimostrare senza costruire la tabella di verità ma ragionando sulla formula? Risposta: SI ♦ Dimostrazione per casi Corrisponde all’uso della tautologia: (α ⇒ β) ∧ (¬α ⇒ β)) ⇒ β Ovvero per dimostrare β è sufficiente provare α ⇒ β e (¬α) ⇒ β Infatti i due casi (α e ¬α) insieme naturalmente garantiscono un contesto sempre vero. ♦ Dimostrazione per assurdo Corrisponde all’uso della (ovvia) tautologia (¬p |= ⊥) ⇒ p Ovvero per provare che α ⇒ β (α implica β) possiamo dimostrare che ¬β |= ¬α ed osservare che α ⇒ β ≡ ¬α ∨ β ≡ ¬β ⇒ ¬α Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esempio ♦ E’ stato compiuto un furto. Si sa che: 1. sono implicati tre uomini: Antonio, Biagio, Carlo 2. i ladri sono fuggiti con un furgone 3. Carlo non lavora mai senza la complicità di Antonio 4. Biagio non sa guidare Ci chiediamo se le informazioni precedenti implicano che Antonio è colpevole? ♦ Formalizziamo le informazioni in un linguaggio proposizionale. - Utilizziamo le variabili proposizionali A, B, C cosı̀ definite: A: Antonio è colpevole, B: Biagio è colpevole, C: Carlo è colpevole - L’informazione (1) si può formulare con: Almeno uno tra Antonio, Biagio e Carlo è colpevole, quindi: F1 : A ∨ B ∨ C - L’informazione (3) è rappresentabile da: F2 : C → A (se Carlo è colpevole, allora Antonio è suo complice) - Infine, la (2) e la (4) assieme si possono riscrivere: Se Biagio è colpevole, allora anche qualcun altro è colpevole, dato che lui non poteva guidare il furgone; quindi: F3 : B → (A ∨ C) Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esempio ♦ E’ stato compiuto un furto. Si sa che: 1. sono implicati tre uomini: Antonio, Biagio, Carlo 2. i ladri sono fuggiti con un furgone 3. Carlo non lavora mai senza la complicità di Antonio 4. Biagio non sa guidare Ci chiediamo se le informazioni precedenti implicano che Antonio è colpevole? ♦ Utilizzando le variabili proposizionali A, B, C definite in precedenza, le informazioni che abbiamo sono le seguenti F1 : A ∨ B ∨ C F2 : C → A F3 : B → (A ∨ C) ♦ Dimostrare che Antonio è colpevole equivale a dimostrare F1, F2, F3 |= A ♦ Approccio 1: Possiamo calcolare la tavola di verità per le formule F1, F2, F3 e verificare se A è vera in ogni riga in cui F1, F2, F3 sono tutte vere. Una volta costruita la tabella si può affermare che Antonio è colpevole Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esempio, prova per casi ♦ Possiamo dimostrare la colpevolezza di Antonio ragionando. Lo faremo in due modi diversi. ♦ Approccio 2: prova per casi Dall’ipotesi che A ∨ B ∨ C sia vera in M ci sono tre possibili casi: o è colpevole Antonio, oppure è colpevole Biagio oppure è colpevole Carlo. Dimostriamo allora che in tutti e tre i casi Antonio è colpevole. caso 1. Se è vero A, banalmente segue che Antonio è colpevole caso 2. Se è vero B, allora, per F3, è vero anche A∨C; di nuovo, ragioniamo per sottocasi: o è vero A oppure è vero C: Se C è vero per F2 : C → A (2), allora anche A è vero. Quindi possiamo concludere che, nel caso 2, A è comunque vero. caso 3. Se è vero C, poiché è vero anche C → A, allora è vero A. In ogni possibile caso si ha dunque che A è vero. Se ne conclude allora che Antonio è colpevole. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esempio, prova per contraddizione ♦ Approccio 3: prova per contraddizione ♦ Assumiamo che Antonio sia innocente e sia M un modello in cui sono vere F1, F2, F3 , cioè (1) M |= A ∨ B ∨ C (2) M |= C → A (3) M |= B → (A ∨ C) e tuttavia (4) M 6|= A, cioè M non implica che Antonio sia colpevole - Dati (1)-(4) da (2) e (4) la semantica di → implica (5) M 6|= C - da (4) e (5) segue (6) M 6|= A ∨ C - da (3) e (6) la semantica di → implica (7) M 6|= B Infine da (4), (5) e (7) segue (8) M 6|= A ∨ B ∨ C contraddicendo (1). Poiché assumere l’innocenza di Antonio porta a una contraddizione con le informazioni date, se ne deduce che Antonio è colpevole. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Sistema assiomatico hilbertiano ♦ Domanda: Esiste la possibilità di dimostrare se una formula α sia una tautologia usando un insieme fissato di regole? (cioè senza costruire la tabella di verità e utilizzando ripetutamente regole prefissate) Risposta: SI ♦ Introduciamo un sistema di deduzione per la logica proposizionale, chiamato hilbertiano ♦ Il sistema assiomatico hilbertiano è basato sulla definizione di 3 schemi di assiomi e di 2 regole di inferenza, chiamate Modus Ponens (MP) e Sostituzione Uniforme (SU) ♦ La verità di una formula viene definita attraverso la nozione di derivazione. ♦ Vedremo che è sufficiente applicare queste regole per dimostrare se una formula α è una tautologia Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Definizione dei connettivi ♦ Il sistema assiomatico di Hilbert utilizza solo ¬ e →, gli altri connettivi possono essere introdotti definendoli a partire da questi due. ♦ Infatti si può facilmente verificare che 1. α ∧ β =Def ¬(α → ¬β); 2. α ∨ β =Def ¬α → β; 3. α ↔ β =Def (α → β) ∧ (β → α). ♦ Quindi una qualunque formula del cacolo proposizionale è equivalente ad una formula che usa solo ¬ e → Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Sostituzione ♦ Data una formula α in cui non compare il simbolo p con β[α/p] denotiamo la formula β in cui ogni occorrenza di p è sostituita da α ♦ Esempio data β = (A ∧ B) e α = C → D abbiamo β[α/B] = (A ∧ (C → D)) ♦ Proprietà della sostituzione Siano α[p], γ e δ formule proposizionali e sia IV una valutazione booleana. Se IV (γ) = IV (δ) allora IV (α[γ/p]) = IV (α[δ/p]). Se γ ≡ δ allora per ogni valutazione booleana α[γ/p] ≡ α[δ/p]. Esempio Si consideri l’equivalenza tautologica (A → B) ≡ (¬A ∨ B). Sia α[p] = (p → (α ∨ β)). Si può facilmente verificare che ((A → B) → (α ∨ β)) ≡ ((¬A ∨ B) → (α ∨ β)). Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Schemi di assioma e regole di inferenza ♦ Schemi di assioma (Nota bene: α, β e γ denotano formule generiche) 1. (α → (β → α)); 2. ((α → (β → γ)) → ((α → β) → (α → γ))) ; 3. ((β → ¬α) → ((β → α) → ¬β)). ♦ Regole di Inferenza • Modus Ponens (MP): Se α e α → β sono veri allora possiamo dedurre che anche β è vera • Sostituzione Uniforme (SU): Se β è vera e p è un simbolo che compare in β allora anche β[α/p] è vera. β[α/p] è detta una istanza di β[p]. ♦ Denotiamo con Axioms l’insieme degli assiomi del calcolo proposizionale, cioè tutte le formule ottenibili dai 3 schemi di assiomi per sostituzione. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Definizioni ♦ Un teorema è una proposizione che otteniamo a partire dagli assiomi applicando ripetutamente le regole di inferenza. In particolare con `H α indichiamo che α è un teorema del calcolo proposizionale se esiste una sequenza α1, . . . , αn = α tale che per ogni i, 1 ≤ i ≤ n, • αi ∈ Axioms, cioè è un’istanza di uno schema di assioma ottenuto da a, b e c per mezzo di SU oppure • αi è ottenuto da αj e αk , j < i, j 6= k e k < i per MP, dove αk = αj → αi. Diciamo che la sequenza α1, . . . , αn = α è una dimostrazione di α. ♦ Diciamo che una proposizione α ha una dimostrazione da un insieme di proposizioni (ipotesi) Γ e scriviamo Γ `H α se esiste una derivazione α1, . . . , αn = α tale che, per ogni i, 1 ≤ i ≤ n • αi ∈ Γ e αi ∈ Axioms oppure • αi è ottenuto da αj e αk , j < k < i per MP, dove αk = αj → αi, o αi è in Γ. Gli elementi di Γ sono chiamati le premesse di α. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Proprietà del sistema hilbertiano ♦ Teorema di deduzione Si può dimostrare che nel sistema hilbertiano dato Γ un insieme di formule proposizionali e siano γ e α due formule proposizionali: Γ, γ `H α se e solo se Γ `H γ → α. ♦ Applicando più volte il teorema di deduzione ad ogni formula in Γ otteniamo che dimostrare Γ `H α equivale a dimostrare `H α0 per un opportuno α0. Pertanto possiamo sempre trattare con teoremi invece che con derivazioni da insiemi di proposizioni. ♦ Teorema di consistenza Non esiste una proposizione α tale che Γ `H α e Γ `H ¬α. Questo equivale a dire che il sistema hilbertiano è consistente, cioè non possiamo dimostrare una proposizione e il suo contrario Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esempio Per ogni A e B si deriva: {A, ¬A} `H B 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ¬A A A → (¬B → A) ¬A → (¬B → ¬A) ¬B → A ¬B → ¬A (¬B → ¬A) → ((¬B → A) → ¬¬B) (¬B → A) → ¬¬B ¬¬B B (ipotesi) (ipotesi) (schema (a)) (schema (a)) (da 2 e 3 per MP) (da 1 e 4 per MP) (schema (c)) (da 6 e 7 per MP) (da 5 e 8 per MP) (da 9 per esercizio ) ♦ L’esempio mostra che assumere la validità di A e ¬A permette di derivare la validità di un qualunque B. In altre parole se A è vero e per errore dimostriamo ¬A allora ne consegue che possiamo dimostrare B qualunque sia B (cfr. con la conseguenza di Russell della prova di 2 = 1 vista all’inizio) Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Correttezza del sistema hilbertiano ♦ Domanda: Quale relazione lega i teoremi e le tautologie? Teorema: L’insieme delle tautologie coincide con l’insieme dei teoremi nel sistema hilbertiano: `H α se e solo se |= α. ♦ Domanda: Se Γ `H α quale relazione lega i modelli di Γ ed α? Teorema: Ciò che si può derivare da un insieme Γ di ipotesi è vero in tutti i modelli di Γ. Infatti Γ `H α se e solo se Γ |= α. ♦ Nota: i due teoremi precedenti mostrano che il sistema di Hilbert è corretto e completo, cioè permette di dimostrare tutte e sole le cose vere. ♦ Esercizio: mostrare che gli schemi a, b e c sono tautologie Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Forme normali congiuntive e disgiuntive Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Clausole, Forma normale congiuntiva ♦ letterali: simboli proposizionali (atomi) o simboli proposizionali negati ♦ Una clausola è una disgiunzione di letterali L1 ∨ L2 ∨ · · · ∨ Ln. ♦ Una formula è in forma normale negativa se il segno di negazione compare solo davanti agli atomi. ♦ Una formula è in forma normale congiuntiva (CNF) (o in forma clausale) se è in forma normale negativa e ha la forma C1 ∧ C2 ∧ · · · ∧ Cn (oppure equivalentemente {C1, C2, · · · , Cn}) dove le Ci sono clausole. ♦ Poiché la disgiunzione è commutativa, una clausola è del tipo: A1 ∨ A2 ∨ · · · ∨ An ∨ ¬B1 ∨ ¬B2 ∨ · · · ∨ ¬Bm dove gli Ai sono gli n atomi e Bj sono gli m atomi negati. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Clausole ♦ Se n = m = 0 si ha la clausola vuota e si scrive {}. ♦ Una clausola verrà nel seguito anche indicata come l’insieme dei suoi letterali e cioè {L1, L2, . . . , Lp}, omettendo il simbolo di disgiunzione ∨. ♦ Se L è un letterale e C = {L1, L2, . . . , Lp} una clausola, talvolta scriveremo L ∪ C per indicare la clausola C 0 = {L} ∪ C, cioè C 0 = {L, L1, L2, . . . , Lp}. ♦ Se n = 1, cioè se la clausola ha un solo letterale positivo e quindi la forma: A1 ∨ ¬B1 ∨ . . . , ∨¬Bm si parla di clausola definita. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Trasformazione in clausole: Convert1 Teorema Ogni formula è equivalente ad una formula in forma normale disgiuntiva (DNF) ed è equivalente ad una formula in forma normale congiuntiva (CNF). Si può mettere una formula qualunque in forma CNF attraverso l’applicazione ripetuta dei seguenti 3 passi: • Eliminando i connettivi → e ↔: (α ↔ β) ≡ (α → β) ∧ (β → α) (α → β) ≡ (¬α ∨ β) • Mettendo in forma normale per la negazione (NNF): ¬(α ∧ β) ≡ ¬α ∨ ¬β ¬(α ∨ β) ≡ ¬α ∧ ¬β ¬¬α ≡ α • Distribuendo la disgiunzione ∨ sulla congiunzione ∧: α ∨ (β ∧ γ) ≡ (α ∨ β) ∧ (α ∨ γ) A questo punto dovremo solo raggruppare tutti i letterali in disgiunzione in clausole per ottenere una formula in CNF. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Problemi di Convert1 Il problema dellalgoritmo Convert1 è che la dimensione della formula CNF ottenuta potrebbe essere molto maggiore di quella originaria. Esempio: ((A1 ∧ A2) ∨ (B1 ∧ B2)) ∨ (C1 ∧ C2)) (((A1 ∧ A2) ∨ B1) ∧ ((A1 ∧ A2) ∨ B2) ∨ (C1 ∧ C2)) ((A1 ∨ B1) ∧ (A2 ∨ B1) ∧ ((A1 ∨ B2) ∧ (A2 ∨ B2) ∨ (C1 ∧ C2)) ((A1 ∨ B1) ∧ (A2 ∨ B1) ∧ ((A1 ∨ B2) ∧ (A2 ∨ B2) ∨ C1) ∧ ((A1 ∨ B1)∧ (A2 ∨ B1) ∧ ((A1 ∨ B2) ∧ (A2 ∨ B2) ∨ C2)) ... ... (A1 ∨ B1 ∨ C1) ∧ (A2 ∨ B1 ∨ C1) ∧ (A1 ∨ B2 ∨ C1) ∧ (A2 ∨ B2 ∨ C1)∧ (A1 ∨ B1 ∨ C2) ∧ (A2 ∨ B1 ∨ C2) ∧ (A1 ∨ B2 ∨ C2) ∧ (A2 ∨ B2 ∨ C2) Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Trasformazione in clausole: Convert2 Per ovviare a questi problemi possiamo usare una diversa trasformazione, dove i passi 1 e 2 sono uguali al precedente producendo una formula F , mentre il passo 3 produce una formula CNF F1 e consiste in: • Se A è una lettera proposizionale, Convert2(A) = A e Convert2(¬A) = ¬A. • Per ogni sottoformula γ = α ∧ β di F , crea tre nuove lettere Aγ , Aα, Aβ , aggiungi ad F1 le clausole ¬Aγ ∨ Aα e ¬Aγ ∨ Aβ e continua con la conversione di α e di β. • Per ogni sottoformula γ = α ∨ β di F , crea tre nuove lettere Aγ , Aα, Aβ , aggiungi ad F1 la clausola ¬Aγ ∨ Aα ∨ Aβ e continua con la conversione di α e di β. • Aggiungi la clausola unitaria AF ad F1. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esempio di Convert2 Usiamo la formula della slide precedente ((A1 ∧A2)∨(B1 ∧B2))∨(C1 ∧C2)). Diamo un nome a tutte le sottoformule D1 = A1 ∧ A2, D2 = B1 ∧ B2 e D3 = C1 ∧ C2, D4 = D1 ∨ D2 e F = D4 ∨ D3 ed inizializzamo F1 = {} ((A1 ∧ A2) ∨ (B1 ∧ B2)) ∨ (C1 ∧ C2)) ((D1 ∨ (B1 ∧ B2)) ∨ (C1 ∧ C2)) ((D1 ∨ D2) ∨ (C1 ∧ C2)) ((D1 ∨ D2) ∨ D3) (D4 ∨ D3) F F1 F1 F1 F1 F1 F1 F1 = {} = F1 ∪ {(¬D1 ∨ A1), (¬D1 ∨ A2)} = F1 ∪ {(¬D2 ∨ B1), (¬D2 ∨ B2)} = F1 ∪ {(¬D3 ∨ C1), (¬D3 ∨ C2)} = F1 ∪ {(¬D4 ∨ D1), (¬D4 ∨ D2)} = F1 ∪ {(¬AF ∨ D4 ∨ D3)} = F1 ∪ {AF } Abbiamo quindi alla fine F1 = {(¬D1 ∨A1), (¬D1 ∨A2), (¬D2 ∨B1), (¬D2 ∨B2), (¬D3 ∨C1), (¬D3 ∨ C2), (¬D4 ∨ D1), (¬D4 ∨ D2), (¬D1 ∨ D3 ∨ D4), (¬AF ∨ D4 ∨ D3), AF } Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Proprietà • Data una formula α, si può facilmente dimostrare che α ≡ Convert1(α) • Data una formula α, osserviamo che α 6≡ Convert2(α). Infatti le due formule non hanno nemmeno lo stesso alfabeto. Si può però dimostrare che α è soddisfacibile se e solo se Convert2(α) è soddisfacibile. Si dice che la trasformazione Convert2 preserva la soddisfacibilità Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Algoritmo DPLL: Idea Si applica ad un insieme di clausole ed è basato sulla tecnica del backtracking, infatti prova ricorsivamente tutte le assegnazioni possibili per vedere se una soddisfa la formula. Usa 2 controlli per ridurre (significativamente) il numero di assegnazioni da provare: • Unit propagation. Se una clausola è unitaria (contiene un solo letterale) essa può essere soddisfatta solo assegnandogli il valore corretto (1 se il letterale è positivo, 0 se è negativo). • Pure literal elimination.Se un letterale appare sempre o positivo o negativo viene chiamato puro. I letterali puri possono essere resi tutti veri, senza bisogno di fare scelte. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Algoritmo DPLL: Funzioni di appoggio • unit-propagate(letterale l, formula F ) Per ogni clausola c ∈ F , se l compare in c con lo stesso segno allora cancella la clausola c, se l compare in c con il segno opposto allora cancella l da c. Restituisce la formula semplificata. • pure-literal-assign(letterale l, formula F ) Cancella tutte le clausole che contengono il letterale l. Restituisce la formula semplificata. • choose-literal(formula F ) Seleziona (casualmente) un letterale che compare in F . Restituisce il letterale scelto. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Algoritmo DPLL: Codice function DPLL(F) if F is empty then return true; if F contains an empty clause then return false; for every unit clause l in F F = unit-propagate(l, F); for every literal l that occurs pure in F F = pure-literal-assign(l, F); l := choose-literal(F); x := DPLL(F Union {l}); y := DPLL(F Union {NOT l}); return x OR y; ♦ NOTA: L’algoritmo precedente non è ottimizzato. Infatti se x := DPLL(F Union l) è vero allora non è necessario eseguire y := DPLL(F Union NOT l) perché la funzione ritorna comunque il valore vero Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esercizi 1. Verificare che ¬A → (A → B) è una tautologia. 2. Mostrare che dall’insieme di formule Γ = {(P ∧ Q) → R, P, P → Q} si deriva Q ∧ R. Riformulate i problemi come problemi di soddisfacibilità , poi usate l’algoritmo Convert1 (o Convert2) per mettere in forma CNF ed infine DPLL per verificare la soddisfacibilità . Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esercizi: Svolgimento 1 ¬A → (A → B) è una tautologia se e solo se ¬(¬A → (A → B)) non è soddisfacibile. Usando Convert1 otteniamo: ¬(¬¬A ∨ (¬A ∨ B)) ¬(A ∨ (¬A ∨ B)) (¬A) ∧ ¬(¬A ∨ B)) ¬A ∧ A ∧ ¬B F = {A, ¬A, B} elimino le implicazioni elimino doppia negazione spingo dentro la negazione spingo dentro la negazione metto in forma a clausole Applicando la DPLL ottengo: F = unit-propagate(A, F ) seleziono la clausola unitariaA F = {} applicando unit-propagate la clausola¬A diventa vuota Quindi la formula ¬A → (A → B) è una tautologia. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esercizi: Svolgimento 2 Da Γ = {(P ∧ Q) → R, P, P → Q} si deriva Q ∧ R se e solo se Γ ∪ {¬(Q ∧ R)} non è soddisfacibile. Usando Convert1 otteniamo: ¬(P ∧ Q) ∨ R, P, ¬P ∨ Q, ¬(Q ∧ R) elimino le implicazioni (¬P ∨ ¬Q) ∨ R, P, ¬P ∨ Q, ¬Q ∨ ¬R spingo dentro la negazione F = {¬P ∨ ¬Q ∨ R, P, ¬P ∨ Q, ¬Q ∨ ¬R} metto in forma a clausole Applicando la DPLL ottengo: F F F F F F = unit-propagate(P, F ) = {¬Q ∨ R, Q, ¬Q ∨ ¬R} = unit-propagate(Q, F ) = {R, ¬R} = unit-propagate(R, F ) = {} seleziono la clausola unitaria P applico unit-propagate(P, F ) seleziono la clausola unitaria Q applico unit-propagate(Q, F ) seleziono la clausola unitaria R applico unit-propagate(R, F ) e ottengo la clausola vuota Quindi dalla formula Γ{(P ∧ Q) → R, P, P → Q} si deriva Q ∧ R. Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esercizio: Vacanza ♦ Assumiamo che: 1. Se parto e vado in vacanza allora sono contento 2. Se parto allora vado in vacanza 3. Parto Posso concludere che: vado in vacanza e sono contento? Definiamo tre simboli proposizionali P : Parto, V : Vado in vacanza, C: sono Contento Rispondere alla domanda equivale e mostrare che Γ = {(P ∧ V ) → C, P → V, P } `T (V ∧ C) Riscriviamo in termini di soddisfacibilità usando la regola Γ ` α se e solo se Γ ∧ ¬α è insoddisfacibile. Si!!!! Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esercizio: La lotteria ♦ Sono felice se e solo se ho vinto la lotteria, o la mia ragazza esce con me Se piove la mia ragazza non esce con me Piove e sono felice posso concludere che: sono felice se e solo se ho vinto la lotteria?? Γ = {F ↔ (L ∨ E), P → ¬E, P ∧ F } `T (F ↔ L) Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esercizio: in viaggio ♦ Se Se Se Se nevica non si va in macchina tira vento non si va in aereo i piloti e i ferrovieri scioperano non si va né in aereo né in treno c’è bel tempo non nevica né tira vento Dire se è consistente con le affermazioni fatte che: A. Se è bel tempo si viaggia come si vuole B. Se è bel tempo e non c’è nessuno sciopero si viaggia come si vuole C. Se nevica si va in aereo D. Se nevica non si va in aereo Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esercizio sui modelli 1 ♦ Sia α = A → ((B ∧ C) ∨ (C → ¬A)). 1. Mostrare che M = {A, B} è un modello per essa. 2. Esistono altri modelli α? ♦ Se Giovanni studia canto e non ha una brutta voce allora avrà successo alla Scala. 1. Formalizzare l’affermazione precedente usando i seguenti simboli proposizionali: C= studia canto, B= brutta voce, S= successo alla scala 2. Dire quali tra i seguenti insiemi sono modelli: {C, B, S}, {C,S}, {B, S}, {C}, {B}, {} Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esercizio sui modelli 2 ♦ Verificare se {(C ∧ ¬B) → S, C, S} |= B per via semantica, cioè ragionando sui modelli e non facendo deduzione. La risposta è no Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela Esercizio sui modelli 3 ♦ Una formula costituita dalla congiunzione di n letterali distinti quanti modelli ha? A1 ∧ . . . ∧ An ♦ Una formula costituita dalla disgiunzione di n letterali distinti quanti modelli ha? A1 ∨ . . . ∨ An Fondamenti di Informatica 2, Linguaggi e Complessità : Logica, II Parte Lucidi di M.Schaerf e A.Marchetti Spaccamela