Prolog är ett datorprogrammeringsspråk som är baserat på logik. De flesta datorspråk är baserade på de steg som behövs för att lösa ett problem. Prolog-språket, å andra sidan, är ett ”deklarativt” språk som indikerar de logiska relationerna mellan enheter. Sättet att lösa problemet överlåts åt datorn. Namnet Prolog kommer från franskans PROgrammation en LOGique, det vill säga PROgramming LOGic.
Följande är ett enkelt Prolog-program:
förfader(F, C):- fader(F, C)
förfader(P, Q) :- fader(P, R), förfader(R, Q)
far (john, jim).
far (jim, jerry).
far (jerry, jason).
far (jerry, jeff).
far (jason, joshua).
Ovanstående program indikerar sanningar. Om F är far till C, så är F en förfader till C. Om P är far till någon person R som är en förfader till Q, så är P en förfader till Q. Ett antal sanna fakta ges då, som t.ex. John är far till jim. Om sedan en problemfråga ställs om huruvida John är en förfader till Jeff, får vi svaret ”Ja” enligt nedan:
?- anfader(john, jeff).
Ja
Om joshuas förfäder är av intresse, visar programmet alla förfäder enligt följande:
?- förfader(A, joshua)
A = jason
A = jerry
A = jim
A = john
Observera att i båda ovanstående fall berättade inte programmet hur utvärderingen skulle göras. Det angav till exempel inte om man skulle börja hos den äldre och arbeta sig fram till den yngre eller tvärtom. Byter även ut delarna enligt nedan:
förfader(P, Q) :- förfader(R, Q), fader(P, R)
Det skulle inte göra någon skillnad för programmet, eftersom båda dessa delar på höger sida måste vara sanna för att den vänstra sidan ska vara sann.
Prolog-språket fokuserar alltså på relationerna, och inte på hur man löser problemet. Under programkörningen bygger Prolog upp ett antal sanna påståenden, vilket skapar en kunskapsbas. I exemplet ovan skulle kunskapsbasen, utan särskild ordning, ha ancestor(john, jim), ancestor(jim, jerry), ancestor(john, jerry), ancestor(jim, jason), ancestor(john, jason), och så vidare. Denna kunskapsbas kan fortsätta byggas upp allt eftersom programmet körs och kan sökas effektivt för att få lösningar. Körningen kan använda parallell bearbetning, samtidig exekvering av flera datorer.
Språket Prolog används inom ett antal områden. Det började i system anpassade för naturliga språk som engelska; naturligt språk är ett av områdena för artificiell intelligens. Prolog-språket används också i symbolisk matematik, inklusive algebra. Det används för att bevisa teorem, i expertsystem och i kontrollsystem, bland många andra applikationer.