10.06.2013 Views

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

SHOW MORE
SHOW LESS

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,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!