80
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. «Приборостроение». 2016. № 3
секвенты, с предикатными символами, начинающимися с префикса
sequent
, и правило обязательной реакции, в левой части которого нахо-
дится целевой предикат
execute(XL11, XP111, XP221, XL12,
XP112, XP222)
с предикатным символом
execute
. Термами этого пре-
дикатного символа являются переменные, соответствующие именам се-
квентов, которые должны обязательно использоваться при взаимодей-
ствии агентов для выполнения свойства обязательной реакции. В правой
части этого правила указывается перечень всех секвентов с этими имена-
ми и соответствующими термами.
Раздел
clauses
содержит единственный предикат, каждое истинное
значение которого выдает список имен всех секвентов, участвующих в
том или ином взаимодействии агентов и не нарушающих свойство обяза-
тельной реакции. Кроме имен также выдаются соответствующие этим
взаимодействиям значения термов. В связи с ограниченным объемом ста-
тьи в конце правила с левой частью
execute(XL11, XP111, XP221,
XL12, XP112, XP222)
поставлено отсечение (!), позволяющее выда-
вать информацию только об одном макросостоянии взаимодействия
агентов, правильном с позиции свойства обязательной реакции. В соот-
ветствии с приведенной логической программой это будет следующая
информация:
sequentRlp(XL11, S1L11, rlp(receive(p1l(M1L11), p2l(M1L21)),
put(lp1(M2L11), lp2(M2L21))), S2L11)
XL11 = preparation, S1L11 = readiness, M1L11 = opened,
M1L21 = opened, M2L11 = invitation, M2L21 = invitation,
S2L11 = inviting
sequentPp1r(XP111, S1P11, pp1r(p1put(p1l1(M1L11)),
p1receive(lp11(M2L11))), S2P11)
XP111 = p1preparation, S1P11 = p1ready, M1L11 = opened, M2L11
= invitation, S2P11 = p1invited
sequentPp2r(XP221, S1P21, pp2r(p2put(p2l2(M1L21)),
p2receive(lp22(M2L21))), S2P21)
XP221 = p2preparation, S1P21 = p2ready, M1L21 = opened, M2L21
= invitation, S2P21 = p2invited
sequentPlr(XL12, S1L12, plr(put(lp1(M1L12), lp2(M1L22)),
receive(p1l(M2L12), p2l(M2L22))), S2L12)
XL12 = reaction, S1L12 = inviting, M1L12 = invitation,
M1L22 = invitation, M2L12 = invited, M2L22 = invited,
S2L12 = accepting
sequentRp1p(XP112, S1P12, rp1p(p1receive(lp11(M1L12)),
p1put(p1l1(M2L12))), S2P12)
XP112 = p1reaction, S1P12 = p1invited, M1L12 = invitation,
M2L12 = invited, S2P12 = p1accepted