INDICE: |
| XI | | La programmazione logica [ di Alberto Martelli ] |
| XV | I | Introduzione |
| XVIII | | Ringraziamenti per la prima edizione |
| XVIII | | Ringraziamenti per la seconda edizione |
| 1 | Capitolo 1 | La logica dei predicati del primo ordine |
| 2 | 1.1 | Sintassi |
| 6 | 1.2 | Interpretazione |
| 11 | 1.3 | Teorie del primo ordine |
| 16 | 1.4 | La logica proposizionale come teoria assiomatica |
| 18 | Capitolo 2 | Il principio di risoluzione |
| 18 | 2.1 | Le clausole |
| 19 | 2.1.1 | Trasformazione in clausole |
| 22 | 2.2 | Il principio di risoluzione |
| 23 | 2.2.1 | Unificazione |
| 30 | 2.2.2 | Il principio di risoluzione per le clausole generali |
| 31 | 2.2.3 | Dimostrazione per contraddizione attraverso la risoluzione |
| 35 | 2.2.4 | Strategie e semplificazioni |
| 45 | Capitolo 3 | La programmazione logica |
| 45 | 3.1 | Le clausole di Horn |
| 48 | 3.2 | Risoluzione SLD |
| 53 | 3.2.1 | Regola di calcolo |
| 54 | 3.2.2 | Alberi SLD |
| 57 | 3.2.3 | Strategie di ricerca |
| 63 | 3.3 | Interpretazione procedurale |
| 68 | Capitolo 4 | La semantica della programmazione logica |
| 69 | 4.1 | La semantica di un linguaggio di programmazione |
| 70 | 4.2 | La semantica operazionale della programmazione logica |
| 73 | 4.3 | La semantica a modelli della programmazione logica |
| 79 | 4.3.1 | Interpretazioni e modelli di Herbrand |
| 79 | 4.3.2 | Proprietà dei modelli di Herbrand |
| 81 | 4.4 | La semantica di punto fisso della programmazione logica |
| 82 | 4.4.1 | Richiami sulla teoria dei punti fissi |
| 84 | 4.4.2 | Semantica di punto fisso per programmi logici |
| 86 | 4.4.3 | Equivalenza tra semantica di punto fisso e a modelli |
| 87 | 4.5 | Correttezza e completezza |
| 91 | Capitolo 5 | Il problema della negazione |
| 92 | 5.1 | L'ipotesi di mondo chiuso |
| 94 | 5.2 | La negazione per fallimento |
| 95 | 5.2.1 | Carterizzazione di punto fisso |
| 96 | 5.2.2 | Caratterizzazione operazionale |
| 100 | 5.2.3 | Caratterizzazione dichiarativa |
| 104 | 5.2.4 | Risoluzione SLDNF |
| 106 | 5.2.5 | Restrizioni sui programmi logici |
| 110 | 5.2.6 | Programmi logici normali |
| 113 | 5.3 | Semantiche alternative per programmi logici normali |
| 117 | Capitolo 6 | Dalla programmazione logica al prolog |
| 117 | 6.1 | Sintassi |
| 119 | 6.2 | Interpretazione dichiarativa |
| 120 | 6.3 | Esecuzione di un programma Prolog |
| 125 | 6.4 | Algoritmo di unificazione |
| 129 | 6.5 | Soluzioni multiple e disgiunzione |
| 131 | 6.6 | Interpretazione procedurale |
| 133 | 6.7 | Alcuni semplici programmi |
| 133 | 6.8 | Dalla risoluzione a un linguaggio di programmazione |
| 134 | 6.9 | I predicati I/O |
| 135 | 6.10 | I predicati di caricamento del codice |
| 137 | Capitolo 7 | Aritmetica e ricorsione |
| 137 | 7.1 | Aritmetica |
| 140 | 7.1.1 | Predicati predefiniti per la valutazione di espressioni |
| 143 | 7.1.2 | Operatori relazionali |
| 144 | 7.1.3 | Calcolo di funzioni |
| 145 | 7.2 | Ricorsione e iterazione |
| 146 | 7.2.1 | Ricorsione e iterazione |
| 150 | 7.2.2 | Ricorsione non-tail |
| 156 | 7.2.3 | Forme più complesse di ricorsione |
| 160 | Capitolo 8 | Liste |
| 160 | 8.1 | Definizioni |
| 162 | 8.1.1 | Unificazione su liste |
| 163 | 8.2 | Operazioni sulle liste |
| 172 | 8.3 | Reversibilità delle procedure Prolog |
| 175 | 8.4 | Operazioni su insiemi |
| 177 | 8.5 | Liste differenza |
| 180 | 8.6 | Algoritmi di ordinamento |
| 183 | Capitolo 9 | Controllo di un programma |
| 183 | 9.1 | Un modello di esecuzione per il Prolog |
| 195 | 9.2 | Il predicato cut (!) |
| 200 | 9.2.1 | Specifica del determinismo |
| 202 | 9.2.2 | Efficienza |
| 205 | 9.3 | Il predicato call |
| 206 | 9.3.1 | Strutture Condizionali |
| 207 | 9.4 | Il predicato fail |
| 208 | 9.5 | La negazione in Prolog |
| 213 | 9.6 | I predicati setof, bagof e findall |
| 218 | Capitolo 10 | Strutture dati |
| 218 | 10.1 | Operatori e loro definizione |
| 224 | 10.2 | I termini e la loro manipolazione |
| 225 | 10.2.1 | Relazioni tra termini |
| 226 | 10.2.2 | Verifica del tipo di un termine |
| 227 | 10.2.3 | Accesso alle componenti di un termine |
| 230 | 10.3 | Stringhe |
| 234 | Capitolo 11 | Predicati di meta-livello |
| 234 | 11.1 | Accesso alle clausole di un programma |
| 236 | 11.2 | Modifiche del database |
| 236 | 11.2.1 | I predicati di modifca |
| 239 | 11.2.2 | Alcuni problemi nell'uso di assert e retract |
| 243 | 11.2.3 | Alcuni usi interessanti di assert e retract |
| 247 | 11.3 | Meta-interpreti |
| 264 | Capitolo 12 | Strutture dati complesse: alberi e grafi |
| 264 | 12.1 | Alberi |
| 265 | 12.1.1 | Rappresentazione in Prolog di alberi |
| 268 | 12.1.2 | Operazioni su alberi binari |
| 271 | 12.1.3 | Alberi binari di ricerca |
| 277 | 12.1.4 | La scelta della rappresentazione |
| 279 | 12.2 | Grafi |
| 280 | 12.2.1 | Rappresentazione in Prolog di grafi |
| 281 | 12.2.2 | Operazioni su grafi |
| 291 | Capitolo 13 | Prolog e analisi sintattica dei linguaggi |
| 295 | 13.1 | Analizzatori Sintattici in Prolog |
| 300 | 13.2 | Definite Clause Grammars |
| 309 | Capitolo 14 | Prolog e intelligenza artificiale |
| 311 | 14.1 | Risoluzione di problemi |
| 311 | 14.1.1 | Risoluzione nello spazio degli stati |
| 314 | 14.1.1.1 | Rapresentazione in Prolog dello spazio degli stati |
| 317 | 14.1.1.2 | Ricerca in profondità |
| 318 | 14.1.1.3 | Ricerca in ampiezza |
| 321 | 14.1.1.4 | Ricerca euristica |
| 325 | 14.1.2 | Risoluzione per scomposizione in sottoproblemi |
| 328 | 14.1.2.1 | Soluzione in Prolog |
| 330 | 14.2 | Soluzione di giochi |
| 343 | 14.3 | Sistemi basati sulla conoscenza |
| 346 | 14.3.1 | Sistemi a regole di produzione |
| 346 | 14.3.1.1 | Il Rpolog come sistema di regole di produzione |
| 348 | 14.3.1.2 | Meta-interpreti per regole di produzione |
| 351 | 14.3.2 | Ragionamento abduttivo |
| 355 | 14.4 | Problemi di Soddisfacimento di Vincoli |
| 357 | 14.4.1 | Definizioni |
| 359 | 14.4.2 | Algoritmi di backtracking |
| 364 | 14.4.3 | Algoritmi di Propagazione |
| 372 | 14.4.3.1 | Euristiche |
| 373 | 14.4.4 | Algoritmi di Consistenza |
| 383 | Capitolo 15 | La programmazione logica a vincoli |
| 384 | 15.1 | La Propagazione Logica come linguaggio a vincoli |
| 386 | 15.2 | Limiti della propagazione logica |
| 386 | 15.2.1 | Unificazione sintattica |
| 386 | 15.2.2 | Vincoli come test |
| 387 | 15.2.3 | Dipendenza dall'ordine testuale dei goal |
| 388 | 15.2.4 | Inefficenza nell'esplorazione dello spazio delle soluzioni |
| 389 | 15.3 | Lo schema generale CLP |
| 389 | 15.3.1 | La machina astratta per PL e CLP |
| 393 | 15.3.2 | Un meta interprete per CLP |
| 394 | 15.4 | Il linguaggio CLP(R) |
| 396 | 15.5 | Il linguaggio CLP(Q) |
| 398 | 15.6 | Il linguagio CLP(B) |
| 398 | 15.6.1 | Risolutori non completi CLP(B) |
| 400 | 15.7 | Il linguaggio CLP(FD) |
| 402 | 15.7.1 | Applicazioni dei risolutori CLP(FD) |
| 406 | 15.8 | Per saperne di più |
| 409 | | Bibliografia |
| 412 | | _ |