了解 Alloy Visualizer 对使用箭头运算符创建的关系的显示

Understanding the Alloy Visualizer's display of a relation created using the arrow operator

为了帮助我理解箭头(乘积)运算符,我创建了一个 WhitePages 模型。每个白页都有一个从名称到地址的映射(此 name/address 映射使用箭头运算符)。我创建了一个谓词来显示白页 w 的 name/address 映射。在谓词中,我指定 name/address 关联的数量为 3。请参见下面的模型。

根据箭头运算符的定义,Name->Address 关系包含名称和地址的所有组合。所以,在我看来,只有一种可能的情况:

令人惊讶的是,Visualizer 给出的不是这个:

在我看来这不是一个有效的实例。 Name/Address 映射在哪里?

sig WhitePages {
    address: Name->Address
}

sig Name {}

sig Address {}

pred Show (w: WhitePages) {#w.address = 3}

run Show

您将它投射到地址上,因此现在每个地址都有一个快照。您会在底部看到一个 UI 控件,可让您选择地址。请注意,您的约束说明名称-地址关系中有 3 对,因此它们可以分布在不同的地址。