[英]Alloy specifications
我是一個學習合金的初學者,我想知道這個 n.^address 是什么意思(也許有一個例子)? 因為從邏輯上講,如果我們將地址視為一組像 (A0,A1) 這樣的對,那么我們如何將 n(例如 N0)與該集合連接起來?因為地址中最左邊的對的元素與 n 的性質不同. 我以為那是不可能的。 如果有人能指導我,我將不勝感激
我已經有一段時間沒有使用合金了,但是^
運算符表示其操作數關系的傳遞閉包。 所以如果address
是{(a,b), (b,c)}
那么^address
是{(a,b), (b,c), (a,c)}
。
n.^address
是新關系在n
上的投影。
所以如果n
是a
,那么n.^address
是{b,c}
例子:
abstract sig atom{
address: lone atom
}
one sig a,b,c extends atom{}
fact {
address = a->b + b->c
}
check {
a.^address = b+c
}
你問“這個 n.^ 地址是什么意思?”
表達式n.^address是n表示的元組集和^address表示的元組集之間的連接。
表達式^address又表示關系address的傳遞閉包,即包含傳遞地址的最小關系。
事實上,或原則上是否存在n中的任何元組,其最右邊的值與^address中某個元組的最左邊的值相同——或者,換句話說,表達式n.^address是否保證是否表示空集——部分取決於變量n和關系地址的定義方式,部分取決於宇宙的填充方式。 address的傳遞閉包是否與address相同或更大的關系也是如此。
如果N0
、 A0
和A1
都是原子,並且如果關系地址僅包含對(A0, A1)
,並且表達式n表示(包含 singleton 集合)原子N0
,那么實際上表達式n.^address將表示空集。 另一方面,如果地址包含元組(N0, A0)
以及元組(A0, A1)
,則
(A0, A1)
的 singleton 集合,(A0, A1)
的 singleton 集合,並且(N0, A1)
的 singleton 集合,因為集合{(N0, A0)}
與集合{(A0, A1)}
的連接是集合{(N0, A1)}
) {(N0, A1)}
。由於您沒有提供有關您心目中的合金 model 的更多信息,因此無法多說。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.