Forma clausale e principio di risoluzione


Introduzione

La forma clausale è un formalismo che, al pari della forma standard della logica, permette la formalizzazione del linguaggio naturale e di conseguenza la possibilità di costruire calcoli rigorosi al posto dei ragionamenti informali propri del linguaggio naturale. È però un formalismo più compatto e semplice rispetto alla forma standard, di cui conserva tuttavia le caratteristiche salienti di correttezza e di completezza del calcolo.

Il considerare la forma clausale è un passo obbligato nel cammino che dalla logica matematica conduce alla programmazione logica. Infatti, sia il formalismo che la regola di inferenza che viene qui applicata (il Principio di Risoluzione) sono molto più simili ai convenzionali linguaggi di programmazione che il formalismo e le regole di inferenza della forma standard della logica matematica.


Sintassi


Definizione di clausola

Una clausola è una disgiunzione finita di zero o più letterali. Un insieme di letterali può essere considerato come sinonimo di clausola.

Es: P v Q v notR = {P,Q, notR}

Definizione di letterale

Un letterale è un atomo o la negazione di un atomo.

Definizione di clausola

Un insieme S di clausole è considerato una congiunzione di tutte le clausole di S dove ogni variabile in S è considerata associata ad un quantificatore universale.

Sulla base di queste convenzioni, una formula del Calcolo proposizionale o dei predicati può essere rappresentata semplicemente da un insieme di clausole.


Passaggio dalla forma standard della logica alla forma clausale

C'è un importante teorema che mette in relazione il formalismo standard della logica con la forma clausale:

Teorema

Sia S un insieme di clausole che rappresenta una forma standard di una formula F

F è inconsistente <==> S è inconsistente

La conversione da forma standard a forma clausale si ottiene in nove passi:

  1. Eliminazione dei simboli d'implicazione
          [X==>Y] <==> notXvY      X e Y  formule
    
    Per procedere all'eliminazione si può portare il simbolo di implicazione verso l'interno:
          [X==>Y&Z]   <==>  [X==>Y] & [X==>Z]
          [XvY==>Z]   <==>  [X==>Z] & [Y==>Z]
          [X&notY==>Z]  <==>  [X==>YvZ]
          [X==>notYvZ]  <==>  [X&Y==>Z]
          [X==>[Y==>Z]] <==>  [X&Y==>Z]
          [[X==>Y]==>Z] <==>  [XvZ] & [Y==>Z]      X, Y, Z formule
    
  2. Ridurre i campi di validità dei simboli di negazione: spostare all'interno della formula le negazioni fino a portarle ognuna davanti ad una formula atomica:
    notnotX <==> X
    not(X&Y) <==> notXvnotY
    not(XvY) <==> notX&notY
    
  3. Dare un nuovo nome alle variabili in modo che ogni quantificatore abbia nel suo scopo una variabile diversa dalle altre.
  4. Eliminare i quantificatori esistenziali (Skolemizzazione).
    La regola generale è quella di sostituire la variabile esistenziale quantificata con una funzione di Skolem. Una funzione di Skolem è costituita da un simbolo di funzione diverso da quelli che già compaiono nella formula e da un argomento. Si danno due casi:
    1. il quantificatore esistenziale è nel campo di validità del quantificatore universale: l'argomento della funzione di Skolem è la variabile universalmente quantificata;
    2. il quantificatore esistenziale non è nel campo di validità di un quantificatore universale: la funzione di Skolem è a 0 argomenti, cioè una costante (il simbolo di costante usato non deve compare in altre formule).
  5. Conversione in forma prenessa.
    Si spostano tutti i quantificatori universali davanti alla formula lasciando che lo scopo di ciascun quantificatore includa tutta la formula. Una formula in "forma prenessa" consiste in una stringa di quantificatori chiamata "prefisso" seguita da una formula chiamata "matrice".
  6. Conversione della matrice in "forma normale congiuntiva".
    Ogni matrice può essere scritta come la congiunzione di un insieme finito di disgiunzioni di letterali. La forma congiuntiva normale si ottiene applicando una delle regole distributive:

    X v (Y&Z) <==> (XvY) & (XvZ)

  7. Eliminazione dei quantificatori universali.
    A questo punto tutte le variabili che compaiono nella formula sono universalmente quantificate. Possiamo quindi eliminare i quantificatori universali e assumere per convenzione che tutte le variabili nella matrice siano universalmente quantificate.
  8. Eliminazione del simbolo di congiunzione.
    Espressioni della forma (X&Y) vengono sostituite dall'insieme di formule {X,Y}. Si ottiene un insieme finito di formule ciascuna delle quali è una disgiunzione di letterali.
  9. Rinominare le variabili in modo che nessun simbolo di variabile appaia in più di una clausola.
    Quando termini non contenenti variabili sono la sostituzione di variabili in una espressione, otteniamo una "istanza chiusa" del letterale.


Clausole di Horn

Una clausola di Horn è una clausola che contiene al più un letterale non negato (oppure che contiene al più una conclusione):
A <== B1, ..., Bn 
Per molte delle applicazioni della logica è sufficiente restringere la forma clausale alle clausole di Horn (dal nome del logico Alfred Horn che fu il primo a studiarle nel 1951).

La maggior parte dei formalismi per la programmazione di calcolatori somiglia molto più alle clausole di Horn che alla forma clausale normale. Tuttavia la forma clausale normale costituisce una estensione significativa dei più semplici modelli di risoluzione di problemi più popolari espressi con clausole di Horn.


Riferimenti: Forma clausale per la dimostrazione automatica di teoremi

Introduzione

Per definizione una clausola è una disgiunzione di letterali. Ma la clausola (AvBvC) è logicamente equivalente alle seguenti implicazioni:
(notA&notB ==> C)
(notA&notC) ==> B
(notB&notC) ==> A
notA ==> (BvC)
notB ==> (AvC)
notC ==> (AvB)
ciascuna delle quali apporta differenti informazioni sullo "stato del mondo" che descrive; la clausola come semplice disgiunzione di letterali non può indicare quale delle informazioni si debba intendere. È necessario dunque reintrodurre l'implicazione e rappresentare la conoscenza riguardo un problema facendo uso di due separate categorie: fatti e regole.

I fatti sono asserzioni espresse come implicazioni e rappresentano la conoscenza specifica riguardo un caso particolare.

La clausola:

AvnotBvnotCvD
diventa:
not(B&C) v (AvD)
B&C ==> AvD
A,D <== B,C
(la freccia d'implicazione è scritta nella direzione opposta rispetto alla forma standard solo per focalizzare l'attenzione sulla conclusione della clausola).

Le regole sono quelle asserzioni in cui compare l'implicazione. Esse esprimono la conoscenza generale riguardo un particolare soggetto.

Definizione di clausola

Una clausola è un'espressione della forma:
B1,B2,...,Bm <== A1,A2,...,An
dove:

B1,B2,...,Bm,A1,A2,...,An sono formule atomiche con n>=0, m>=0
A1,A2,...,An sono condizioni congiunte della clausola;
B1,B2,...,Bm sono conclusioni alternative della clausola.

Una clausola del tipo:

A <==
è chiamata fatto.

Una clausola del tipo:

A <== B1,...,Bn
è chiamata regola.

Una clausola del tipo:

<== B1,...,Bn
è chiamata obiettivo.

Esempi

  1. Donna(x),Uomo(x) <== Umano(x).
    (Se x è umano allora è o donna o uomo).
  2. Donna(x) <== Madre(x,y).
    (Se x è madre di y allora x è donna).
  3. Madre(x,y) <== .
    (x è madre di y).
  4. <== Madre(x,y).
    (x non è madre di y).


Semantica


Semantica della logica proposizionale e dei predicati

Semantica in logica proposizionale

Vedi in Logica proposizionale.

Semantica in logica dei predicati

Vedi in Logica dei predicati del primo ordine.


Semantica della clausola vuota

Una clausola della forma A <== B1,...,Bn si dice "vera" in una interpretazione I se e solo se: La clausola vuota non ha né condizioni né conclusioni, quindi non può essere vera in nessuna interpretazione. La clausola vuota è l'unica clausola "auto-inconsistente".

Per dimostrare l'inconsistenza di un insieme di clausole è sufficiente dimostrare che l'insieme implica logicamente la clausola vuota. Un insieme vuoto di clausole è consistente: tutte le clausole che gli appartengono sono vere in ogni interpretazione dal momento che non contengono clausole che possono essere false.


Semantica delle conclusioni alternative

Se una clausola ha più conclusioni potrebbe voler significare (per la definizione di clausola vera) che se tutte le condizioni sono vere almeno una (possibilmente più di una) delle sue conclusioni è vera.

Questa interpretazione inclusiva della disgiunzione contrasta con l'interpretazione esclusiva in cui "A o B" s'interpreta che o A o B è vero, ma non entrambe.

Il senso esclusivo della disgiunzione può essere espresso dalla disgiunzione inclusiva e dalla negazione. Esempio: esprimere che ogni umano è o femmina o maschio, ma non entrambi, richiede 2 clausole:

Femmina(x), Maschio(x) <== Umano(x).
<== Femmina(x), Maschio(x), Umano(x).


Semantica per le clausole utilizzate nella dimostrazione automatica di teoremi

Introduzione

Il significato associato ad un simbolo di predicato, ad una funzione o ad una costante, dipende dal rapporto che ognuno di questi simboli ha con l'insieme delle proposizioni che esprimono le assunzioni riguardo un certo dominio.

Dato un insieme di clausole che esprime tutte le assunzioni concernenti un dominio, per determinare il valore di verità di ogni clausola è necessario determinare cosa sia logicamente implicato dalle assunzioni

Esempio

Consideriamo l'insieme di clausole C :
  1. Madre(Era,Ares) <==. (Era è madre di Ares)
  2. Padre(Zeus,Ares) <==. (Zeus è padre di Ares)
  3. Donna(x) <== Madre (x,y). (x è donna se è madre di y)
  4. Uomo(x) <== Padre(x,y). (x è uomo se è padre di y)
Per determinare il valore di verità della clausola (a):
(a)  Madre(Zeus,Ares) <==.      (Zeus è madre di Ares)
si controlla se (a) è implicata dalle assunzioni C.

La clausola (a) è implicata logicamente da C, infatti: se Zeus è madre di Ares, allora, per la (3) di C, Zeus è una donna; ma nelle assunzioni non compare alcuna clausola che neghi l'affermazione che Zeus sia una donna, dunque (a) è logicamente implicata da C, (a) è vera in rapporto alle assunzioni C.

Se all'insieme C aggiungiamo la clausola (5):

  1. <==Uomo(x),Donna(x).
otteniamo che:
  1. Madre(Zeus,Ares) <==. (a)
  2. Donna(Zeus)<==. ottenuta dalla(a) e dalla C-(3)
  3. <==Uomo(Zeus). ottenuta dalla (2) e dalla C-(5) (Zeus non è un uomo)
  4. Uomo(Zeus)<==. ottenuta dalla C-(2) e dalla C-(4) (Zeus è un uomo)
abbiamo una contraddizione fra la (3) e la (4): (a) non è logicamente implicata da CU(5), (a) è falsa in rapporto alle assunzioni CU(5).

Conclusioni

Da quanto visto sopra segue che non è necessario parlare di valori di verità, ma è sufficiente parlare di implicazione logica.

Inoltre si può dimostrare che la nozione di implicazione logica può essere definita mediante la nozione di inconsistenza. e viceversa.

La semantica si può ridurre quindi alla nozione di inconsistenza. L'inconsistenza può essere dimostrata:

Definizione di clausola vera

Una clausola è vera in una interpretazione I se e solo se:


Apparato deduttivo


Introduzione

La procedura dimostrativa che qui prenderemo in considerazione è il cosiddetto Principio di Risoluzione.

Il Principio di Risoluzione, introdotto da Robinson nel 1965, è una regola d'inferenza applicabile a tutti gli insiemi di clausole, semplice ed estremamente potente, facile da analizzare e da implementare. Il Principio di Risoluzione si usa per verificare l'insoddisfacibilità di un insieme S di clausole. L'idea è quella di controllare se S contiene la clausola vuota (che corrisponde ad una contraddizione); in questo caso risulta insoddisfacibile. Se S non contiene la clausola vuota, si controlla se questa può essere derivata da S.


Definizione informale del principio di risoluzione

Per ogni coppia di clausole C1 e C2 (dette clausole genitrici), se esiste un letterale L1 in C1 che risulti complementare ad un letterale L2 in C2, si cancellino L1 ed L2, rispettivamente da C1 e da C2, e si costruisca la disgiunzione delle clausole ottenute.

La clausola così costruita è detta risolvente di C1 e C2.

Esempio:

C1:   P(x), ¬R(a)
C2:   S(y), R(a)
      C,  Risolvente di C1 e C2:  P(x), S(y).

Deduzione di risoluzione

Dato un insieme S di clausole, una deduzione (di risoluzione) di C da S è una sequenza finita C1, ..., Ck di clausole tali che ogni Ci è una clausola di S oppure un risolvente di clausole precedenti, e Ck=C.

Una deduzione della clausola vuota („) ottenuta da S viene detta refutazione (o dimostrazione) di S.

La deduzione può essere rappresentata da un albero di deduzione.

Alberi di deduzione

I processi di refutazione che usano la risoluzione si visualizzano con strutture a grafo (gli alberi di deduzione) in cui ogni nodo è una clausola.

Dato un insieme di clausole S, le clausole sono le foglie e se due clausole corrispondenti risolvono, si ha una risolvente detta discendente immediata delle due clausole.

La radice di un grafo di refutazione con risoluzione è la clausola vuota.

Esempio
Dato l'insieme di clausole: {PxvQx,¬Qf(x),¬Pf(z)vRz,¬Rw} l'albero di deduzione è:
   PxvQx    ¬Qf(x)
      \       /
       \     /
        \   /
         Pf(z)  ¬Pf(z)vRz
           \      /
            \    /
             \  /
              Rz    ¬Rw
               \    /
                \  /
                 µ


Concetti per la definizione formale del principio di risoluzione

Definizione di espressione

Per espressione s'intende un termine, un insieme di termini, un atomo, un insieme di atomi, un letterale, una clausola o un insieme di clausole.

Quando in un'espressione non compaiono variabili, questa si dice vuota.

Definizione di sostituzione

Una sostituzione è un insieme finito della forma {v1/t1,...,vn/tn}, dove ogni vi è una variabile, ogni ti è un termine diverso da vi e nessuna coppia di elementi dell'insieme presenta la stessa variabile prima del simbolo di barra.

Una sostituzione si dice chiusa quando in t1,...,tn non compaiono variabili.

Una sostituzione si dice vuota quando non contiene elementi e si denota con e.

Definizione di istanza

Sia q={v1/t1,...,vn/tn} una sostituzione ed E una espressione. Eq è un'espressione ottenuta da E sostituendo contemporaneamente ogni occorrenza della variabile vi (con 1<=i<=n) in E con il termine ti. Eq viene detta istanza di E.

Definizione di composizione di sostituzione

Siano Th={x1/t1,...,xn/tn} e ll={y1/u1,...,ym/um} due sostituzioni. Una composizione di Th e ll è la sostituzione ottenuta dall'insieme {x1/t1ll,...,xn/tn ll,y1/u1,...,ym/um} cancellando La composizione di Th e ll si denota con Th°ll.

Definizione di unificatore

Una sostituzione viene detta unificatore per un insieme {E1,...Ek} di espressioni se e solo se

E1Th = E2Th = ... = EkTh

L'insieme {E1,...Ek} viene detto unificabile se per esso esiste un unificatore.

Definizione di unificatore più generale

Un unificatore y per un insieme {E1,...Ek} di espressioni è detto unificatore più generale se e solo se per ogni unificatore q dell'insieme esiste una sostituzione 1 tale che

Th = y°ll

e

E1 g ll = E2 Th = ... = Ek Th

Esempio: la sostituzione {x/A} è l'unificatore più generale per le espressioni P(A,yz) e P(x,y,z).

Definizione di fattore

Se due o più letterali (con lo stesso simbolo) di due clausole C possiedono un unificatore più generale g allora Cg viene detto fattore di C.

Se Cg è una clausola unitaria, viene detto fattore unitario di C.

Definizione di risolvente binario

Siano C1 e C2 due clausole (dette genitrici) senza variabili comuni. Siano L1 ed L2 rispettivamente due letterali in C1 e C2. Se L1 e not L2 possiedono un unificatore più generale g, la clausola

(C1g-L1g) >> (C2g-L2g)

viene detta risolvente binario di C1 e C2. I letterali L1 e L2 vengono detti letterali su cui si è risolto.

Definizione di risolvente

Un risolvente di clausole genitrici C1 e C2 è uno dei seguenti risolventi binari:


Definizione formale del principio di risoluzione

Risoluzione senza considerare le variabili

Data una clausola C1 contenente un letterale L1 e un'altra clausola C2 contenente il letterale ¬L2 (con L1 = L2), possiamo inferire la clausola consistente di tutti i letterali di entrambe le clausole senza la coppia complementare. La clausola che si ottiene è detta risolvente.

C1                      con L1 e C1
C2                      con ¬L2 e C2
-----------------------
(C1-{L1}) U (C2-{¬L2})
La Risoluzione applicata a due clausole unitarie produce la clausola vuota.

Risoluzione considerando la presenza di variabili

In questo caso si ridefinisce il Principio di Risoluzione usando la nozione di unificazione.

Date due clausole C1 e C2, se c'è un letterale L1 in C1 e un letterale ¬L2 in C2 tali che C1 e C2 hanno un "unificatore più generale" y, allora possiamo inferire la clausola ottenuta applicando la "sostituzione" all'unione di C1 e C2 meno i letterali complementari.

C1                          con L1eC1
C2                          con ¬L2eC2
---------------------------
((C1-{L1}) U (C2-{¬L2})) y
I casi (1) e (2) sono relativi alla risoluzione per il Calcolo Proposizionale.

Risoluzione considerando il caso in cui due letterali con lo stesso simbolo hanno variabili diverse

Con questo terzo caso si estende la risoluzione al Calcolo dei Predicati del primo ordine ottenendo la definizione generale del Principio di Risoluzione. Ridefiniamo il Principio di Risoluzione considerando la nozione di fattore.

Date due clausole C1 e C2, se c'è un letterale L1 in un fattore C1' di C1 e un letterale ¬L2 in un fattore C2' di C2 tali che L1 e L2 hanno un unificatore più generale g, allora diciamo che due clausole C1 e C2 si risolvono.

C1                          con L1eC1'
C2                          con ¬L2eC2'
--------------------------
((C1'-{L1})U(C2'-{¬L2}))y  dove L1y=L2y


Usi del principio di risoluzione

Uso della risoluzione per dimostrare l'inconsistenza

La proprietà specifica del principio di risoluzione è quella di dimostrare l'inconsistenza di un insieme di clausole. Per il seguente teorema:
(A1,...,An) ==> B <==> (A1,...,An,¬B)   è inconsistente
Il principio può essere usato per dimostrare la conseguenza logica di una formula a partire da un dato insieme di formule (cioè per dimostrare un teorema inteso come formula derivabile da altre). Per dimostrare che un insieme S di formule implica logicamente la formula s si nega s e la si aggiunge ad S per ottenere l'insieme S'. Si converte S' in forma clausale e si applica la risoluzione. Se viene prodotta la clausola vuota, S' è inconsistente e, per il teorema suddetto, S implica logicamente s (si ha dunque una refutazione). La capacità di dimostrare il sussistere o meno della conseguenza logica apre il campo alle diverse applicazioni che si hanno del principio.

Uso della risoluzione per rispondere a domande del tipo "vero-falso"

Una applicazione del processo di refutazione si ha in presenza di domande (viste come teoremi da dimostrare) che implicano una risposta del tipo " vero " o " falso ". Facciamo un esempio:
P(Paolo,Mario)
P(Marco,Giulia)
¬P(x,y),G(x,y)
dove P è il predicato "essere padre" e G è il predicato "essere genitore". La nostra domanda (cioè il teorema da dimostrare) è: " Paolo è genitore di Mario ?", cioè G(Paolo,Mario).

Neghiamo questa formula (¬G(Paolo,Mario)) e l'aggiungiamo all'insieme di formule date:

1- P(Paolo,Mario)
2- P(Marco,Giulia)
3- ¬P(x,y),G(x,y)
4- ¬G(Paolo,Mario)
5- G(Paolo,Mario)           1.3
6- G(Marco,Giulia)          2.3
7- ¬P(Paolo,Mario)          3.4
8- { }                      4.5
9- { }                      1.7
La derivazione della clausola vuota corrisponde alla risposta "vero".

Uso della risoluzione per rispondere a domande con uno spazio vuoto

È possibile inoltre dare risposta a domande con uno spazio vuoto. Una domanda con uno spazio vuoto è una proposizione del calcolo proposizionale con variabili libere che rappresentano gli spazi vuoti da riempire. Lo scopo è trovare una sostituzione per le variabili tale che un insieme di formule S implichi logicamente la proposizione ottenuta dopo la sostituzione.

La domanda "chi è il genitore di Mario?", è rappresentata dalla formula P(x,Mario). La risposta sarà un letterale, cioè un termine della forma:

Risposta(v1,...,vn)
dove le variabili v1,...,vn sono le variabili libere nella domanda.

Per rispondere alla domanda si forma una disgiunzione di questa e del letterale di risposta e si converte tutto in forma clausale:

{¬P(x,Mario),Risposta(x)}
In questo caso non si ha un processo di refutazione, ma il processo si ferma appena viene derivata la clausola consistente del solo letterale di risposta.
1- P(Paolo,Mario)
2- P(Marco,Giulia)
3- P(x,y),G(x,y)
4- ¬P(z,Mario),Risposta(z)
5- G(Paolo,Mario)               1.3
6- G(Marco,Giulia)              2.3
7- ¬P(z,Mario),Risposta(w)      3.4
8- Risposta(Paolo)              4.5
9- Risposta(Paolo)              1.7
Il principio di risoluzione ha molte altre applicazioni tra cui le principali sono: dimostrazioni dei teoremi della matematica; verifica correttezza dei programmi per calcolatori.


Risoluzione ed equivalenza

Il Principio di Risoluzione non è completo per la refutazione se nell'insieme di clausole cui si vuole applicare il principio compare la relazione di equivalenza.

La risoluzione non ha meccanismi per sostituire termini costanti riconosciuti come equivalenti (1=1) e di conseguenza è impossibile dimostrare alcuni risultati anche se sono logicamente implicati dalle premesse.

È possibile ovviare a questa limitazione in 3 modi:

  1. Riscrivere le clausole in modo che i termini costanti di equivalenza non siano frapposti ad altri termini.

    Esempio:

    la definizione di fattoriale:
         Fact(0)=1
         Fact(k)=K*Fact(k-1)
    si riscrive come: 
         Fact(0)=1
         (k-1)=j & Fact(j)=m & k*m=n ==> Fact(k)=n
    
  2. Assiomatizzare la relazione di equivalenza
    x              x = x
    x  y     x = y  ==>  y = x
    x y z   x = y & y = z ==> x = z
    
    e fornire appropriati assiomi di sostituzione.

    Nel caso dell'esempio di fattoriale:

    k=j & Fact(j)=m   Fact(k)=m
    j=m & k*m=n   k*j=n
    
  3. Nessuna di queste tecniche è perfetta, ma esiste una regola di inferenza detta paramodulazione che, aggiunta al principio di risoluzione, garantisce la completezza della refutazione anche per clausole che contengono l'equivalenza.


Strategie di risoluzione

Introduzione

Dato il potere deduttivo della risoluzione e la sua facile implementazione su calcolatore, l'obiettivo è quello di renderla il più efficiente possibile. La risoluzione, vista come regola d'inferenza capace di generare nuove clausole a partire da altre date, usata senza limitazioni può generare clausole inutili. Ad esempio, letterali che non fanno parte di nessuna coppia complementare sono ridondanti ai fini della refutazione, come pure le tautologie.

Esistono strategie di cancellazione per eliminare le clausole ridondanti, ma l'eliminazione non può essere considerata un rimedio "economico". Infatti si è sprecato tempo (e nel caso di un calcolatore memoria e altre risorse) per generare le clausole inutili, riconoscerle come tali ed eliminarle.

È dunque necessario disporre di procedure per la dimostrazione di teoremi che impediscano la produzione di un numero ridondante di clausole. Sono stati studiati diversi affinamenti della risoluzione (risoluzione semantica, risoluzione con blocco, ... Chang-Lee); qui prenderemo in esame quelli che vengono usati dal PROLOG, il linguaggio logico che costituisce l'obiettivo di questo lavoro.

Dal principio di risoluzione generale alla strategia usata nel PROLOG i successivi affinamenti della risoluzione sono i seguenti:

Risoluzione lineare

L' idea centrale su cui si fonda il processo di Risoluzione Lineare è quella di un ragionamento a catena: data una clausola, la si risolve con un'altra ottenendo un risolvente e si risolve quest'ultimo con un'altra clausola fino ad ottenere la clausola vuota.

Un risolvente lineare è quello in cui almeno una delle due clausole genitrici è o nell'insieme di clausole iniziale o è un predecessore dell'altra.

Le ridondanze che si ottengono da un uso "incontrollato" della risoluzione sono dovute al fatto che si risolvono clausole intermedie con altre clausole intermedie. Il vantaggio che offre la risoluzione lineare è quello d'impedire inutili inferenze focalizzando la deduzione su un predecessore della clausola su cui si sta operando o su un elemento dell'insieme di clausole iniziale.

Definizione di risoluzione lineare
Dato un insieme di clausole S e una clausola C0 in S, una deduzione lineare di Cn da S con clausola iniziale C0 è una deduzione della forma
  C0 |  / B0
     | /
  C1 |/ / B1
     | /
  C2 |/ /
     | /
Cn-1 |/ / Bn-1
     | /
  Cn |/
dove:
  1. Per i = 0,1, ..., n-1, Ci+1 è un risolvente di Ci (detto Clausola centrale), e B1 (detto Clausola laterale), e
  2. ogni Bi si trova in S, oppure è un Cj per qualche j, j< i.

Risoluzione ordinata

La risoluzione ordinata è un caso particolare di strategia di risoluzione in cui ogni clausola viene trattata come un insieme lineare ordinato. La risoluzione ordinata è una strategia ancora più efficiente di quella lineare.

Purtroppo non è completa per la refutazione, cioè non garantisce sempre la derivazione della clausola vuota da un insieme inconsistente di clausole; ma, restringendo l'attenzione alle clausole di Horn, la completezza si recupera.

Definizione di clausola ordinata
Una clausola ordinata è una sequenza di letterali distinti.

La clausola rimane una disgiunzione di letterali; l'unica differenza è che l'ordine dei letterali non è irrilevante, ma viene chiaramente specificato.

Definizione di letterale maggiore
Un letterale L2 viene detto maggiore di un letterale L1 in una clausola ordinata (oppure L1 risulta minore di L2) se e solo se L2 segue L1 nella sequenza specificata dalla clausola ordinata.

P(x) v Q(y) v R(z)

R(z) è il letterale maggiore della clausola.

Definizione di fattore ordinato
Se due o più letterali (con lo stesso simbolo) di una clausola ordinata C possiedono un unificatore più generale s, la clausola ordinata ottenuta dalla sequenza Cs eliminando tutti i letterali identici ad un letterale minore nella sequenza viene detta fattore ordinato di C.
Definizione di risolvente binario ordinato
Siano C1 e C2 clausole ordinate senza variabili in comune. Siano L1 ed L2, rispettivamente, due letterali di C1 e di C2. Se L1 e ¬L2 possiedono un unificatore più generale s; e se C è la clausola ordinata ottenuta concatenando le sequenze C1 e C2, eliminando L1 e L2 e cancellando tutti i letterali identici ad un letterale minore dalla sequenza ottenuta, allora C viene detto risolvente binario ordinato di C1 su C2. I letterali L1 ed L2 vengono detti letterali su cui si risolve.
Definizione di risoluzione ordinata
Dato un insieme S di clausole ordinate e una clausola ordinata C0 appartenente ad S, una deduzione ordinata lineare di Cn a partire da S con clausola iniziale ordinata C0 è una deduzione della forma:
  C0 |  / B0
     | /
  C1 |/ / B1
     | /
  C2 |/ /
     | /
Cn-1 |/ / Bn-1
     | /
  Cn |/
che soddisfa le seguenti condizioni:
  1. Per i = 0,1, ..., n-, Ci+1 è un risolvente ordinato di Ci (detto clausola ordinata centrale) su Bi (detto clausola ordinata laterale); il letterale su cui si risolve in Ci (o un fattore ordinato di Ci) è l'ultimo letterale, cioè il maggiore.
  2. Ogni Bi è una clausola ordinata di S oppure una istanza di un Cj, j< i.
  3. Nessuna tautologia si trova nella deduzione.

Risoluzione diretta

La risoluzione diretta è un importante affinamento e restrizione della risoluzione lineare ordinata; in una risoluzione diretta la domanda (cioè il teorema da dimostrare) è costituito da una congiunzione di letterali e l'insieme di clausole iniziali consiste interamente di clausole dirette. Le formule a cui viene applicata la risoluzione diretta vengono rappresentate in forma AND/OR.
Definizione di clausola diretta
Una clausola diretta è una clausola di Horn (cioè una clausola con al più un letterale positivo) in cui il letterale positivo sta all'inizio o alla fine della clausola.

Esempio:

(a) {¬L1,...,¬Ln,C}   oppure
(b) {C,¬L1,...,¬Ln}

Come si è detto, la formula che rappresenta la domanda è una congiunzione di letterali, dunque non è più una clausola propriamente detta (Definizione: Una clausola è una disgiunzione di zero o più letterali).

Risoluzione diretta "in avanti"
La forma della risoluzione diretta dipende dalla direzionalità delle clausole nell'insieme di clausole di base. Per alcune clausole (in avanti) si usa la risoluzione " in avanti " (forward), per altre clausole (all'indietro) si usa la risoluzione "all'indietro" (backward).

Una clausola "in avanti" è una clausola in cui il letterale positivo viene alla fine (L1, ..., L2 ==> C).

La risoluzione "in avanti" si comporta nel seguente modo:

dati:

otteniamo risolvendo sui letterali positivi:
  1. M(x) ==> P(x)
  2. ==> M(A)
  3. P(z) ==>
  4. ==> P(A) 1.2
  5. ==> { } 3.4
La clausola positiva M(A) è risolta con la prima clausola per ottenere la conclusione intermedia positiva P(A).
Risoluzione diretta "all'indietro"
Una clausola "all'indietro" è una clausola in cui il letterale positivo è posto all'inizio della clausola (C <== L1,...,Ln).

La risoluzione "all'indietro" si comporta nel seguente modo:

dati:

otteniamo, risolvendo sui letterali negativi:
1- P(x) <== M(x)
2- M(A) <==
3-      <== P(z)
4-      <== M(z)    1.3
5-        { }     2.4
La clausola negativa P(z) è risolta con la prima clausola per produrre una conclusione intermedia negativa M(z).

Metodi di ricerca su alberi

Ogni processo di deduzione può essere rappresentato da un albero di deduzione e si può osservare che trovare una refutazione può essere identificato con una ricerca su albero.

Le principali tecniche di ricerca su albero sono due:

Metodo di ricerca in ampiezza
Il metodo di ricerca in ampiezza esplora tutti i rami di un albero di deduzione della stessa profondità, n passi dopo la radice, prima di esplorare tutti i rami della profondità successiva, n+1 passi dopo la radice.

Graficamente una ricerca in ampiezza si può rappresentare come:

Profondità 0    Profondità 1    Profondità 2    Profondità 3
     o               o             o            o
                     |             |            |
                     |             |            |
                     o             o            o
                                  / \          / \
                                 /   \        /   \
                                o     o      o     o
                                             |     |
                                             |     |
Metodo di ricerca in profondità
Il metodo di ricerca in profondità esplora un ramo dell'albero di deduzione alla volta. Quando giunge ad un nodo terminale dell'albero torna indietro (backtracking) ed esplora il ramo più vicino a quello prima esplorato.

Graficamente una ricerca in profondità si può rappresentare come:

         Ramo 1         Ramo 2          Ramo 3             Ramo 4
          1|             1|              1|                 1|
         2/             2/               / \                / \
        3|             3|               |   |8             |   |8
       4/              / \6            / \  |9            / \  |9
      5|              |   |7          |   |/10           |   |/ \11


Metateoria - Teoremi di correttezza e di completezza del principio di risoluzione


Introduzione

Una procedura inferenziale si dice corretta se e solo se ogni proposizione che può essere derivata da un insieme di formule (o clausole) usando quella procedura è logicamente implicata da quell'insieme di formule (o clausole).

Una procedura inferenziale si dice completa se e solo se ogni proposizione logicamente implicata da un insieme di formule (o clausole) può essere derivata usando quella procedura.


Teorema di correttezza

Dimostrare che il Principio di Risoluzione è corretto significa far vedere che, se viene generata la clausola vuota, l'insieme originario delle clausole è insoddisfacibile.
Ipotesi
Se c'è una deduzione di risoluzione della clausola C da un insieme di clausole S.
Tesi
S implica logicamente C.
Dimostrazione


Teorema di completezza

Introduzione

Il Principio di Risoluzione non è completo nel senso sopra definito. Infatti, da solo, non può generare tutte le clausole che sono implicate da un dato insieme di clausole.

Per esempio la tautologia (cioè la formula sempre vera) {P,¬P} è logicamente implicata da ogni insieme di formule, ma la risoluzione non produce questa clausola da un insieme vuoto di clausole. Inoltre non è in grado di trattare proposizioni che contengano le relazioni di equivalenza; problema questo cui è possibile ovviare utilizzando opportune strategie.

Tuttavia, per insiemi di clausole senza proposizioni che contengano le relazioni di equivalenza e non equivalenza, la procedura è completa per la refutazione; cioè, dato un insieme di proposizioni insoddisfacibile, garantisce la produzione della clausola vuota.

Universo di Herbrand

Introduzione
Per dimostrare l'inconsistenza (o insoddisfacibilità) di un insieme di clausole S, dobbiamo far vedere che è falso sotto tutte le interpretazioni.

Per l'indecidibilità del Calcolo dei Predicati sappiamo che è impossibile prendere in considerazione tutti i possibili domini. È possibile però fissare un dominio particolare H tale che S sia inconsistente se e solo se è falso sotto tutte le interpretazioni in questo dominio.

Questo dominio viene detto Universo di Herbrand di S.

Definizione di universo di Herbrand
Sia H0 l'insieme delle costanti presenti in S. Se non compaiono costanti, H0 è costituito da un'unica costante introdotta d'ufficio, cioè H0 = {a}.

Per i=0,1,2,..., sia Hi+1 l'unione di Hi e dell'insieme di tutti i termini della forma fn(t1,...,tn) per tutte le funzioni ad n-posti presenti in S dove tj=1,...,n sono elementi dell'insieme Hi.

Ogni Hi viene detto insieme delle costanti di livello di i, e Hoo viene detto Universo di Herbrand.

Esempio:

Sia S = {P(a) v P(x) v Pf(x)}.

    H0 = {a}
    H1 = {a,f(a)}
    Hoo = {a,f(a),f(f(a)),......}.
Definizione di Base di Herbrand
Sia s un insieme di clausole. L'insieme di atomi chiusi della forma Pn(t1,...,tn) per tutti i predicati Pn ad n-posti presenti in S, dove t1,...,tn sono elementi dell'universo di Herbrand di S, viene detto insieme delle forme atomiche, o base di Herbrand di S.
Definizione di istanza chiusa
Una istanza chiusa di una clausola C di un insieme S di clausole è una clausola ottenuta sostituendo le variabili in C con elementi dell'universo di Herbrand di S.
Definizione di H-interpretazione
Siano S un insieme di clausole, H l'universo di Herbrand di S ed I una interpretazione di S su H. I viene detta H-interpretazione di S se soddisfa le seguenti condizioni:
  1. I associa tutte le costanti di S a se stesse.
  2. Siano f un simbolo di funzione ad n-posti e h1,...,hn elementi di H. In I, ad f viene assegnata la funzione che porta (h1,...,hn) (una n-pla di elementi di Hn), in f(h1,...,hn), (un elemento di H).
Sia A={A1,A2,...,An,...} l'insieme delle forme atomiche di S. Una H-interpretazione I può essere rappresentata tramite un insieme I={m1,m2,...,mn,...} in cui mi è Aj oppure ¬Aj, per j=1,2,...

Il significato di questo insieme è che se mj è Aj, ad Aj viene assegnato il valore "vero", altrimenti otterrà il valore "falso".

Esempio:

S={P(x)vQ(x),Rf(x)}.
L'universo di Herbrand H di S è:
H={a,f(a),f(f(a)),...}.
L'insieme delle forme atomiche di S è:
A={P(a),Q(a),R(a),Pf(a),Qf(a),Rf(a),......}.

Alcune H-interpretazioni per S sono:

I1={P(a),Q(a),R(a),Pf(a),Qf(a),Rf(a),......}
I2={¬P(a),¬Q(a),¬R(a),¬Pf(a),¬Qf(a),......}
I3={¬P(a),Q(a),¬R(a),¬Pf(a),Qf(a),Rf(a),......}.
Teorema di Herbrand
Un insieme S di clausole è inconsistente se e solo se S è falso sotto tutte le H-interpretazioni di S.

Teorema di completezza

Teorema di Herbrand
Se un insieme finito S di clausole è inconsistente, allora la base di Herbrand per S è inconsistente.
Definizione di numero di occorrenze di un letterale
Il numero di occorrenze di un letterale in un insieme di clausole è la somma del numero delle occorrenze di letterali in ogni clausola dell'insieme.
Definizione di numero di letterali eccedenti
Il numero di letterali eccedenti in un insieme di clausole è il numero delle occorrenze dei letterali meno il numero delle clausole. Dunque il numero di letterali eccedenti è un'indicazione del numero di clausole nell'insieme con più di un letterale.
Teorema di completezza per clausole chiuse
Se un insieme di clausole chiuse S è inconsistente, allora c'è una deduzione di risoluzione della clausola vuota ( ) da S.
Lemma di generalizzazione I
Se C1 e C2 sono due clausole con nessuna variabile condivisa, se C1 e C2 sono istanze chiuse di C1 e C2 e se C' è un risolvente di C1 e C2, allora c'è un risolvente C di C1 e C2 tale che C' è un'istanza di sostituzione di C.

Dim...

Lemma di generalizzazione II
Se S' è un insieme di istanze chiuse di clausole in S e c'è una deduzione di risoluzione della clausola C' da S, allora c'è una deduzione di risoluzione della clausola C da S tale che C' è un'istanza di sostituzione di C.

Dim...

Teorema di completezza
Se un insieme S di clausole è inconsistente, allora c'è una deduzione di risoluzione della clausola chiusa da S.

Dimostrazione......

Alberi semantici per l'universo di Herbrand

Definizione di albero semantico per l'universo di Herbrand
Dato un insieme S di clausole, sia A l'insieme delle forme atomiche di S.

Un albero semantico per S è un albero T rivolto verso il basso in cui ad ogni ramo è legato un insieme finito di atomi o di negazioni di atomi appartenenti ad A in modo tale che:

  1. Per ogni nodo N esiste un numero finito di rami immediati L1, ..., Ln che partono da N.
  2. Per ogni nodo N, sia I(N) l'unione di tutti gli atomi legati ai rami del sottoalbero di T che scende fino ad N includendolo. I(N) non conterrà alcuna coppia complementare.

Esempio

Dato l'insieme S={P(x)vQ(x)vR(x)}, l'insieme A delle forme atomiche di S è:

A={P(a),Q(a),R(a)}.

L'albero seguente è un albero semantico per S:

                          N
                        /   \
                      /       \
                    /           \
              P(a)/               \¬P(a)
                /                   \
              /                       \
             N1                       N2
            / \                       / \
           /   \                     /   \
          /     \                   /     \
     Q(a)/       \¬Q(a)        Q(a)/       \¬Q(a)
        /         \               /         \
      N3           N4           N5           N6
      /\           /\           /\           /\
     /  \         /  \         /  \         /  \
R(a)/    \¬R(a)  /    \   R(a)/    \¬R(a)  /    \
   /      \ R(a)/      \¬R(a)/      \ R(a)/      \¬R(a)
  N7      N8  N9      N10  N13     N12  N13     N14
Definizione di albero completo
Sia A={A1,A2...,Ak...} l'insieme delle forme atomiche di un insieme S di clausole. Un albero semantico per S viene detto completo se e solo se, per ogni nodo terminale N dell'albero semantico, I(N) contiene Ai o ¬Ai per i=1,2,... Ai viene interpretato come "vero"; ¬Ai come "falso".

L'albero semantico dell'esempio precedente è completo.

Definizione di interpretazione parziale
I(N) viene detta interpretazione parziale per S essendo un sottoinsieme di una interpretazione per S.

Un albero semantico completo per S è infinito se è infinito l'insieme A delle forme atomiche dell'insieme S di clausole.

Un albero semantico completo per S corrisponde ad un esame esaustivo di tutte le possibili interpretazioni di S.

Se S è inconsistente, allora risulta non vero in tutte le interpretazioni dell'albero semantico. Si può dunque evitare di espandere un nodo Ni se I(Ni) rende falso S.

Nell'esempio precedente l'interpretazione

I(N1-3-7) = {P(a),Q(a),R(a)}
rende vero l'insieme S.

Ma l'interpretazione

I(N2-6-13) = {¬P(a),¬Q(a),R(a)}

non rende vero l'insieme S.

Definizione di modello di un insieme di clausole
Si dice modello di un insieme di clausole l'insieme delle forme atomiche di S interpretate su un ramo dell'albero.

Gli insiemi I(N1-3-7) e I(N2-6-13) sono modelli dell'insieme S.

Un modello non soddisfa una clausola se esiste un esempio base della clausola, ottenuto dai termini dell'universo di Herbrand, che ha valore "falso" nella interpretazione specificata nel modello.

I(N2-6-13) non soddisfa S.

Definizione di nodo di fallimento
Un nodo è detto nodo di fallimento se I(N) falsifica alcune istanze in S, ma I(N') non rende falsa alcuna istanza chiusa di una clausola in S per ogni nodo N' precedente di N.

Nell'esempio, N12 è un nodo di fallimento.

Definizione di albero chiuso
Un albero semantico T viene detto chiuso se e solo se ogni ramo di T termina in un nodo di fallimento.

Un albero semantico di un insieme inconsistente di clausole è chiuso ed ha un numero finito di nodi sopra i nodi di fallimento.

Definizione di nodo di inferenza
Un nodo N di un albero semantico chiuso viene detto nodo di inferenza se tutti i discendenti immediati di N sono nodi di fallimento.
Teorema di Herbrand
Un insieme S di clausole è inconsistente se e solo se in corrispondenza ad ogni albero semantico completo di S esiste un albero semantico finito chiuso.

Dimostrazione...

(Versione II: Un insieme S di clausole è inconsistente se e solo se esiste un insieme finito inconsistente S' di istanze chiuse di clausole di S.)

Teorema di completezza con alberi semantici

Lemma di generalizzazione
Se C1' e C2' sono rispettivamente istanze di C1 e C2 e se C' è un risolvente di C1' e C2', allora esisterà un risolvente C di C1 e C2 tale che C' è un'istanza di C.

Dimostrazione........

Teorema di completezza del principio di risoluzione
Un insieme S di clausole è inconsistente se e solo se esiste una deduzione della clausola vuota (µ) da S.

Dimostrazione...........