KodKod 中的传递闭包

Transitive closure in KodKod

我在使用关系方法 closure() 时遇到问题。如果有人可以解释传递闭包在 KodKod 中是如何工作的。

举个例子:

Relation r1 = Relation.nary("r1",4);
Relation r2 = Relation.binary("r2");
Relation i = Relation.unary("i");
Relation j = Relation.unary("j");
Formula f = r.in(r2.product(i).product(j));

我想知道怎么说:变量 k Oneof(j) 不在关系 r1

的传递闭包中

你的例子中的关系 r1 的元数是 4,传递闭包只能应用于二元关系。

假设 r1 是二元的,类似于 k.in(r1.closure()).not(),其中 k 是计算为二元关系的任何表达式,应该有效。