事件-B,正式建模:如何影响一组关系的所有元素

时间:2015-04-26 10:16:39

标签: modeling event-b

我在Event-B中遇到了很多麻烦。

我希望从一组客户到每个客户编号建立关系

我有这种关系:

cli(PERSON) = NAT1(人是有限集)

并且在某个事件中我有一部分人

where group <: PERSON

我想直接影响我所写的cli关系:

! x . x : group | cli(x) = numcli

我是以正确的方式建模吗?是否有任何方法可以获得我想要的做法?

1 个答案:

答案 0 :(得分:0)

我有点猜测你想要实现的目标:cli将一个人映射到一个数字:

VARIABLES
  cli
INVARIANTS
  cli : PERSON +-> NAT1

你想要一个事件(让我们称之为ev)给一组人(称为group)分配相同的数字:

ev = ANY
  group, numcli
WHERE
  group <: PERSON
  numcli : NAT1
THEN
  cli := cli <+ (group**{numcli})
END

group ** {numcli}是一组对(关系),其中第一个元素是group的元素,第二个元素是numcli。运算符<+(关系覆盖)从cli中删除所有元素,其中第一个元素是其右操作数之一并添加右操作数。即groupcli的映射已替换或添加到numcli的映射中。