所以我有以下内容:
some sig Person {
friends : set Person
}
fact TransitiveForThree {
one p1, p2, p3 : Person {
p1 in p2.friends && p2 in p3.friends => p1 in p3.friends
}
}
我的想法是,我希望在那里存在一组3人,他们彼此都是朋友。但是我希望它是这样的,存在一个至少3个或更多的人,他们都是朋友。有人可以用Alloy解释如何做到这一点吗?
答案 0 :(得分:0)
fact three_friends {some disj p, q, r : Person | p+q+r -> p+q+r in friends}
未经审讯!它确实迫使集团中的三个人成为他们自己的朋友。您需要将范围设置为至少包含3个人。
答案 1 :(得分:0)
sig Person {friends: set Person}
run {some s: set Person | #s >= 3 and s->s in friends}