如何指定集合的所有成员在 Alloy 中都是唯一的?
How Can I Specify All Members of a Set Are Unique in Alloy?
我有一个 alloy 模型。本着小型复制示例的精神,我提取了以下内容:
sig SearchTerm {}
sig Document{
keyword: set SearchTerm
}
assert keywordsAreUniqueForDocument {
all k, k' : Document.keyword | k != k'
}
check keywordsAreUniqueForDocument for 5
我想要实现的是与特定文档关联的关键字集应该是唯一的。但这立即向我展示了一个微不足道的反例。
如何指定集合中不应有重复的元素?
document.keyword
是一个集合,根据集合定义,它只是唯一的元素。你得到一个反例 k = k'
。如果您改写 all disj k, k' : Document.keyword | k != k'
,它会轻松通过。
如果您不想让两个 文档 共享关键字,那就是 all disj d, d': Document | no d.keywork & d'.keyword
.
我有一个 alloy 模型。本着小型复制示例的精神,我提取了以下内容:
sig SearchTerm {}
sig Document{
keyword: set SearchTerm
}
assert keywordsAreUniqueForDocument {
all k, k' : Document.keyword | k != k'
}
check keywordsAreUniqueForDocument for 5
我想要实现的是与特定文档关联的关键字集应该是唯一的。但这立即向我展示了一个微不足道的反例。
如何指定集合中不应有重复的元素?
document.keyword
是一个集合,根据集合定义,它只是唯一的元素。你得到一个反例 k = k'
。如果您改写 all disj k, k' : Document.keyword | k != k'
,它会轻松通过。
如果您不想让两个 文档 共享关键字,那就是 all disj d, d': Document | no d.keywork & d'.keyword
.