-->

在三元关系的多重性(Multiplicities in ternary relations)

2019-09-22 15:15发布

该下限多重的语义someone三元关系很难把握。 根据软件抽象 (修订版)pp.79-80关系addr: Book -> (Name -> some Addr)应该等于all b: Book | b.addr in Name -> some Addr all b: Book | b.addr in Name -> some Addr (另见第97页)。 但什么是后者的配方究竟是什么意思? 我的想象力在这里失败。 这就是为什么我在合金分析仪4.1.0做了一些实验。 在这个模型中的含义:

sig Name, Addr {}
sig Book { addr: Name -> some Addr }
assert implication {
 #Book = 0 or all n: Name | some b: Book, a: Addr | n in b.addr.a
}
check implication

成立(反例找到)。 所以,如果有任何一本书,每个名称应当在这些书籍中的至少一个注册。 无证地址都允许的,没有书籍,无证名突然出现被允许了。

在下面的模型的含义:

sig Name, Addr {}
sig Book { addr: Name some -> Addr }
assert implication {
  #Book = 0 or all a: Addr | some b: Book | #b.addr.a > 0
}
check implication

再次成立。 它的前代机型的镜像:无证地址都禁止的,除非没有书的。 并有相对于名称的文件没有任何限制。

这两种型号可以组合,并制定更简洁:

sig Name, Addr {}
sig Book { addr1: Name -> some Addr, addr2: Name some -> Addr }
assert implications {
  some Book implies Name in Book.addr1.Addr and Addr in Book.addr2[Name]
}
check implications

所以,如果有任何一本书, 所有的名称应参加相关ADDR1和所有 ADDR都应该参与ADDR2。 多重one行为相似。

看来软件抽象和分析不告诉如R结构相同的故事:A - >(B M - > N c 据下限约束有关,但我可能错过了一些东西。 我发现的意义是不是我的预期,有可能是我还没有发现其它奇怪的影响。 我越来越觉得嵌套下限多重毫无意义可言。 我可能是对这个?

Answer 1:

第一个例子困扰了我很长一段时间; 它让我感到惊讶,没有映射的名称存在于任何情况。 对于它的价值,但是,我发现在页码。 第一版78的声明,“多重性只是一个缩写,并且可以通过标准的约束来代替;在多个约束

r: A m -> n B

可以写成

all a: A | n a.r
all b: B | m r.b

应用这些第一重写规则的声明

all b: Book | b.addr in Name -> some Addr

你从第一个例子模型推导,我们得到

all b: Book | all n: Name | some n.(b.addr)

或散文“的所有书籍B和名称N,有一些映射在b.addr N”,其中至少解决了我最初的困惑。 为了让未映射名称必须写要么sig Book { addr: set (Name -> Addr) }或(如在旋风之旅以后的例子) sig Book { names: set Name, addr: names -> some Addr}

我曾与第二重写规则(一个涉及 )多一点麻烦。 目前在没有明确的多重Name (无 ),和我花了一些时间翻翻书找到默认多重约束的关系的规范(类似于默认one用于其他领域),并与写作的各种方法试验相当于约束,得出的结论是没有默认的多重约束之前; 相反,默认为存在多重约束。 因此,第二个重写规则页上给出。 78不适用于Name -> some Addr ; 没有多重约束,并且效果是,在地址的每一个 ,可以存在(b.addr).A的零个或多个实例。

我从一个语言的设计点猜测,我认为这可能有助于有一个明确的“默认的多重约束” set ,并允许像声明

all b: Book | all a: Addr | set (b.addr).a
/* currently produces type error */

与意义,有可能是在b.addr为每个地址零个或多个条目。

但我倾向于认为,有或没有这种变化,你仍然会正确地说,影响someone三元关系是很难把握。



文章来源: Multiplicities in ternary relations
标签: alloy