Tesi di Laurea
Studio e realizzazione di metaoperatori su programmi logici
Università degli Studi di Pisa - Dipartimento di Informatica
Candidati: Roberto Giungato e Giulia Mura
Relatori: Prof. Franco Turini e Prof. Dino Pedreschi
Controrelatore: Prof. Roberto Barbuti
Anno accademico: 1992/93
Pubblicazione online: 8 aprile 2001
Sommario della Tesi
- 1. Introduzione
- 2. Fondamenti di programmazione logica
- 2.1 Linguaggi del primo ordine e programmi logici
- 2.2 Unificazione
- 2.3 Risoluzione SLD
- 2.4 Semantica dichiarativa
- 2.4.1 Modelli di Herbrand e operatore TP
- 3. Negazione in programmazione logica
- 3.1 La negazione come fallimento finito
- 3.2 Negazione intensionale
- 3.3 Negazione costruttiva
- 3.3.1 Risoluzione SLDCNF
- 3.3.2 Diseguaglianze
- 3.3.3 Regola di computazione
- 3.3.4 Derivazione
- 3.3.5 Risposte pre-normalizzate e risposte in forma normale
- 3.3.6 Negazione delle risposte
- 3.3.7 Correttezza e completezza di SLDCNF per alberi finiti
- 3.3.8 Sottogoal negativi quantificati esplicitamente
- 4. La terminazione di programmi logici
- 5. Operatori su teorie logiche e NI per programmi non definiti
- 5.1 Unione e intersezione di programmi logici
- 5.2 Differenza tra programmi
- 5.3 NI per programmi non definiti
- 6. Integrazione di NI e NC di Chan
- 6.1 Negazione intensionale e negazione costruttiva
- 6.2 Schema
- 6.2.1 Tipi, modi e norma
- 6.2.2 Traduttore
- 6.2.2.1 Analizzatore
- 6.2.2.2 Negazione intensionale
- 6.2.2.3 Negazione costruttiva
- 6.2.2.4 Sintesi di P-
- 6.2.3 Interprete
- 6.2.4 Correttezza e completezza
- 6.3 Negazione di P = <P+, P->
- 6.4 Aspetti implementativi
- 7. Il linguaggio Gödel
- 7.1 Una semantica semplice
- 7.2 Il Type System
- 7.3 Strumenti per la metaprogrammazione
- 7.4 Costrutti per il controllo
- 7.5 Quantificatori e condizionali
- 7.6 Modularità
- 7.7 I moduli di sistema
- 7.8 Stato dell'implementazione
- 8. Il progetto
- 8.1 Una sessione al terminale
- 9. Codice del progetto
- 10. Conclusioni
- Bibliografia
Abstract
Questa tesi tratta lo studio e la realizzazione di metaoperatori su programmi logici, con particolare attenzione all'integrazione tra negazione intensionale (NI) e negazione costruttiva (NC).
Il lavoro esplora le problematiche della negazione in programmazione logica, analizzando diversi approcci:
- La negazione come fallimento finito (negation as failure)
- La negazione intensionale
- La negazione costruttiva di Chan
Viene proposta un'implementazione che integra questi approcci utilizzando il linguaggio Gödel, un linguaggio di programmazione logica fortemente tipato con supporto per la metaprogrammazione.
Il Linguaggio Gödel
Gödel è un linguaggio di programmazione logica dichiarativo che estende Prolog con:
- Un sistema di tipi forte e polimorfismo
- Strumenti avanzati per la metaprogrammazione
- Costrutti per il controllo del flusso
- Supporto per modularità e riuso del codice
- Quantificatori espliciti e condizionali
Nota: La tesi completa in formato HTML con tutti i capitoli, le formule matematiche, il codice sorgente del progetto e la bibliografia è disponibile sul sito originale Tesi di laurea