3.2.1 Wstęp
Twórcami jęz3'ka Prolog są Alain Colmerauer i Robert Kowalski. Kowalski podał podstawy teoretyczne, natomiast Colmerauer opracował w 1972 roku język programowania. Nazwa jest skrótem od Programming in Logic, co oznacza programowanie w logice. Prolog zyskał popularność w latach osiemdziesiątych, kiedy Japonia wybrała go na język komputerów piątej generacji, a firma Borland wprowadziła na rynek kompilator Turbo-Prolog.
Pierwotne zastosowania Prologu dotyczyły dowodzenia twierdzeń logicznych i przetwarzania języka naturalnego. Ponieważ Prolog operuje głównie na symbolach, nadaje się także do rozwiązywania zagadnień sztucznej inteligencji takich, jak wnioskowanie logiczne, podejmowanie decyzji czy rozgrywanie gier.
Praca z Prologiem polega na zasadzie zapytań. Zapytanie może być proste, np. Czy 2 jest większe od 1?
?- 2 > 1.
Yes
lub złożone np. Czy 2 jest większe od 1 i czy 3 jest mniejsze od 2?
?- 2 > 1, 5 < 3.
No
Uwaga 3.1 Koniunkcję zapytań realizuje przecinek (,), zaś alternatywę — średnik (;). Kaide zapytanie musi kończyć się kropką.
Prolog interpretuje zapytanie i drukuje odpowiedź. Odpowiedź może mieć postać:
1. Yes — odpowiedź twierdząca,
2. No — odpowiedź negatywna,
3. zmienne i ich wartości — są drukowane, jeżeli stanowią odpowiedź na zapytanie. Po wydrukowaniu jednej odpowiedzi, program czeka na decyzję użytkownika. Aby wyświetlić kolejne rozwiązanie, należy nacisnąć średnik (;). Aby zrezygnować z szukania dalszych odpowiedzi, należy nacisnąć Enter.
Uwaga 3.2 W Prologu zmienne zaczynają się wielką literą (np. X, Kto, Delta).
3.2.2 Działania na zbiorach w języku Prolog
W języku Prolog zbiory są reprezentowane w postaci listy, na przykład:
Zbiór Lista
{a,b,c} [a,b,c]
Działania na zbiorach realizują predykaty podane w tabeli:
Predykat member(X, A) subset(A, B) union(A, B, C) intersection(A, B, C) subtract(A, B, C)
Nazwa Operacja
przynależność x € A
inkluzja (podzbiór) A C. B suma C = A U B
iloczyn C = A fi B
różnica C = A — B
Pozostałe działania można zdefiniować z wykorzystaniem wymienionych powyżej (por. wykład).