计算布尔运算的出现次数

Count the occurrences of a boolean operation

我必须制定一个 OCL 规则,说明两个参数不能相等。我不能使用 not() 所以我必须证明像 param1 = param2 这样的东西是空的。

我尝试使用 isEmpty()size(),但因为它是 boolean,所以这些运算符不起作用

self.ab1.ab2
->forAll(x | x.b1.b2
->forAll(port | (self.param1 = port.param2)->isEmpty())

 )

我想我必须使用某种需要等于 0 的 count() 运算符来表明 param1 和 param2 不同,但我不知道如何使用它。

感谢您的帮助

对于您的直接问题,使用 <>self.param1 <> port.param2 似乎是合适的。但是,从某些上下文开始进行双重嵌套的 forAll 似乎没有帮助。如果您不能将 'constraint' 移动到更好的上下文中,也许您至少可以通过以下方式更清楚: self.ab1.ab2.b1.b2.param2->asSet()->excludes(self.param2)