Logica Matematica Corso di Laurea in Informatica ... - Mbox.dmi.unict.it
Logica Matematica Corso di Laurea in Informatica ... - Mbox.dmi.unict.it
Logica Matematica Corso di Laurea in Informatica ... - Mbox.dmi.unict.it
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
5.2. CLAUSOLE DI HORN E PROGRAMMAZIONE LOGICA 121<br />
r ←, ed è perciò sod<strong>di</strong>sfatto. Il goal <strong>di</strong>venta ←, o la clausola vuota, e il goal<br />
orig<strong>in</strong>ario è sod<strong>di</strong>sfatto.<br />
Se il proce<strong>di</strong>mento non arrivasse a questa conclusione, ma si <strong>in</strong>terrompesse<br />
con qualche sottogoal non sod<strong>di</strong>sfatto, o entrasse <strong>in</strong> ciclo, non si <strong>di</strong>rebbe<br />
ancora che il goal ← p non è sod<strong>di</strong>sfatto, o fallisce; si esplorerebbero prima<br />
altre possibil<strong>it</strong>à <strong>di</strong> unificazione dei vari sottogoal, e solo se tutte fallissero<br />
si <strong>di</strong>rebbe che il goal è fall<strong>it</strong>o, il che corrisponde alla non esistenza <strong>di</strong> una<br />
<strong>in</strong>put-refutazione con il goal come top, o alla sod<strong>di</strong>sfacibil<strong>it</strong>à delle clausole<br />
del programma più ¬p.<br />
Si faccia attenzione che <strong>di</strong>re nel contesto della programmazione che un<br />
goal ← p è sod<strong>di</strong>sfatto dal programma P significa <strong>di</strong>re nel contesto logico <br />
che l’<strong>in</strong>sieme P ∪ {¬p} è <strong>in</strong>sod<strong>di</strong>sfacibile<br />
Ad esempio, per il programma<br />
p ← q<br />
q ← u<br />
q ← r<br />
r ←<br />
il goal ← p unifica con la prima clausola e il nuovo goal è ← q, che unifica con<br />
la seconda, ma <strong>di</strong>venta ← u e la ricerca si <strong>in</strong>terrompe. Se si torna <strong>in</strong><strong>di</strong>etro e si<br />
unifica ← q con la testa della terza clausola, si ottiene ← r che è sod<strong>di</strong>sfatto<br />
unificando con r ←.<br />
Le due strade segu<strong>it</strong>e corrispondono ai due rami del seguente albero delle<br />
derivazioni l<strong>in</strong>eari or<strong>di</strong>nate da {p ∨ ¬q, q ∨ ¬u, q ∨ ¬r, r, ¬p} con top ¬p:<br />
Invece il programma<br />
¬p<br />
↓p ∨ ¬q<br />
¬q<br />
q ∨ ¬u↙ ↘q ∨ ¬r<br />
¬u ¬r<br />
↓r<br />
✷<br />
p ← q, r<br />
q ← r<br />
q ← p<br />
<strong>in</strong>terrogato con il goal ← p esplora due strade, una che fallisce con il sottogoal<br />
← r, l’altra che entra <strong>in</strong> ciclo, <strong>in</strong> corrispondenza al seguente albero delle<br />
derivazioni da {p ∨ ¬r ∨ ¬q, q ∨ ¬r, q ∨ ¬p} con top ¬p,