==== Prolog ==== Prolog jest **deklaratywnym** językiem programowania opartym na logice pierwszego rzędu. Program w Prologu składa się z **faktów** oraz** klauzul**. Fakty definiują wiedzę prawdziwą bezwarunkowo; są to stwierdzenia opisujące prawdziwe relacje. Klauzule definiują reguły wnioskowania. Sa to zdania warunkowe, o konstrukcji typu 'if ... then ...'. Przykład programu w Prologu: man(plato). man(socrates). mortal(X):- man(X). Dwa pierwsze wiersze to fakty (stwierdzenia): 'Platon jest człowiekiem' oraz 'Sokrates jest człowiekiem'. Ostatnia linia to klauzula: 'Każdy człowiek jest śmiertelny', a bardziej dosłownie: 'X jest śmiertelny jeżeli X jest człowiekiem'. Stałe w Prologu zaczynają się małymi literami, napisy rozpoczynające się dużymi literami to zmienne. Każdy fakt jest postaci: p(t1,t2,...,tn). gdzie ''p'' jest symbolem relacji n-argumentowej (predykatu), a ''t1,t2,...,tn'' są argumentami. Każda klauzula jest postaci: h :- p1,p2,...,pm. Klazulę można interpretować jako regułę: ''h'' pod warunkiem (if, :-), że ''p1,p2,...,pm''. Z zadeklarowanej powyżej wiedzy interpreter Prologu potrafi wydedukować, że: mortal(plato). mortal(socrates). Bardziej rozbudowany przykład obejmuje definicje danych i relacji rodzinnych: ojciec(jacek,wojtek). ojciec(jan,ewa). ojciec(jan,tomek). ojciec(jan,jacek). m(tomek). m(jacek). k(ewa). brat(B,X) :- ojciec(P,X), ojciec(P,B), m(B), B \= X. wuj(U,X) :- ojciec(P,X), brat(U,P).