我运行一个合金命令,涉及为某些存在物找到证人,比如这个:
pred foo {
some x, y : E -> E |
baz[x,y] || qux[x,y]
}
Alloy推出了foo
为真的模型。我在Visualizer中查看模型,发现y
碰巧是空关系。我想更深入地了解模型,看看baz
或qux
是否属实。所以我启动Evaluator窗口并输入baz[$foo_x, ???]
。但是我可以为???
键入什么?由于y
为空,因此没有名称为$foo_y
的变量。输入none
或{}
会产生类型检查错误。
Alloy是否提供可以在任何类型中使用的空关系?或者有没有办法获得y
见证即使它是空的?
答案 0 :(得分:1)
我相信baz [$ foo_x,none-> none]应该有效。关系none没有arity 1,通过使用cross product,你可以得到所需arity的空关系。对此的解释可以在论文"对象模型的类型系统"由乔纳森爱德华兹,丹尼尔杰克逊和艾米娜托拉克。