156 5 4MB
Polish Pages [133] Year 2003
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