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

UptoLike

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

29
norm3(_,dmitri,net,net,_).
norm4(_,net,net,victor,grig).
spisok(A,D,B,V,G):-st_A(A),st_D(D),st_B(B),st_V(V),st_G(G),
norm1(A,D,B,V,G),ogr1(A,D,B,V,G),ogr2(A,D,B,V,G);
st_A(A),st_D(D),st_B(B),st_V(V),st_G(G),
norm2(A,D,B,V,G),ogr1(A,D,B,V,G),ogr2(A,D,B,V,G);
st_A(A),st_D(D),st_B(B),st_V(V),st_G(G),
norm3(A,D,B,V,G),ogr1(A,D,B,V,G),ogr2(A,D,B,V,G);
st_A(A),st_D(D),st_B(B),st_V(V),st_G(G),
norm4(A,D,B,V,G),ogr1(A,D,B,V,G),ogr2(A,D,B,V,G).
st_A(A),st_D(D),st_B(B),st_V(V),st_G(G),
not(norm1(A,D,B,V,G)),not(norm2(A,D,B,V,G)),
not(norm3(A,D,B,V,G)),not(norm4(A,D,B,V,G)),
ogr1(A,D,B,V,G),ogr2(A,D,B,V,G).
Возможно, может быть сформулировано более изящное программ-
ное решение, чем приведенное выше. При его поиске читатель может
убедиться, что в подобных случаях очень большое значение имеет вы-
бор предикатов и правил, которые могут определяться неединствен-
ным образом. При неудачном выборе правил можно получить заведомо
ложные решения или исчерпать ресурсы компьютера при вложенном
обращении одного правила к другому.
9. БАЗЫ ДАННЫХ И ЗНАНИЙ НА ПРОЛОГЕ
Факты, описанные в разделе clauses, можно рассматривать, как ста-
тическую базу данных (БД). Эти факты являются частью кода програм-
мы и не могут быть оперативно изменены. Для создания динамической
базы данных в ПРОЛОГе предусмотрен специальный раздел database.
Предикаты в этом разделе могут иметь такую же форму представле-
ния, что и в статической части ПРОЛОГ-программы, но должны иметь
другое имя.
Рассмотрим простой пример.
Программа 20
DOMAINS
name = symbol
rost, ves = integer