簡體   English   中英

合金規格

[英]Alloy specifications

我是一個學習合金的初學者,我想知道這個 n.^address 是什么意思(也許有一個例子)? 因為從邏輯上講,如果我們將地址視為一組像 (A0,A1) 這樣的對,那么我們如何將 n(例如 N0)與該集合連接起來?因為地址中最左邊的對的元素與 n 的性質不同. 我以為那是不可能的。 如果有人能指導我,我將不勝感激

我已經有一段時間沒有使用合金了,但是^運算符表示其操作數關系的傳遞閉包。 所以如果address{(a,b), (b,c)}那么^address{(a,b), (b,c), (a,c)}

n.^address是新關系在n上的投影。

所以如果na ,那么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.^addressn表示的元組集和^address表示的元組集之間的連接。

表達式^address又表示關系address的傳遞閉包,即包含傳遞地址的最小關系。

事實上,或原則上是否存在n中的任何元組,其最右邊的值與^address中某個元組的最左邊的值相同——或者,換句話說,表達式n.^address是否保證是否表示空集——部分取決於變量n和關系地址的定義方式,部分取決於宇宙的填充方式。 address的傳遞閉包是否與address相同或更大的關系也是如此。

如果N0A0A1都是原子,並且如果關系地址僅包含對(A0, A1) ,並且表達式n表示(包含 singleton 集合)原子N0 ,那么實際上表達式n.^address將表示空集。 另一方面,如果地址包含元組(N0, A0)以及元組(A0, A1) ,則

  • 表達式地址表示包含元組(A0, A1)的 singleton 集合,
  • 表達式^address也表示包含元組(A0, A1)的 singleton 集合,並且
  • 表達式n.^address表示包含元組(N0, A1)的 singleton 集合,因為集合{(N0, A0)}與集合{(A0, A1)}的連接是集合{(N0, A1)} ) {(N0, A1)}

由於您沒有提供有關您心目中的合金 model 的更多信息,因此無法多說。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM