【问题标题】:Is "set" the default multiplicity?“设置”是默认的多重性吗?
【发布时间】:2016-11-13 18:56:02
【问题描述】:

这两个是等价的吗:

r: A -> B

r: A set -> set B

set是默认的多重性吗?

如果是,那么我会在软件抽象书中对箭头运算符的定义提出质疑。这本书在第 55 页上说:

两个关系 p 和 q 的箭头乘积(或只是乘积) p->q 是 通过从 p 和 来自 q 的元组并将它们连接起来。

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

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

书上说这是 Name->Addr 的有效关系

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

但这不是 only 有效的关系,对吧?例如,这是一个有效的关系:

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

是吗?

【问题讨论】:

    标签: alloy


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 2014-05-16
      相关资源
      最近更新 更多