【问题标题】:Multiplicity with Predicates谓词的多重性
【发布时间】:2017-03-17 02:44:40
【问题描述】:

所以我有以下内容:

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 predicates multiplicity


    【解决方案1】:
    fact three_friends {some disj p, q, r : Person | p+q+r -> p+q+r in friends}
    

    没试过!它确实迫使集团中的三个人与自己成为朋友。您需要将范围设置为至少包含 3 个人。

    【讨论】:

      【解决方案2】:
      sig Person {friends: set Person}
      run {some s: set Person | #s >= 3 and s->s in friends}
      

      【讨论】:

        猜你喜欢
        • 2019-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多