Prolog
Iz E-študij, proste zakladnice študentskega znanja
Prolog je programski jezik.
Primer programa
otrok(tea,lili). tejin otrok je lili otrok(leo,lili). otrok(lili,ana). roditelj(X,Y) :- sklepni del otrok(Y,X). pogojni del
Komunikacija s prologom
?- <-- prompt prologa
?- consult('primer') odpri datoteko "primer" in dodaj v svojo bazo znanja ta program
yes (dvakratno dodajanje pomeni da imamo dvojni program, kar ne želimo)
več datotek naenkrat lahko damo v seznam ['file1','file2',...]
?- reconsult('primer') pred dodajanjem pobriše vse relacije (varnejša varianta od consult)
yes
Ko je program prebran in preverjen, če je sintatkično pravilen, prolog odgovori z "yes".
Prolog odgovori na vprašanje če je lili otrok ane z yes.
?- otrok(lili,ana). yes
Prolog odgovori na vprašanje z no ker mu ni uspelo dokazati, da je lili otrok od lea.
?- otrok (lili,leo). no
Zanima nas kdo je otrok od ane. Prolog odgovori z X = lili, ko pritisnemo enter nam prolog vrne yes kar pomeni konec odgovorov.
?- otrok(X,ana). X = lili yes
Zanima nas kdo je starš od "tea". Prolog odgovori z lili, ker ni več odgovorov nam prolog po entru vrne zopet yes.
?- otrok(tea,x). X = lili yes
Kdo je čigav otrok? Zanimajo nas vsi pari kjer je X otrok od Y. Prolog nam vrne vse možne odgovore dokler pritiskamo enter. Ko pritisnemo podpičje, prolog prekine izvajanje ( ; = logična disjunkcija - aka "hočem nek drug odgovor"). Ker ne najde drugega vrne "no".
?- otrok(X,Y). X = tea Y = lili; X = leo Y = lili; X = lili Y = ana; no
Iščemo nek drug odgovor, ker ne najde nobenega drugega para X z lili, vrne "no".
?- roditelj(X,lili). X = ana; no