Fondamenti di Informatica 2 - Dipartimento di Informatica e

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