2016-11-07 56 views
0

下面我創建了三組:名稱,地址和主機。地址字段將名稱映射到地址。主機字段將地址映射到主機。爲什麼我會得到兩個關係連接和三個關係連接的相同圖形?

sig Name { 
    addr: Address 
} 

sig Address { 
    host: Host 
} 

sig Host {} 

在這裏,我要求合金分析器創建一個兩個關係連接的實例:addr和host。

run {one addr.host} for 1 

這是所生成的圖形:

enter image description here

接着,請問合金分析儀以產生用於連接三個關係的一個實例:地址,相同的原子的三元關係在每個元組和主機中。

run {one addr.{a, b, c: univ | a = b and b = c}.host} for 1 

令人驚訝的是,生成的圖形與上面顯示的相同。爲什麼是這樣?

回答

1

可視化器通過爲每個指定的關係和集合給出值來顯示一個實例。你的第二個例子中只有兩個命名關係。如果你想看到一個給定的表達式的關係的價值,你需要命名它,例如像這樣:

run {some r: univ -> univ -> univ | 
    r = {a, b, c: univ | a = b and b = c} and 
    one addr.r.host} for 1 
+0

啊!我沒有意識到這一點。再次感謝你丹尼爾! –

相關問題