вырождается в символьную константу pname. В списке postconditions
должны фигурировать имена всех выходных позиций перехода.
Добавление меток в выходные позиции перехода осуществляется с
помощью предиката insert. Предикат insert(postconditions, S2,S1) является
истинным, если имеется такая конкретизация термов в списке postconditions,
что при их добавлении к маркировке S2 получается маркировка S1. Предикат
insert определяется с помощью следующих клозов:
insert([ ], L, L).
insert([X | L1], L2, [X | L3]) :- insert(L1, L2, L3).
В качестве простого примера рассмотрим кодирование сетевой модели,
приведенной на рис. 1.5. Модель состоит из одного перехода,
представляемого следующими клозами:
init([p1(a), p1(a), p1(b), p1(b), p1(b), p2(b,c), p2(b,b), p4, p4]).
arc(S, t1, S1) :– remove([p1(X), p1(X), p2(Y,Z)], S, S2),
less(Y,Z),
insert([p3(X,Y), p3(X,Z), p4], S2, S1).
less(a,b).
less(b,c).
С помощью предиката init задается начальная маркировка сетевой
модели. Предикат less определяет порядок на множестве индивидуальностей
{a,b,c}. При целевом утверждении: init(S), arc(S,t1,S1) система выдаст ответ:
S = [p1(a), p1(a), p1(b), p1(b), p1(b), p2(b,c), p2(b,b), p4, p4]
S1 = [p1(b), p1(b), p1(b), p2(b,b), p3(a,b), p3(a,c), p4, p4, p4].
Полученный результат можно проинтерпретировать следующим
образом: сетевая модель при срабатывании перехода t1 перешла из
начального состояния S в заключительное состояние S1.
1.4. Построение графа достижимых состояний с помощью
языка Пролог
В нашем случае для исследования предикатных сетей будем
пользоваться методом построения графа достижимых состояний (ГДС). Для
реализации данного метода, равно как и для представления предикатных
сетей, используется язык логического программирования Пролог.
Cледует отметить, что могут быть выделены хорновские клозы,
описывающие алгоритмы функционирования PВС и представленные с
помощью предикатных сетей; ограничения, налагаемые на
функционирование системы; методы исследования, требования к системе,