我在Event-B中遇到了很多麻烦。
我希望从一组客户到每个客户编号建立关系
我有这种关系:
cli(PERSON) = NAT1
(人是有限集)
并且在某个事件中我有一部分人
where group <: PERSON
我想直接影响我所写的cli关系:
! x . x : group | cli(x) = numcli
我是以正确的方式建模吗?是否有任何方法可以获得我想要的做法?
答案 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
中删除所有元素,其中第一个元素是其右操作数之一并添加右操作数。即group
中cli
的映射已替换或添加到numcli
的映射中。