“设置”是默认的多重性吗?

时间:2016-11-13 18:56:03

标签: alloy

这两个是否相同:

r: A -> B

r: A set -> set B

也就是说set是默认的多重性?

如果是,那么我将在Software Abstractions一书中对箭头操作符的定义进行狡辩。这本书在第55页说:

  

两个关系p和q的箭头乘积(或仅仅乘积)p-> q   通过从p和p中获取元组的每个组合得到的关系   来自q的元组并将它们连接起来。

我将该定义解释为p <&gt;的唯一有效实例.q是具有来自p的元组和来自q的元组的所有可能组合的实例。但那不对(我想)。包含p和q之间映射的任何实例都是有效的。例如,第56页就是这个例子,

Name = {(N0), (N1)}
Addr = {(D0), (D1)}

这本书说这是Name-&gt; Addr

的有效关系
{(N0, D0), (N0, D1), (N1, D0), (N1, D1)}

但那不是唯一的有效关系,对吗?例如,这是一个有效的关系:

{(N0, D0), (N1, D1)}

是吗?

1 个答案:

答案 0 :(得分:2)

声明r:A-> B表示r是A-> B的子集。表达式A-> B只有一个值,它是A和B的叉积。声明产生r的一组可能值,其中包括您引用的书中给出的示例,以及你问的例子。