% Изучение предиката по фактам, определяющим семейные отношения
% Фоновые знания
backliteraK parent(X,Y), [X,Y]). % Фоновый литерал с переменными [X,Y]
backliteraK male(X), [X]).
backliteraK female(X), [X]).
prolog_predicate(parent(_,_)). % Цель parent(_,_) выполняется
% непосредственно интерпретатором Prolog prolog_predicate(male(_)). prolog_predicate(female(_)).
parent (pam, bob).
parent (torn, bob).
parent (torn, liz).
parent (bob, ann).
parent (bob, pat).
parent (pat, jim).
parent (pat, eve).
female (pam). male (torn). male(bob). female(liz). female(ann). female (pat). male(jim). female(eve).
% Положительные примеры
ex(has_daughter(torn)). % Том имеет дочь ex(has_daughter(bob)). ex(has_daughter(pat)).
% Отрицательные примеры
nex(has_daughter(pam)). % Пэм не имеет дочери nex(has_daughter(jim)).
start^hyp([ [has_daughter (X) ] / [X] ]). % Начальная гипотеза
Глава 19. Индуктивное логическое программирование
Отрицательные примеры представлены с помощью предиката nex (Example), например, как показано ниже. nex(has_daughter(pairi) 1. % Пэм не имеет дочери
Предикат backliteral (сокращение от background literal - фоновый литерал) задает форму литералов, которые могут использоваться в программе ILP в качестве целей при формировании предложений Prolog. В частности, предикат backliteral(parent(X,Y), ~X,Y',).
указывает, что в состав языка гипотез входят литералы в форме parent (X,Y), в которых переменные X и Y могут быть переименованы. Вторым параметром предиката backliteral является список переменных в этом литерале. Такие фоновые литералы могут добавляться в качестве целей в тела формируемых предложений. Фоновые литералы представляют собой вызовы фоновых предикатов, которые могут быть заданы непосредственно на языке Prolog. Предикат prolog_oredicate определяет цели, которые должны быть непосредственно выполнены интерпретатором Prolog1. Например, предикат prolog^predicate(parent(X,Y)).
указывает, что цели, которые согласуются с предикатом parent (X, Y), обрабатываются интерпретатором Prolog непосредственно, путем выполнения фонового предиката parent. Другие цели, такие как has daughter (torn;, могут быть выполнены с помощью интерпретатора, подобного Prolog, но с особыми свойствами, который будет реализован специально для использования в методе ILP.