Alloy - 声明 1 或 2 个变量

Alloy - Declare 1 or 2 variables

我希望能够从名为 group 的集合中声明一个或两个相同类型的变量。我知道 onelone 可用于分别声明一个或 zero/one 变量。到目前为止,我的尝试是:

    one x : group, lone y : from | {...}

但是,这似乎不起作用。我的目标是拥有一个或两个变量,然后我可以在以下表达式中使用这些变量。

这里可能会有混淆。 如果你写 one x:group| expr 这意味着组中应该只有一个 x 以便表达式 expr 成立。

知道了这一点,如果你想表达那种约束,你可以这样写: 例如假设有一个名为 size 的字段描述了从 groupInt 的关系, 表示至少一个和最多两个组的大小为5可以如下

one x,y : group | (x + y).size=5 

在此示例中,x+y 将根据是否 x=y 生成一个或两个组元素。