多重集

时间:2012-11-14 16:06:39

标签: alloy

鉴于以下定义:

sig Name,Addr{}
sig Book{ addr : Name -> some Addr}

Let Name = { (J),(t), (b)}
Addr = {(1), (2)}
Book = {(bb0)}

我很好奇在关系addr : Name -> some Addr中,第二列中Name的多重性是什么。而且,以下是可能的

addr = {(bbo, j , 1), (bb0, j, 2)}

我试图了解j是否可以在第二列中出现多次

1 个答案:

答案 0 :(得分:1)

简短的回答是肯定的,但我只是通过尝试来解决,你必须正确定义你的模型:

abstract sig Name,Addr{}
abstract sig Book{ addr : Name -> some Addr}

one sig J,t,b extends Name {}
one sig a1,a2 extends Addr {}
one sig bb0 extends Book {}

run { #addr > 3 } for 4 int

执行它并使用评估器评估addr您将看到它包含3个以上的元素,其中两个元素具有相同的Name原子。