Alloy 中的多态空关系?
Polymorphic empty relation in Alloy?
我 运行 一个 Alloy 命令,涉及为某些存在物寻找证人,比如这个:
pred foo {
some x, y : E -> E |
baz[x,y] || qux[x,y]
}
Alloy 提出了一个模型,其中 foo
为真。我在 Visualizer 中查看模型,发现 y
恰好是空关系。我想更深入地研究模型,看看 baz
或 qux
是否正确。所以我启动了 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" 中找到。
我 运行 一个 Alloy 命令,涉及为某些存在物寻找证人,比如这个:
pred foo {
some x, y : E -> E |
baz[x,y] || qux[x,y]
}
Alloy 提出了一个模型,其中 foo
为真。我在 Visualizer 中查看模型,发现 y
恰好是空关系。我想更深入地研究模型,看看 baz
或 qux
是否正确。所以我启动了 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" 中找到。