对不起,标题有点神秘。我有一个 TLA+ 规范,它定义了两组:
variables Requests = {}, Outcomes = {};
我有一组工人添加请求,另一组或工人满足它们并写信给Outcomes
. 每个请求都有一个唯一Id
的,匹配的Outcome
条目也将包含它。
我想保证添加到Requests
集合中的任何请求最终都与集合中具有相同的结构Id
匹配Outcomes
。我一直在尝试使用 "leads to", ~>
, 运算符来执行此操作,但无法弄清楚如何解决Id
匹配部分。
我天真地尝试过类似的东西:
RequestsAreFulfilled == \E req \in Requests: TRUE
~> \E outcome \in Outcomes : outcome.id = req.id
但这显然会中断,因为req
在第二个表达式中没有定义。我已经考虑过第二个表达的内容是“然后有一个状态,所有请求项都与结果项匹配”,但这不起作用,因为系统永远不会终止 - 很可能总是有更多的请求中Requests
盘,自是Outcomes
一直在追赶。
我有什么方法可以断言请求最终与具有相同 ID 的结果匹配?