Programowanie deklaratywne

Podobne dokumenty
Programowanie deklaratywne

Programowanie w logice

PODSTAWY SZTUCZNEJ INTELIGENCJI

Programowanie deklaratywne

Programowanie deklaratywne

Deklarowania faktów dotyczących obiektów i związków między nimi. Definiowania reguł dotyczących obiektów i związków między nimi.

Adam Meissner.

PROLOG. Prolog. Programowanie, W.F. Clocksin, C.S. Mellish, HELION Prolog, język sztucznej inteligencji, Eugeniusz Gatnar, Katarzyna Stąpor, Wyd.

Wprowadzenie do Prologa

Programowanie w logice Prolog 1

Laboratorium przedmiotu Paradygmaty Programowania

Paradygmaty programowania

Projekt 4: Programowanie w logice

Podstawy Sztucznej Inteligencji (PSZT)

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Wykład 0 Informacje Podstawowe

Prolog (Pro-Logic) Programowanie w Logice. Dr inż. Piotr Urbanek

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań.

Programowanie deklaratywne

Programowanie w logice Wykład z baz danych dla

Wykład 11b. System aksjomatyczny Klasycznego Rachunku Predykatów. Aksjomaty i reguły inferencyjne

Podstawy języka PROLOG

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.2 Elementy języka Prolog: reguły i rekurencja. Przemysław Kobylański

SZTUCZNA INTELIGENCJA

Internet Semantyczny i Logika I

Programowanie w logice Prolog 2

Języki programowania deklaratywnego

Dariusz Banasiak. Instytut Informatyki, Automatyki i Robotyki. Politechniki Wrocławskiej

Dana jest baza: kobieta(katarzyna). kobieta(anna). kobieta(maria). kobieta(marianna). kobieta(marta). Zdefiniujemy predykat kobiety/0 następująco:

MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

LOGIKA FORMALNA POPRAWNOŚĆ WNIOSKOWAŃ

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 9. Koniunkcyjne postacie normalne i rezolucja w KRZ

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Języki programowania zasady ich tworzenia

Systemy ekspertowe. Wnioskowanie w systemach regułowych. Część piąta. Autor Roman Simiński.

JĘZYKI PRZETWARZANIA SYMBOLICZNEGO

Programowanie deklaratywne

Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań

Języki programowania deklaratywnego

Aproksymacja funkcji a regresja symboliczna

Elementy rachunku lambda. dr hab. inż. Joanna Józefowska, prof. PP 1

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Technologie i systemy oparte na logice rozmytej

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Programowanie komputerów

Tautologia (wyrażenie uniwersalnie prawdziwe - prawo logiczne)

Jerzy Nawrocki, Wprowadzenie do informatyki

Programowanie w Logice Struktury danych (Lista 2)

Systemy ekspertowe. Krzysztof Patan

ROZDZIAŁ 1. Rachunek funkcyjny

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

LOGIKA I TEORIA ZBIORÓW

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Zależności funkcyjne

Metoda Tablic Semantycznych

LOGIKA Klasyczny Rachunek Zdań

Wykład 8: klasy cz. 4

PRZEWODNIK PO PRZEDMIOCIE

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

RBD Relacyjne Bazy Danych

Klasy abstrakcyjne i interfejsy

Metody wnioskowania. Wnioskowanie w przód (ang. forward chaining) Wnioskowanie w tył (ang. Backward chaining) Od przesłanki do konkluzji Np..

Zasady krytycznego myślenia (1)

Programowanie w Logice

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki

NAZWA PRZEDMIOTU/MODUŁU KSZTAŁCENIA:

Twierdzenia Gödla dowody. Czy arytmetyka jest w stanie dowieść własną niesprzeczność?

REGUŁOWO-MODELOWE SKORUPOWE SYSTEMY EKSPERTOWE

Ziemia obraca się wokół Księżyca, bo posiadając odpowiednią wiedzę można stwierdzić, czy są prawdziwe, czy fałszywe. Zdaniami nie są wypowiedzi:

Rachunek zdań. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

0.1. Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań.

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

Matematyczne Podstawy Informatyki

Programowanie w Logice

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Definicje. Algorytm to:

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Języki programowania Prolog

Matematyka ETId Elementy logiki

PRZEWODNIK PO PRZEDMIOCIE

WSTĘP ZAGADNIENIA WSTĘPNE

Wykład 9: Polimorfizm i klasy wirtualne

Zasada rozszerzania. A U A jest zbiorem rozmytym, B jest obrazem zbioru A Przeniesienie rozmytości A w odwzorowaniu f na zbiór B. sup.

Logika Matematyczna. Zadania Egzaminacyjne, 2007

Semantyka rachunku predykatów

Szablony funkcji i klas (templates)

Dedukcyjne bazy danych i rekursja

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Technologie obiektowe

CLP Programowanie logiczne z ograniczeniami.

OWO-MODELOWE SKORUPOWE SYSTEMY EKSPERTOWE

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Uwagi wprowadzajace do reguł wnioskowania w systemie tabel analitycznych logiki pierwszego rzędu

Transkrypt:

Programowanie deklaratywne Artur Michalski Informatyka II rok Plan wykładu Wprowadzenie do języka Prolog Budowa składniowa i interpretacja programów prologowych Listy, operatory i operacje arytmetyczne Złożone/abstrakcyjne struktury danych Sterowanie mechanizmem nawrotów Operacje wejścia/wyjścia w Prologu Predefiniowane procedury prologowe Styl i technika programowania w Prologu 1

Wprowadzenie do języka Prolog Przykład prostego programu w języku Prolog:» Rozszerzanie programu przez wprowadzanie reguł prologowych» Rekurencyjna definicja reguły prologowej» Zasady generowania odpowiedzi na postawione pytania» Deklaratywna i proceduralna interpretacja programu prologowego» ela ala robert jacek tomek ola iza 2

Prolog - język przetwarzania symbolicznego przeznaczony do rozwiązywania problemów dotyczących obiektów i relacji między nimi. Przykład relacji między obiektami: Tomek jest em Roberta. Zapis w Prologu: (tomek, robert). robert tomek Wszystkie relacje dla naszego przykładu: (tomek, robert). (tomek,iza). (ela,robert). (robert,ala). (robert,ola). (ola,jacek). ela ala robert jacek tomek ola iza 3

Program prologowy składa się z klauzul. W naszym przykładzie klauzule definiują fakty, wskazujące, między którymi obiektami zachodzi relacja pokrewieństwa. (tomek, robert). (tomek,iza). (ela,robert). (robert,ala). (robert,ola). (ola,jacek). W Prologu możliwe jest formułowanie pytań dotyczących zdefiniowanych relacji. Przykładowe pytanie: Czy Robert jest em Ali? Zapis w Prologu:?- (robert, ala). Odpowiedź: Yes ala? robert 4

Inne pytanie:?- (iza, ola). Odpowiedź: No Kolejne pytanie:?- (iza, piotr). Odpowiedź: No ela ala robert jacek tomek ola? iza piotr? Inne pytanie:?- (iza, ola). Odpowiedź: No Kolejne pytanie:?- (iza, piotr). Odpowiedź: No W Prologu, jeśli nie jest możliwa weryfikacja odpowiedzi w oparciu o zdefiniowane fakty, to odpowiedź brzmi No. 5

W Prologu możliwe jest formułowanie pytań szczegółowych. Przykładowe pytanie: Kto jest em Izy? Zapis w Prologu:?- (X, iza). Odpowiedź: X = tomek iza? Odpowiedzi na pytanie szczegółowe może być kilka. Przykładowe pytanie: Kto jest dzieckiem Roberta? Zapis w Prologu:?- (robert, X). Odpowiedź: X = ala; X = ola robert?? 6

Pytanie szczegółowe może mieć węższy lub szerszy zakres. Przykładowe pytanie: Dla jakich X i Y, X jest em Y? Zapis w Prologu:?- (X, Y). Odpowiedź: X = ela Y = robert; X = tomek Y = robert; X = tomek Y = iza;... W Prologu można również formułować pytania złożone. Przykładowe pytanie: Kto jest babcią lub dziadkiem Jacka? Zapis w Prologu:?- (Y,jacek), (X,Y). Odpowiedź: X = robert Y = ola 7

Jeżeli zmieniamy porządek w pytaniu złożonym logiczny sens pytania pozostaje taki sam. Wariant 1:?- (Y,jacek), (X,Y). Wariant 2:?- (X,Y), (Y,jacek). Odpowiedź (taka sama): X = robert Y = ola Inne pytanie: Czy Ala i Ola mają wspólnego a? Zapis w Prologu:?- (X,ala), (X,ola). Odpowiedź: X = robert 8

Podsumowanie przykładu: Prolog umożliwia prosty zapis relacji, takich jak, poprzez definiowanie n-tek, składających się z obiektów, które spełniają daną relację Użytkownik może w łatwy sposób formułować pytania dotyczące tych relacji Program prologowy składa się z klauzul Argumentami relacji mogą być: konkretne obiekty, stałe (takie jak tomek czy ala) lub ogólne obiekty, czyli zmienne (takie jak X czy Y) Podsumowanie przykładu (ciąg dalszy): Pytania składają się z jednego lub więcej celów. Ciąg celów, taki jak: (X,ala), (X,ola) oznacza koniunkcje logiczną celów: X jest em Ali i X jest em Oli. Odpowiedź na pytanie może być pozytywna lub negatywna, w zależność od tego czy odpowiedni cel udało się osiągnąć, czy też nie. Pozytywna odpowiedź oznacza, że cel został spełniony. W przypadku przeciwnym cel jest niespełniony. Jeżeli jest kilka możliwych odpowiedzi na zadane pytanie, Prolog może wygenerować ich tyle ile potrzebuje użytkownik. 9

Rozszerzanie programu o reguły prologowe Program prologowy może zawierać również fakty, opisujące wybrane cechy obiektów. Wykorzystujemy do tego celu tzw. relacje unarne. Przykładowo może to być płeć osoby: kobieta(ela). mezczyzna(tomek). mezczyzna(robert). kobieta(iza). kobieta(ala). kobieta(ola). mezczyzna(jacek). ela ala robert jacek tomek ola iza Rozszerzanie programu o reguły prologowe Definicja relacji dziecko. Fakty prologowe: dziecko(robert,ela). dziecko(robert,tomek). dziecko(iza,tomek).... Wykorzystanie ogólnej zasady: Dla wszystkich X i Y, Y jest dzieckiem X, o ile X jest em Y. Zapis w Prologu: dziecko(y,x):- (X,Y). 10

Rozszerzanie programu o reguły prologowe Fakty prologowe Zawsze (bezwarunkowo) prawdziwe. Budowa reguły prologowej: dziecko(y,x) :- (X,Y). nagłówek ciało Reguły prologowe Prawdziwe, jeżeli spełniony jest pewien warunek. Rozszerzanie programu o reguły prologowe Budowa reguły prologowej (ciąg dalszy): dziecko(y,x) :- (X,Y). nagłówek Część konkluzyjna albo Lewa strona reguły ciało Część warunkowa albo Prawa strona reguły 11

Rozszerzanie programu o reguły prologowe Reguły prologowe w działaniu Przykładowe pytanie:?- dziecko(iza,tomek). Brak bezpośrednich faktów powoduje odwołanie do reguł. Reguła jako rodzaj uogólnienia może być zastosowana do konkretnych obiektów takich jak iza i tomek. Użycie reguły wymaga podstawień: X = tomek Y = iza Rozszerzanie programu o reguły prologowe Reguły prologowe w działaniu (ciąg dalszy): Wiązanie zmiennych X i Y daje przypadek szczególny reguły: dziecko(iza,tomek) :- (tomek,iza). Sprawdzenie części warunkowej - zastąpienie celu podcelem: (tomek,iza). Weryfikacja podcelu: prawdziwy w oparciu o fakty. Wniosek: konkluzja reguły prawdziwa. Odpowiedź: Yes 12

Rozszerzanie programu o reguły prologowe Przykład innej reguły - matka: Dla wszystkich X i Y, X jest matką Y, o ile X jest em Y i X jest kobietą. Zapis w Prologu: matka(x,y) :- (X,Y), kobieta(x). koniunkcja warunków X Y kobieta matka Rozszerzanie programu o reguły prologowe Inne reguły pokrewieństwa - babcia: Dla wszystkich X i Y, X jest babcią Y, o ile X jest em Z, Z jest em Y i X jest kobietą. Zapis w Prologu: babcia(x,y) :- (X,Z), (Z,Y), Y kobieta(x). X Z kobieta babcia 13

Rozszerzanie programu o reguły prologowe Inne reguły pokrewieństwa - siostra: Dla wszystkich X i Y, X jest siostrą Y, o ile Z X i Y mają wspólnego a i X jest kobietą. kobieta X Y Zapis w Prologu: siostra siostra(x,y) :- (Z,X), (Z,Y), kobieta(x). Rozszerzanie programu o reguły prologowe Przykładowe pytanie:?- siostra(ala,ola). Odpowiedź: Yes ela ala robert jacek tomek ola iza Przykładowe pytanie:?- siostra(x,ola). Odpowiedź: X = ala; X = ola 14

Rozszerzanie programu o reguły prologowe Przykładowe pytanie:?- siostra(ala,ola). Odpowiedź: Yes Poprawna reguła: siostra(x,y) :- (Z,X), (Z,Y), kobieta(x), X\=Y. Przykładowe pytanie:?- siostra(x,ola). Odpowiedź: X = ala; X = ola Rozszerzanie programu o reguły prologowe Podsumowanie: Programy prologowe można rozszerzać w prosty sposób poprzez definiowanie nowych klauzul Wyróżniamy trzy rodzaje klauzul: fakty, reguły i pytania Fakty opisują to, co jest zawsze, bezwarunkowo prawdziwe Reguły opisują to, czego prawdziwość zależy od pewnego warunku Za pomocą pytań można dowiedzieć się co jest prawdą lub fałszem 15

Rozszerzanie programu o reguły prologowe Podsumowanie (ciąg dalszy): Klauzula prologowa składa się z: nagłówka i ciała; ciało to lista celów oddzielonych przecinkami, które taktujemy jako koniunkcję Fakty to klauzule, które mają nagłówek i puste ciało; pytania posiadają tylko ciało; reguły mają zarówno nagłówek, jak i niepuste ciało W trakcie działania zmienne mogą być zamieniane przez inne obiekty; proces ten określamy mianem wiązania (unifikacji) Zakładamy, że wszystkie zmienne klauzuli są poprzedzone kwantyfikatorem uogólnionym Rekurencyjna definicja reguły Definicja relacji przodek X X przodek przodek Z Z Przodek bezpośredni Przykład przodka pośredniego 16

Rekurencyjna definicja reguły Pierwsza definicja relacji przodek: Dla wszystkich X i Y, X jest przodkiem Y, o ile X jest em Y. Zapis w Prologu: przodek(x,y) :- (X,Y). X Y przodek Przodek bezpośredni Rekurencyjna definicja reguły Druga definicja relacji przodek: przodek(x,z) :- (X,Y), (Y,Z). X Y Z Przodek pośredni przodek 17

Rekurencyjna definicja reguły Trzecia definicja relacji przodek: przodek(x,z) :- (X,Y1), (Y1,Y2), (Y2,Z). X Y1 Y2 Z Przodek pośredni przodek Rekurencyjna definicja reguły Czwarta definicja relacji przodek: przodek(x,z) :- (X,Y1), (Y1,Y2), (Y2,Y3), (Y3,Z). X Y1 Y2 Y3 przodek Z Przodek pośredni 18

Rekurencyjna definicja reguły Kolejna definicja relacji przodek: przodek(x,z) :- (X,Y1), (Y1,Y2),... (Yn,Z). X Y1 Y2... przodek Z Przodek pośredni Rekurencyjna definicja reguły Ostateczna definicja relacji przodek: Dla wszystkich X i Z, X jest przodkiem Z, o ile X jest em Y i Y jest przodkiem Z. Zapis w Prologu: przodek(x,z) :- (X,Y), przodek(y,z). przodek X Y... przodek Z Przodek pośredni 19

Rekurencyjna definicja reguły Pełna definicja relacji przodek w Prologu: przodek(x,z) :- (X,Z). %bezpośredni przodek(x,z) :- (X,Y), %pośredni przodek(y,z). Programowanie z wykorzystaniem rekurencji jest podstawową metodą programowania w Prologu. Generowanie odpowiedzi na postawione pytania Jak w Prologu generowane są odpowiedzi na pytania? Pytanie (cel lub ciąg celów) Sprawdzić, czy cel jest spełniony Czy cel jest prawdziwy przy założeniu, że zdefiniowane relacje są prawdziwe? Dowieść, że cel jest logiczną konsekwencją zdefiniowanych faktów i reguł Jeśli cel zawiera zmienne, podać dla jakich wartości jest spełniony 20

Generowanie odpowiedzi na postawione pytania Przykład generowania odpowiedzi Relacje (fakty): Wszyscy ludzie są omylni. Sokrates jest człowiekiem. Pytanie: Czy Sokrates jest omylny? Zapis w Prologu: omylny(x):- człowiek(x). człowiek(sokrates).?- omylny(sokrates). Odpowiedź: Yes Generowanie odpowiedzi na postawione pytania Inny przykład: przodek(x,z) :- (X,Z). %prb przodek(x,z) :- (X,Y), %prp przodek(y,z). Pytanie:?- przodek(tomek,ola). ela ala robert jacek tomek ola iza 21

Generowanie odpowiedzi... Nieformalna interpretacja deklaratywna: 1. Znany fakt: (robert,ola) 2. Na podstawie reguły prb wnioskujemy, że przodek(robert,ola), bo: (robert,ola) przodek(robert,ola) 3. Znany fakt: (tomek,robert) 4. Korzystając z faktów: przodek(robert,ola) i (tomek,robert) wnioskujemy na podstawie reguły prp, że przodek(tomek,ola) : (tomek,robert) i przodek(robert,ola) przodek(tomek,ola) Generowanie odpowiedzi... Nieformalna interpretacja proceduralna: 1. Cel: przodek(tomek,ola) 2. Poszukiwanie odpowiednich klauzul 3. Dopasowanie do nagłówków klauzul prb i prp 4. Klauzula prb: przodek(x,z) :- (X,Z). Wiązanie zmiennych: X = tomek, Z = ola 5. Nowy cel: (tomek,ola) 22

Generowanie odpowiedzi... Nieformalna interpretacja proceduralna: przodek(tomek,ola) wg reguły prb (tomek,ola) 6. Brak klauzuli pasującej do celu (tomek,ola) 7. Nawrót do pierwotnego celu (przodek(tomek,ola)) i analiza drugiej pasującej klauzuli, prp: przodek(x,z) :- (X,Y),przodek(Y,Z). Generowanie odpowiedzi... Nieformalna interpretacja proceduralna: 8. Wiązanie zmiennych: X = tomek, Z = ola 9. Nowy cel (dwa podcele): (tomek,y), przodek(y,ola) wg reguły prb (tomek,ola) No przodek(tomek,ola) wg reguły prp (tomek,y), przodek(y,ola) 23

Generowanie odpowiedzi... Nieformalna interpretacja proceduralna: 10. Pierwszy podcel: (tomek,y) 11. Dopasowanie do klauzuli (tomek,robert) Wiązanie zmiennych: Y = robert 12. Drugi podcel : przodek(robert,ola) 13. Dopasowanie do klauzul prb i prp 14. Klauzula prb: przodek(x,z ) :- (X,Z ). Wiązanie zmiennych: X = robert, Z = ola Generowanie odpowiedzi... Nieformalna interpretacja proceduralna: 15. Nowy cel: (robert,ola) 16. Dopasowanie do klauzuli (faktu) (robert,ola) 17. Koniec wnioskowania - cel główny spełniony 24

Generowanie odpowiedzi... Nieformalna interpretacja proceduralna: wg reguły prb (tomek,ola) No przodek(tomek,ola) wg reguły prp (tomek,y), przodek(y,ola) wg faktu (tomek,robert) Y = robert przodek(robert,ola) wg reguły prb (robert,ola) Yes Deklaratywna i proceduralna interpretacja programu prologowego Interpretacja deklaratywna pozwala określić jaki będzie rezultat programu prologowego Interpretacja proceduralna pozwala określić w jaki sposób ten rezultat zostanie otrzymany, czyli w jaki sposób zostaną użyte relacje zdefiniowane w programie Programowanie w języku Prolog powinno opierać się tylko - o ile to jest możliwe - na interpretacji deklaratywnej programu prologowego. 25

Wprowadzenie do języka Prolog Podsumowanie: Programowanie w Prologu opiera się na definiowaniu relacji i zadawaniu pytań dotyczących relacji Program prologowy składa się z klauzul. Mamy trzy rodzaje klauzul: fakty, reguły i pytania Relacje definiowane są za pomocą faktów, które mają postać n-tek zawierających obiekty, które relacje spełniają lub reguł, które je opisują Pytania dotyczące relacji przypominają zadawanie pytań w systemach baz danych; odpowiedzi składają się ze zbioru obiektów, spełniających cel zawarty w pytaniu Sprawdzenie czy dany obiekt spełnia cel opiera się na złożonym procesie obliczeniowym, wykorzystującym mechanizmy logicznego wnioskowania i nawroty; wszystkie szczegóły tego procesu pozostają ukryte przed programistą Wprowadzenie do języka Prolog Podsumowanie c.d.: Wyróżniamy dwie interpretacje programu prologowego: deklaratywną i proceduralną; interpretacja proceduralna powinna być jedną wykorzystywaną przez programistę; są jednak sytuacje, kiedy nie da się uniknąć interpretacji proceduralnej programu podstawowe pojęcia: klauzula, fakt, reguła, pytanie, nagłówek i ciało klauzuli, reguła rekurencyjna, definicja rekurencyjna, zmienna, wiązanie zmiennej, cel, cel spełniony, cel niespełniony, nawroty, interpretacja deklaratywna i proceduralna 26

Literatura R.A. Kowalski, Logika w rozwiązywaniu zadań, WNT, Warszawa 1989. E. Gatnar, K. Stapor, Prolog, Wydawnictwo PLJ, Warszawa 1991. F. Kluźniak, S. Szpakowicz, Prolog, WNT, Warszawa, 1983. I. Bratko, Prolog programming for AI, Addison-Wesley 1990. 27