Логическое программирование (Prolog) / Практика 1 / Практика 1
.docxИндуктивное логическое программирование
Практика №1, Вариант 5
Целевой предикат:
has_nephew(X)
Фоновые знания:
male(X)
female(X)
parents(X,Y)
male("Name1").
male("Name2").
male("Name3").
male("Name4").
male("Name5").
male("Name8").
female("Name6").
female("Name7").
female("Name9").
female("Name10").
female("Name12").
parent("Name1", "Name3").
parent("Name1", "Name4").
parent("Name9", "Name3").
parent("Name9", "Name4").
parent("Name2", "Name1").
parent("Name6", "Name2").
parent("Name6", "Name5").
parent("Name5", "Name8").
parent("Name7", "Name8").
parent("Name11", "Name7").
parent("Name11", "Name10").
parent("Name6", "Name12").
Примеры целевого предиката (для правильного и неправильного определений предиката):
Правильные:
has_nephew("Name10")
has_nephew("Name5").
Неправильные:
has_nephew("Name1").
has_nephew("Name8").
Определение целевого предиката
Правильное:
has_nephew(X):-
parent(Y,X), parent(Y,Z), parent(Z,T),male(T) .
Неправильное:
has_nephew(X):-
parent(Y,X), parent(Y,Z), female(Z)