Alloy 中的多态空关系?

Polymorphic empty relation in Alloy?

我 运行 一个 Alloy 命令,涉及为某些存在物寻找证人,比如这个:

pred foo { 
  some x, y : E -> E | 
    baz[x,y] || qux[x,y] 
}

Alloy 提出了一个模型,其中 foo 为真。我在 Visualizer 中查看模型,发现 y 恰好是空关系。我想更深入地研究模型,看看 bazqux 是否正确。所以我启动了 Evaluator window 并输入 baz[$foo_x, ???]。但是我可以为 ??? 输入什么?由于 y 为空,因此不存在名称为 $foo_y 的变量。键入 none{} 会出现类型检查错误。

Alloy是否提供可用于任何类型的空关系?或者有什么方法可以到达 y 见证,即使它是空的?

我相信 baz[$foo_x, none->none] 应该可以。关系 none 的元数为 1,通过使用叉积,您可以获得所需元数的空关系。对此的解释可以在 Jonathan Edwards、Daniel Jackson 和 Emina Torlak 的论文 "A Type System for Object Models" 中找到。