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 123<br />
9 ← r<br />
10 ← u<br />
11 ←<br />
Queste sono le due <strong>in</strong>put-refutazioni dell’<strong>in</strong>sieme<br />
S = {p ∨ ¬r ∨ ¬q, q ∨ ¬t ∨ ¬u, r ∨ ¬u, u, t, q, ¬p}<br />
con top ¬p. Il motore <strong>in</strong>ferenziale dei l<strong>in</strong>guaggi <strong>di</strong> programmazione logica si<br />
basa tuttavia oltre che sulla regola <strong>di</strong> risoluzione anche su alcune restrizioni<br />
pratiche, per ragioni <strong>di</strong> controllo; ad esempio le clausole del programma sono<br />
date <strong>in</strong> modo or<strong>di</strong>nato, e per sod<strong>di</strong>sfare un sottogoal le clausole <strong>di</strong> programma<br />
sono passate <strong>in</strong> rassegna nell’or<strong>di</strong>ne fissato, a cercare una clausola con testa<br />
che unifichi con il sottogoal, e viene scelta la prima che si <strong>in</strong>contra. Questo<br />
v<strong>in</strong>colo <strong>di</strong>strugge la completezza, perchè ad esempio il programma<br />
p ← q<br />
q ← p<br />
p ←<br />
entra <strong>in</strong> ciclo con il goal ← p e il goal non è sod<strong>di</strong>sfatto, nonostante p sia<br />
conseguenza logica <strong>di</strong> {p → q, q → p, p}. Per via <strong>di</strong> queste e altre restrizioni,<br />
si impone un’attenta scr<strong>it</strong>tura or<strong>di</strong>nata dei programmi, o l’<strong>in</strong>troduzione <strong>di</strong><br />
coman<strong>di</strong> permessi dal l<strong>in</strong>guaggio che impe<strong>di</strong>scano <strong>di</strong> tornare a clausole già<br />
considerate.<br />
Il proce<strong>di</strong>mento <strong>in</strong>ferenziale sopra descr<strong>it</strong>to, nella notazione della programmazione<br />
logica, corrispondente alla <strong>in</strong>put-risoluzione, si chiama anche<br />
nella letteratura specifica sld-risoluzione, sld per Selection Left for Def<strong>in</strong><strong>it</strong>e<br />
clauses: “clausole def<strong>in</strong><strong>it</strong>e” è un altro nome per le clausole <strong>di</strong> Horn; la “scelta<br />
a s<strong>in</strong>istra” si riferisce alla scelta <strong>di</strong> prendere <strong>in</strong> considerazione sempre il<br />
primo, a s<strong>in</strong>istra, sottogoal <strong>di</strong> un goal multiplo; la scelta corrisponde a quella<br />
della risoluzione or<strong>di</strong>nata <strong>di</strong> considerare l’ultimo, a destra, letterale come<br />
letterale da risolvere, secondo la rappresentazione del goal ¬qn ∨ . . . ∨ ¬q1<br />
come ← q1, . . . , qn.<br />
Esercizio 5.2.6. Verificare e spiegare perché non può esistere alcuna <strong>in</strong>putrefutazione<br />
dell’<strong>in</strong>sieme S = {p ∨ q, ¬p ∨ q, ¬q ∨ p, ¬p ∨ ¬q} dell’esempio <strong>di</strong><br />
p. 116.<br />
Esercizio 5.2.7. Verificare che l’<strong>in</strong>sieme <strong>in</strong>sod<strong>di</strong>sfacibile <strong>di</strong> clausole S =<br />
{p ∨ ¬r, q ∨ ¬r, r ∨ ¬q ∨ p, ¬p ∨ ¬q, q ∨ r} non ammette una <strong>in</strong>put-refutazione.<br />
Esercizio 5.2.8. Spiegare perché l’<strong>in</strong>sieme {p ∨ q, ¬p ∨ ¬q, p, q} pur non<br />
essendo un <strong>in</strong>sieme <strong>di</strong> clausole <strong>di</strong> Horn ammette una <strong>in</strong>put-refutazione.