Spis treści
Wstęp ............................................................................................... 7
Rozdział 1. Wprowadzenie ................................................................................. 11
Prolog....................................................................................................................11
Obiekty i relacje .....................................................................................................12
Programowanie.......................................................................................................13
Fakty .....................................................................................................................14
Zapytania ...............................................................................................................16
Zmienne.................................................................................................................17
Koniunkcje.............................................................................................................19
Reguły ...................................................................................................................23
Podsumowanie i ćwiczenia ......................................................................................28
Rozdział 2. Prolog z bliska ................................................................................. 31
Składnia.................................................................................................................31
Stałe ................................................................................................................32
Zmienne...........................................................................................................32
Struktury..........................................................................................................33
Znaki .....................................................................................................................34
Operatory...............................................................................................................35
Równość i unifikacja...............................................................................................37
Arytmetyka ............................................................................................................38
Spełnianie celów — podsumowanie..........................................................................42
Udane spełnienie koniunkcji celów .....................................................................42
Cele i nawracanie..............................................................................................45
Unifikacja ........................................................................................................47
Rozdział 3. Korzystanie ze struktur danych......................................................... 49
Struktury a drzewa..................................................................................................49
Listy ......................................................................................................................51
Przeszukiwanie rekurencyjne ...................................................................................54
Odwzorowania .......................................................................................................57
Porównywanie rekurencyjne....................................................................................60
Łączenie struktur ....................................................................................................62
Akumulatory ..........................................................................................................66
Struktury różnicowe................................................................................................68
Rozdział 4. Nawracanie i odcięcie...................................................................... 71
Generowanie wielu rozwiązań..................................................................................72
Odcięcie.................................................................................................................75
4
Prolog. Programowanie
Typowe zastosowania odcięcia.................................................................................80
Potwierdzanie wyboru reguły .............................................................................80
Użycie odcięcia z predykatem fail ......................................................................84
Kończenie generowania możliwych rozwiązań i ich sprawdzanie ..........................86
Niebezpieczeństwa wynikające ze stosowania odcięcia ..............................................89
Rozdział 5. Wejście i wyjście ............................................................................. 91
Czytanie i pisanie termów........................................................................................92
Czytanie termów...............................................................................................92
Pisanie termów .................................................................................................93
Czytanie i pisanie znaków .......................................................................................96
Czytanie znaków...............................................................................................96
Pisanie znaków .................................................................................................97
Wczytywanie zdań..................................................................................................98
Czytanie z plików i pisanie do plików..................................................................... 101
Otwieranie i zamykanie strumieni..................................................................... 102
Zmiana bieżącego strumienia wejściowego i wyjściowego.................................. 103
Konsultowanie................................................................................................ 104
Deklarowanie operatorów...................................................................................... 105
Rozdział 6. Predykaty wbudowane ................................................................... 107
Wprowadzanie nowych klauzul.............................................................................. 107
Sukces i porażka................................................................................................... 109
Klasyfikacja termów ............................................................................................. 110
Przetwarzanie klauzul jako termów ........................................................................ 111
Tworzenie składników struktur i sięganie do nich .................................................... 114
Wpływ na nawracanie ........................................................................................... 118
Tworzenie celów złożonych................................................................................... 119
Równość.............................................................................................................. 122
Wejście i wyjście .................................................................................................. 122
Obsługa plików..................................................................................................... 124
Wyliczanie wyrażeń arytmetycznych...................................................................... 124
Porównywanie termów.......................................................................................... 126
Badanie działania Prologu ..................................................................................... 127
Rozdział 7. Przykładowe programy ................................................................... 129
Sortowany słownik w formie drzewa ...................................................................... 129
Przeszukiwanie labiryntu ....................................................................................... 132
Wieże Hanoi......................................................................................................... 135
Program magazynowy........................................................................................... 136
Przetwarzanie list.................................................................................................. 137
Zapis i przetwarzanie zbiorów................................................................................ 140
Sortowanie ........................................................................................................... 142
Użycie bazy danych .............................................................................................. 145
random .......................................................................................................... 145
gensym .......................................................................................................... 146
findall ............................................................................................................ 147
Przeszukiwanie grafów.......................................................................................... 149
Odsiej Dwójki i odsiej Trójki................................................................................. 153
Różniczkowanie symboliczne ................................................................................ 155
Odwzorowywanie struktur i przekształcanie drzew .................................................. 157
Przetwarzanie programów ..................................................................................... 160
Literatura ............................................................................................................. 163
Spis treści
5
Rozdział 8. Usuwanie błędów w programach prologowych................................. 165
Układ programów ................................................................................................. 166
Typowe błędy....................................................................................................... 168
Śledzenie programu............................................................................................... 171
Śledzenie i punkty kontrolne .................................................................................. 177
Sprawdzanie celu ............................................................................................ 179
Sprawdzanie przodków.................................................................................... 180
Zmiana poziomu śledzenia............................................................................... 181
Zmiana sposobu spełnienia celu........................................................................ 182
Inne opcje ...................................................................................................... 183
Podsumowanie ............................................................................................... 184
Poprawianie błędów .............................................................................................. 184
Rozdział 9. Użycie reguł gramatycznych w Prologu ........................................... 187
Parsowanie........................................................................................................... 187
Problem parsowania w Prologu .............................................................................. 190
Notacja reguł gramatyki ........................................................................................ 194
Dodatkowe argumenty .......................................................................................... 196
Dodatkowe warunki .............................................................................................. 199
Podsumowanie ..................................................................................................... 201
Przekształcanie języka na logikę............................................................................. 202
Ogólniejsze zastosowanie reguł gramatyki .............................................................. 204
Rozdział 10. Prolog a logika............................................................................... 207
Krótkie wprowadzenie do rachunku predykatów...................................................... 207
Postać klauzulowa................................................................................................. 210
Zapis klauzul ........................................................................................................ 215
Rezolucja i dowodzenie twierdzeń.......................................................................... 216
Klauzule Horna .................................................................................................... 220
Prolog.................................................................................................................. 220
Prolog i programowanie w logice ........................................................................... 222
Rozdział 11. Projekty w Prologu......................................................................... 225
Łatwiejsze projekty............................................................................................... 225
Projekty zaawansowane ........................................................................................ 227
Dodatek A Odpowiedzi do niektórych ćwiczeń.................................................. 231
Dodatek B Klauzulowa postać programów ....................................................... 235
Dodatek C Przenośne programy w standardowym Prologu ................................ 241
Przenośność standardu Prologu .............................................................................. 241
Różne implementacje Prologu................................................................................ 242
Czego się wystrzegać ............................................................................................ 243
Definicje wybranych predykatów standardowych .................................................... 244
Przetwarzanie znaków..................................................................................... 245
Dyrektywy ..................................................................................................... 247
Wejście i wyjście strumieniowe........................................................................ 247
Różne ............................................................................................................ 249
Dodatek D Różne wersje Prologu..................................................................... 251
Dodatek E Dialekt edynburski ......................................................................... 255
Dodatek F micro-Prolog .................................................................................. 263
Skorowidz...................................................................................... 267