Prolog je računalni programski jezik koji se temelji na logici. Većina računalnih jezika temelji se na koracima potrebnim za rješavanje problema. Prolog jezik je, s druge strane, “deklarativni” jezik koji ukazuje na logičke odnose između entiteta. Način rješavanja problema prepušten je računalu. Naziv Prolog dolazi od francuskog PROgrammation en LOGique, odnosno PROgramming LOGic.
Sljedeći je jednostavan Prolog program:
predak (F, C) :- otac (F, C)
predak (P, Q) :- otac (P, R), predak (R, Q)
otac (john, jim).
otac (jim, jerry).
otac (jerry, jason).
otac (jerry, jeff).
otac (Jason, Joshua).
Gornji program ukazuje na istinitost. Ako je F otac C, onda je F predak C. Ako je P otac neke osobe R koja je predak Q, tada je P predak Q. Zatim se daje niz istinitih činjenica, kao npr. John je otac Jima. Ako se tada postavi problemsko pitanje je li John predak Jeffa, dobivamo odgovor “Da” kao u nastavku:
?- predak (john, jeff).
Da
Ako su preci Joshue od interesa, tada program prikazuje sve pretke na sljedeći način:
?- predak (A, Joshua)
A = Jason
A = Jerry
A = jim
A = Ivan
Imajte na umu da u oba gornja slučaja program nije rekao kako izvršiti evaluaciju. Na primjer, nije naznačeno treba li početi od starije osobe i krenuti prema mlađoj osobi ili obrnuto. Također zamjenjujte dijelove kao u nastavku:
predak (P, Q) :- predak (R, Q), otac (P, R)
Za program ne bi bilo nikakve razlike, jer oba ova dijela na desnoj strani moraju biti istinita da bi lijeva strana bila istinita.
Prolog jezik se stoga fokusira na odnose, a ne na to kako riješiti problem. Tijekom izvođenja programa, Prolog gradi niz istinitih izjava, stvarajući bazu znanja. U gornjem primjeru, baza znanja, bez posebnog redoslijeda, imala bi pretka(john, jim), pretka(jim, jerry), pretka(john, jerry), pretka(jim, jason), pretka(john, jason), i tako dalje. Ova baza znanja može se nastaviti graditi dok se program izvršava i može se učinkovito pretraživati kako bi se dobila rješenja. Izvršenje može koristiti paralelnu obradu, istovremeno izvršenje od strane više računala.
Prolog jezik se koristi u brojnim područjima. Počelo je u sustavima prilagođenim prirodnim jezicima kao što je engleski; prirodni jezik jedno je od područja umjetne inteligencije. Prolog jezik se također koristi u simboličkoj matematici, uključujući algebru. Koristi se u dokazivanju teorema, u ekspertnim sustavima i u sustavima upravljanja, među mnogim drugim aplikacijama.