==== 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).