我有一个看起来像这样的Alloy模型:
open util/ordering[Time] as timeOrder
sig Time {
database: one Database
}
sig Database {}
{
#Database>1
some database.this
}
pred show {}
run show
我想使用Alloy Analyzer来查看每次系统的状态。我假设如果我预测“时间”,那么我就能看到这个。但是,如果我按时间投影,当我查看Time0时,它会显示与其他时间相关联的数据库。
具体来说,我有一个如下所示的痕迹:
如果我按时间投影,我会假设Time0只显示Database1,而Time1只显示Database0。但是,当我按时间投影并查看Time0时,它会向我显示Database0和Database1。它用(数据库)注释Database1,但我真正想要的是它只在这个视图中显示Database1。
显然,投射不是我所期望的。为什么不?有什么方法可以查看与我投射的元素相关的元素吗?
答案 0 :(得分:2)
对签名的投影会降低绘制关系的范围,但不会隐藏断开的原子。
然而,这可以通过自定义可视化工具主题来实现:
Database
database
(二元关系database
成为投影下的集合)此外,如果您愿意,也可以取消选中该属性"显示为标签"避免节点上的标记(database)
。