我有两个类A,B并且与它们的额外类数据有关系R。
因此,A和B通过 相互关联R。
sig A {}
sig B {}
sig R {
a : A,
b : B,
data : Bool
}
这里,Bool 定义为:
sig Bool {}
sig True, False extends Bool {}
现在,我这样扩展A:
sig A{
allb : some B
}
其中包含 this和 thatB之间存在关系以及数据类型为 的所有实例。ABTrue
我想将以下逻辑陈述表达为合金事实:

(来源:dropproxy.com)
我在这里假设True == 1andFalse != 1集合A和分别R包含 and 的所有A实例R。
到目前为止,我尝试的是定义 a fun trueR(a : A)which 应该返回所有R's for whichR.a = a and r.data = True和 a fact allbIsRTruewhich 声明 for eachA allb应该是R.b's 返回的总和 by trueR。
但是,这就是我卡住的地方,我找不到正确的构造来对引用中的集合求和,并尝试sum导致语法错误。
我如何将我的正式约束指定为合金事实?