next up previous Sommario
Next: 5.1 Unione e intersezione Up: tesi Previous: 4. La terminazione di   Sommario

5. Operatori su teorie logiche e NI per programmi non definiti

Un'importante estensione della programmazione logica è quella che permette la manipolazione di teorie logiche attraverso una loro descrizione a metalivello. Potendo disporre di operatori di trasformazione e composizione su tale descrizione si otterrebbero risultati interessanti dal punto di vista dell'ingegneria del software, quali la modularità, lo sviluppo incrementale di programmi, la programmazione in-the-large, la metaprogrammazione. Inoltre alcuni problemi classici della logica computazionale quali l'evoluzione dinamica di teorie, il ragionamento non monotono e la trattazione di relazioni di ereditarietà tra teorie trovano una più naturale formulazione grazie a tali operatori.

È possibile per esempio, grazie agli operatori di ritrazione e di unione, costruire teorie con eccezioni. Data una teoria T, che rappresenta la normale conoscenza su un problema, e date alcune eccezioni, tramite questi operatori si può ottenere una nuova teoria T' nella quale si tiene conto delle eccezioni: si ritrae l'informazione che non è più valida e si aggiungono le eccezioni.



In questo capitolo viene data la definizione formale dei metaoperatori, sia di quelli di base, unione, intersezione e negazione eseguita secondo la negazione intensionale, sia di alcuni derivati, con particolare riferimento a quelli che permettono di ricostruire relazioni gerarchiche tra teorie.

Su una particolare classe di programmi sarà inoltre possibile ridefinire la negazione intensionale sfruttando gli operatori di composizione.

Viene poi presentato il concetto di coppia di programmi $<P^{+}, P^{-}>$, risultato del processo di complementazione: $P^{+}$ rappresenta l'informazione positiva di P, mentre $P^{-}$ quella negativa. Viene così ottenuta una simmetria tra conoscenza positiva e negativa, permettendo il calcolo di risposte anche a interrogazioni negative.

Su questi concetti si sviluppa il lavoro originale di questa tesi: il metodo per la negazione presentato nel prossimo capitolo sfrutta gli operatori di base per realizzare una rappresentazione come coppia di parte positiva e parte negativa del programma logico da complementare; inoltre la fase di realizzazione nel linguaggio Gödel mette in pratica le definizioni date in questo capitolo fornendo una serie di metaoperatori che, insieme all'operatore di complementazione proposto, permettono di manipolare programmi logici.



Subsections
next up previous Sommario
Next: 5.1 Unione e intersezione Up: tesi Previous: 4. La terminazione di   Sommario
Roberto Giungato 2001-03-14