Przykładowe drzewo celów:
<rys2>
Czyli możemy skorzystać albo z jednej albo z drugiej reguły na każdym etapie. Schodząc wgłąb, tworzymy drzewo celów. Na gałęziach wpisujemy uzgodnienia zmiennych, na końcu listy celów pośrednich (w węzłach).
Traktujemy fakt jako regułę o pustej prawej stronie. Zdanie o pustym poprzedniku, poprzednik jest rozpatrywany jako "prawda". Drzewo celów jest przeglądane od lewej wgłąb. Przy natrafieniu na brak rozwiązania w liściu, wraca do ostatniego "rozwidlenia" (backtrack) i kontynuuje.
Prolog domyślnie przeszukuje tylko do pierwszego rozwiązania. Żądanie znalezienia wszystkich może przebiegać w dwóch trybach:
1) ?_path(a,d,S)
S=[a,b,d] XeS ; // średnik mówi, żeby szukać wszystkich spełniających celów
2) qs(X,Y,S) path (X,Y,S), check(S) // sprawdzenie S wymusza kolejne nawroty
- LISP nie będzie niezbędny do zaliczenia, ale konsekwencja w postaci niższych ocen może się zdarzyć. Dziwna skala ocen.
- rozmowy projektowe przewidziane 3,4,5.06 - dopuszczenie do 2 kolosa na podstawie zrozumienia zadań.
Współcześnie tłumaczone: PROgramming in LOGIC, było PROgrammation en LOGiąue (tak, koleś który to wymyślił - Alain Colmerauer - oczywiście jest Francuzem). Koncepcja poracowana okoo roku 1970.
Powstał specjalnie jako język do przetwarzania gramatyk, nie przypuszczano, że rozwinie się na taką skalę. Do popularności przyczyniły się prace prowadzone w Londynie przez Roberta Kowalskiego. Powstaje podręcznik "Logic for problem solving".
Początkowo Prolog był językiem interpretowanym. Stał się popularny nie tylko do zastosowań akademickich po skonstruowaniu efektywnego kompilatora Prologu. Konstrukcja opracowana około 1970 roku przez Grenoble i Marseilles (tzw. składnia marsylska, obecnie historyczna).
Kompilator używający współczesnej składni na uniwersytecie w Edynburgu, Warren i Pereira. Nareszcie znalazł zastosowanie jako język do szerokiego przetwarzania danych, właściwie nawet język ogólnego przeznaczenia.
Do zastosowania w dziedzinie sztucznej inteligencji predestynowało go środowisko powstania i specyficzne właściwości.
Duża część rynku sztucznej inteligencji należy do Prologu i LISP. Od jakiegoś czasu wchodzi na ten rynek Java, głównie moduły do integracji z większymi systemami. M.in. wsparcie dla prologu. Innymi znanymi dla sztucznej inteligencji są m.in. SmallTalk i kilka innych.
W porównaniu z LISP Prolog jest bardziej rozwojowy, umożliwia łatwiejsze poszukiwanie nowych rozwiązań, jest dobrym językiem do prototypowania sztucznej inteligencji. Dodatkowo, zmusza do poprawnego formułowania problemów, jest bardziej poprawny "politycznie" i logicznie :). Rozłożenie języków na świecie: USA podzielone (LISP=EastSide, Prolog=WestSide ;]). W Europie dominuje Prolog.
[piejemy dalej na cześć prologu...]
Prolog jest nazywany "Tool for thinking" - konstrukcja języka wymusza na nas logiczne myślenie o problemie i prowadzi do rozwiązania i poprawnego formułowania problemów. LISP wprowadza pewną dyscyplinę do programowania proceduralnego przez to, że