Язык логического программирования ПРОЛОГ. Бураков М.В. - 29 стр.

UptoLike

Составители: 

27
\* 6 *\ rodom_penza(X) :- student(X), Z=penza,not(fact1(X,_)),
gorod(U),not(U=Z),velo(X,U),rodom(leo,U).
\* 7.1 *\ rodom(X,Z) :- student(X),gorod(Z),fact1(X,Z), ! ;
\*7.2 *\ student(X),not(X=leo),Z=penza,rodom_penza(X), !;
\* 7.3 *\ student(X),gorod(Z),not(fact1(_,Z)),X=leo,not(Z=penza),
student(K),not(fact1(K,_)),velo(K,Z);
\*7.4 *\ student(X),not(X=leo),gorod(Z),not(Z=penza),not(fact1(_,Z)),
not(fact1(X,_)), gorod(Y),not(Y=Z),velo(X,Y),
not(rodom(leo,Z)),not(rodom(leo,Y)).
Рассмотрим описание фактов и правил в этой программе.
Первые два правила описывают возможные ограничения на значе-
ния предикатов student и gorod. Это необходимо, чтобы осуществлять
допустимые подстановки при поиске решения.
Факты, обозначенные цифрой три, описывают известные нам дан-
ные о том, где сделаны велосипеды некоторых студентов.
Цифрой 4 обозначено правило, описывающее принадлежность неко-
торого велосипеда некоторому студенту. Правило состоит из двух аль-
тернативных частей, разделенных знаком “;” . Первая часть правила
говорит, что студент X владеет велосипедом Y, если мы знаем такой
факт. Вторая часть правила позволяет делать любые подстановки, если
это не противоречит известным фактам. Предикат отсечения “!” здесь
прекращает поиск новых вариантов, если оказались выполненными все
предшествующие ему условия. Эта операция называется отсечением.
Цифрой 5 обозначены известные факты о месте рождения студен-
тов.
Цифрой 6 описаны представления о том, кто из студентов может
быть родом из Пензы. Это не могут быть Борис или Виктор, поскольку
мы знаем, что они родились в других городах, и должен быть студент,
велосипед которого сделан на родине Леонида.
Состоящее из четырех частей правило 7 описывает общие представ-
ления о родине каждого из студентов. Во-первых, может быть известен
такой факт и тогда другие варианты рассматривать нет необходимости.
Вторая часть правила описывает, кто может быть родом из Пензы. Тре-
тья часть правила описывает возможное место рождения Леонида. И,
наконец, четвертая часть правила описывает, из какого города, кроме
Пензы, могут быть студенты, кроме Леонида. Загрузив эту программу,
можно получить искомое решение.