合金中的多晶空关系?

时间:2016-01-21 03:42:56

标签: alloy

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

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

Alloy推出了foo为真的模型。我在Visualizer中查看模型,发现y碰巧是空关系。我想更深入地了解模型,看看bazqux是否属实。所以我启动Evaluator窗口并输入baz[$foo_x, ???]。但是我可以为???键入什么?由于y为空,因此没有名称为$foo_y的变量。输入none{}会产生类型检查错误。

Alloy是否提供可以在任何类型中使用的空关系?或者有没有办法获得y见证即使它是空的?

1 个答案:

答案 0 :(得分:1)

我相信baz [$ foo_x,none-> none]应该有效。关系none没有arity 1,通过使用cross product,你可以得到所需arity的空关系。对此的解释可以在论文"对象模型的类型系统"由乔纳森爱德华兹,丹尼尔杰克逊和艾米娜托拉克。