Vai al contenuto
Topos Uranos

Riepilogo

La semantica aveva promesso metodi per decidere l’insoddisfacibilità senza percorrere la tavola di verità; questa lezione consegna il principale di essi. Si scrive un insieme di formule come un insieme di clausole, ciascuna un insieme finito di letterali, mediante la forma normale congiuntiva oppure, per evitarne la crescita esponenziale, mediante clausole di definizione con variabili nuove, che conservano la soddisfacibilità. Sulle clausole agisce una sola regola, quella di risoluzione: da una clausola che contiene un letterale e da un’altra che contiene il suo opposto si inferisce l’unione di entrambe senza quella coppia. Una refutazione è una derivazione che arriva alla clausola vuota. Si dimostrano la correttezza (se c’è una refutazione, l’insieme è insoddisfacibile), per induzione sulla lunghezza della derivazione, e la completezza refutazionale (se un insieme finito è insoddisfacibile, c’è una refutazione), per induzione sul numero delle variabili, eliminandole una alla volta; con il teorema di compattezza, la completezza si estende agli insiemi infiniti. Ne risultano un metodo per decidere le conseguenze, che si confronta con le tavole, e una presentazione del problema della soddisfacibilità, con due casi che si decidono rapidamente: le clausole di Horn e quelle di due letterali.

Obiettivi di apprendimento

  1. Rappresentare un insieme di formule come un insieme di clausole, mediante la forma normale congiuntiva o mediante clausole di definizione con variabili nuove, e giustificare che la rappresentazione conserva la soddisfacibilità e la conseguenza.
  2. Costruire refutazioni per risoluzione e decidere con esse conseguenze e insoddisfacibilità, senza incorrere negli errori tipici, come eliminare due coppie complementari in un solo passo.
  3. Dimostrare la correttezza della risoluzione per induzione sulla lunghezza delle derivazioni e la sua completezza refutazionale per eliminazione delle variabili, ed estenderla agli insiemi infiniti con il teorema di compattezza.
  4. Spiegare il problema della soddisfacibilità, il suo costo noto e i casi che si decidono rapidamente (clausole di Horn e di due letterali), e confrontare la risoluzione con le tavole di verità.

La lezione sulla semantica della logica proposizionale ha mostrato che la validità e la soddisfacibilità sono decidibili con la tavola di verità, a un costo che raddoppia a ogni variabile, e ha annunciato metodi che non richiedessero di percorrerla. La lezione su conseguenza ed equivalenza semantica ha ridotto ogni conseguenza a un’insoddisfacibilità: Γ⊨φ\Gamma \models \varphi se e solo se Γ∪{¬φ}\Gamma \cup \{\neg\varphi\} è insoddisfacibile. Le lezioni sulle forme normali e sul loro algoritmo hanno dato a ogni formula una forma congiuntiva, la cui validità si vede a colpo d’occhio, ma la cui soddisfacibilità non si vede. Se le cose stanno così, manca una procedura che decida l’insoddisfacibilità di una congiunzione di clausole operando sulle clausole stesse. Questa procedura è la risoluzione, proposta da John Alan Robinson nel 1965 su idee di Martin Davis e Hilary Putnam (1960); è il nucleo dei programmi che oggi decidono la soddisfacibilità di formule con milioni di variabili. A differenza del sistema dell’unità sulla deduzione, le cui relazioni con la semantica sono studiate dalle lezioni sulla correttezza e completezza e su il teorema di compattezza, la risoluzione non deduce conclusioni: refuta insiemi. Questa lezione dimostra che lo fa in modo corretto e completo.

Come nelle lezioni precedenti, pp, qq, rr, ss e tt indicano le variabili da v1v_1 a v5v_5; la lettera vv senza indice, e anche ww, designano assegnazioni; e V(φ)V(\varphi) è l’insieme delle variabili di φ\varphi.

Clausole e insiemi di clausole

Si ricordi dalla lezione sulle forme normali che un letterale è una variabile o la negazione di una variabile, e che l’opposto di un letterale ℓ\ell, scritto ℓ∗\ell^{*}, è il letterale della stessa variabile e dell’altro segno; due letterali opposti formano una coppia complementare. Per il lemma sulla negazione di un letterale, v(ℓ∗)=1−v(ℓ)v(\ell^{*}) = 1 - v(\ell) per ogni assegnazione vv. Là una clausola era una disgiunzione di letterali; qui conviene dimenticare l’ordine e le ripetizioni, che non alterano il valore, e tenersi l’insieme.

Una clausola è un insieme finito di letterali. La clausola senza letterali si chiama clausola vuota e si scrive □\Box. Un’assegnazione vv soddisfa una clausola CC, e si scrive v⊨Cv \models C, se qualche letterale di CC vale 11 in vv; in caso contrario, vv la refuta. Una clausola di un solo letterale si chiama unitaria. Le variabili di una clausola formano l’insieme V(C)V(C); quelle di un insieme SS di clausole, l’insieme V(S)V(S), unione dei precedenti. Un’assegnazione soddisfa un insieme SS di clausole, v⊨Sv \models S, se soddisfa ciascuna delle sue clausole; SS è soddisfacibile se qualche assegnazione lo soddisfa, e insoddisfacibile in caso contrario. Infine, se SS è un insieme di clausole e CC una clausola, S⊨CS \models C significa che ogni assegnazione che soddisfa SS soddisfa CC.

v⊨C  ⇔  (∃ℓ∈C)  v(ℓ)=1,v⊨S  ⇔  (∀C∈S)  v⊨Cv \models C \;\Leftrightarrow\; (\exists \ell \in C)\; v(\ell) = 1, \qquad v \models S \;\Leftrightarrow\; (\forall C \in S)\; v \models C

Due casi estremi seguono dalla definizione, e conviene fissarli. La clausola vuota non ha letterali; quindi nessun suo letterale vale 11, e nessuna assegnazione la soddisfa: □\Box è insoddisfacibile, e lo è anche ogni insieme che la contenga. L’insieme vuoto di clausole, invece, non ha clausole da soddisfare, e ogni assegnazione lo soddisfa. Non vanno confusi: {□}\{\Box\} è insoddisfacibile e ∅\emptyset è soddisfatto da tutte le assegnazioni.

LemmaLa clausola e la sua disgiunzione

Sia C={ℓ1,…,ℓk}C = \{\ell_1, \ldots, \ell_k\} una clausola non vuota, con i suoi letterali scritti in un ordine qualsiasi e senza ripetizioni. Per ogni assegnazione vv, v⊨Cv \models C se e solo se v(⋁j=1kℓj)=1v\left( \bigvee_{j=1}^{k} \ell_j \right) = 1. In particolare, tutte le disgiunzioni dei letterali di CC, in qualsiasi ordine e con ripetizioni, sono equivalenti tra loro. Inoltre, CC è soddisfatta da ogni assegnazione se e solo se contiene una coppia complementare.

Dimostrazione

  1. v(⋁j=1kℓj)=1  ⇔  (∃j≤k)  v(ℓj)=1v\left( \bigvee_{j=1}^{k} \ell_j \right) = 1 \;\Leftrightarrow\; (\exists j \leq k)\; v(\ell_j) = 1

    Per il lemma del valore delle disgiunzioni di nn formule, dimostrato nella lezione sulle leggi generalizzate di De Morgan e distributive, la disgiunzione vale 11 se e solo se qualcuno dei suoi termini vale 11.

  2. v(⋁j=1kℓj)=1  ⇔  v⊨Cv\left( \bigvee_{j=1}^{k} \ell_j \right) = 1 \;\Leftrightarrow\; \resaltar{v \models C}

    Che qualche ℓj\ell_j valga 11 significa che qualche letterale di CC vale 11, cioè che vv soddisfa CC. La condizione non dipende dall’ordine né dalle ripetizioni, perché chiede soltanto quali letterali ci sono.

  3. (∀v)  v⊨C  ⇔  (∃ℓ)  ℓ∈C,  ℓ∗∈C(\forall v)\; v \models C \;\Leftrightarrow\; (\exists \ell)\; \ell \in C, \; \ell^{*} \in C

    Per il lemma sulle congiunzioni elementari e clausole (lezione sulle forme normali), una disgiunzione di letterali è valida se e solo se contiene una coppia complementare; per quanto precede, lo stesso vale per CC.

Una clausola che contiene una coppia complementare si chiama tautologica: non impone alcuna condizione e può essere tolta da qualsiasi insieme senza alterarne i modelli. Scrivere le clausole come insiemi non è un capriccio di notazione. Se da (p∨q)(p \vee q) e (p∨¬q)(p \vee \neg q) si vuole ottenere pp, la disgiunzione dà (p∨p)(p \vee p), che equivale a pp ma non è la stessa formula; con gli insiemi, {p}∪{p}={p}\{p\} \cup \{p\} = \{p\}, e la fusione dei letterali ripetuti avviene da sola.

EsempioSoddisfare un insieme di clausole

Sia S={{p,q},{¬p,r},{¬q}}S = \{ \{p, q\}, \{\neg p, r\}, \{\neg q\} \}. La clausola {¬q}\{\neg q\} esige v(q)=0v(q) = 0; allora {p,q}\{p, q\} esige v(p)=1v(p) = 1, e allora {¬p,r}\{\neg p, r\} esige v(r)=1v(r) = 1. L’assegnazione che dà 11 a pp e a rr e 00 alle altre variabili soddisfa SS, ed è l’unica possibilità su V(S)={p,q,r}V(S) = \{p, q, r\}. Se si aggiunge la clausola {¬r}\{\neg r\}, nessuna assegnazione soddisfa l’insieme ampliato: è insoddisfacibile, benché non contenga □\Box.

v(q)=0  ⇒  v(p)=1  ⇒  v(r)=1v(q) = 0 \;\Rightarrow\; v(p) = 1 \;\Rightarrow\; v(r) = 1