"set" 是默认的多重性吗?

Is "set" the default multiplicity?

这两个是否等价:

r: A -> B

r: A set -> set B

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

如果是,那么我将对《软件抽象》一书中箭头运算符的定义提出异议。这本书在第 55 页上说:

The arrow product (or just product) p->q of two relations p and q is the relation you get by taking every combination of a tuple from p and a tuple from q and concatenating them.

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

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

书上说这是 Name->Addr

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

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

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

对吗?

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