具有谓词的多重性

时间:2017-03-17 02:44:41

标签: alloy predicates multiplicity

所以我有以下内容:

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解释如何做到这一点吗?

2 个答案:

答案 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}