Prolog este un limbaj de programare pentru computer care se bazează pe logică. Majoritatea limbajelor de calculator se bazează pe pașii necesari pentru a rezolva o problemă. Limbajul Prolog, pe de altă parte, este un limbaj „declarativ” care indică relațiile logice dintre entități. Modul de rezolvare a problemei este lăsat la computer. Numele Prolog provine din franceză PROgrammation en LOGique, adică PROgraming LOGic.
Următorul este un program simplu Prolog:
strămoș (F, C) :- tată (F, C)
strămoș (P, Q) :- tată (P, R), strămoș (R, Q)
tată (John, Jim).
tată (jim, jerry).
tată (Jerry, Jason).
tată (jerry, jeff).
tată (jason, joshua).
Programul de mai sus indică adevăruri. Dacă F este tatăl lui C, atunci F este un strămoș al lui C. Dacă P este tatăl unei persoane R care este un strămoș al lui Q, atunci P este un strămoș al lui Q. Sunt date apoi un număr de fapte adevărate, cum ar fi John fiind tatăl lui Jim. Dacă atunci se pune o întrebare cu probleme dacă john este un strămoș al lui Jeff, obținem răspunsul „Da” după cum urmează:
?- strămoș (john, jeff).
Da
Dacă strămoșii lui Joshua sunt de interes, atunci programul afișează toți strămoșii după cum urmează:
?- strămoș (A, joshua)
A = jason
A = Jerry
A = jim
A = Ioan
Rețineți că, în ambele cazuri de mai sus, programul nu a spus cum să faceți evaluarea. De exemplu, nu a indicat dacă să înceapă de la persoana în vârstă și să se îndrepte către persoana mai tânără sau invers. De asemenea, schimbând piesele după cum urmează:
strămoș (P, Q):- strămoș (R, Q), tată (P, R)
Nu ar avea nicio diferență pentru program, deoarece ambele părți din partea dreaptă trebuie să fie adevărate pentru ca partea stângă să fie adevărată.
Limbajul Prolog se concentrează astfel pe relații, și nu pe modul de rezolvare a problemei. În timpul execuției programului, Prolog construiește un număr de afirmații adevărate, creând o bază de cunoștințe. În exemplul de mai sus, baza de cunoștințe, în nicio ordine anume, ar avea strămoș (john, jim), strămoș (jim, jerry), strămoș (john, jerry), strămoș (jim, jason), strămoș (john, jason), si asa mai departe. Această bază de cunoștințe poate continua să se creeze pe măsură ce programul se execută și poate fi căutată eficient pentru a obține soluții. Execuția poate folosi procesare paralelă, execuție simultană de mai multe computere.
Limbajul Prolog este folosit în mai multe domenii. A început în sisteme adaptate limbilor naturale, cum ar fi engleza; limbajul natural este una dintre domeniile inteligenței artificiale. Limbajul Prolog este folosit și în matematica simbolică, inclusiv în algebră. Este folosit în demonstrarea teoremelor, în sistemele expert și în sistemele de control, printre multe alte aplicații.