2.2. Предикати на раздела
Ако програмистът дефинира свой собствен предикат в секцията с клаузи, тойТРЯБВАда го декларира в секциятаpredicates. В противен случай Visual Prolog няма да знае за какво става дума. Когато се декларира предикат, на Prolog се казва към кои домейни принадлежат аргументите на предиката.
Предикатите се определят от факти и правила. Секциятаpredicatesпросто изброява всеки предикат с домейните на аргументите.
Името на предиката трябва да започва с буква; тази буква може да бъде последвана от букви, цифри и долни черти. Размерът на буквите няма значение, но все пак не се препоръчва да използвате главна буква като първа буква.
Общ изглед на дефиницията на предикат:
pred е името на предиката (името на релацията) (формално принадлежи към символния тип), dom е типът данни на конкретния аргумент (общият брой аргументи в предиката N е броят на аргументите на предиката, нарича се арност на предиката (от термина arity, а понякога пишат pred/N).
неопределен. Ключовата думаnondetermдефинира недетерминирани предикати, които могат да се върнат назад и да генерират множество решения. Предикатите, декларирани с ключовата думаnondetermможе да се провалят.
процедура. Ключовата думаprocedureдефинира предикати, наречениprocedures, които винаги имат едно и само едно решение (но са възможни грешки по време на изпълнение). Процедурите винаги са успешни и не генерират точки за връщане назад. Повечето от вградените предикати на Visual Prolog са вътрешно декларирани като процедури.
определяне. Ключовата думаdetermдефинира детерминистични предикати, които могат или не могат да успеят, но не могат да генерират точки за връщане назад. ТакаПо този начин, предикат, деклариран с ключовата думаdeterm,има най-много едно решение.
мулти. Ключовата думаmultiдефинира недетерминирани предикати, които могат да проследят назад и да генерират множество решения. Предикатите, декларирани с ключовата думаmulti, не могат да се провалят.
погрешно. Предикат, деклариран с ключовата думаerroreous,, винаги е успешен и не дава решение. Обикновено се използва за управление на грешки. Visual Prolog предоставя вградени предикати загрешноизход и errorexit.
провал. Предикат, деклариран с ключовата думаfailure, не дава решение, но може да се провали. Visual Prolog предоставя вграден предикат за неуспехfailure. Неуспешните предикати обикновено се използват, за да принудят търсенето да се върне обратно към най-близката точка за обратно проследяване.