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