簡體   English   中英

在 Alloy 中獲取簽名的子集

[英]Getting subsets of signatures in Alloy

我想知道是否有辦法在 Alloy 中的給定簽名中提取集合的子集。 提取的集合然后將用於模型的某些事實的定義。

假設以下模型:

abstract sig Status{}
one sig Status1 extends Status{}
one sig Status2 extends Status{}

sig A {
     status: one Status
}

sig B {
     setA: set A
}

fun SubsetOfSetAinB [b: B] : set A {
    //have some kind of operation here 
    //that returns a subset of b.setA where b.setA.status in Status1
}

感謝您的時間。

您應該能夠通過設置交集來獲得它,例如b.setA & Status1.~status

你自己已經給出了答案:-)。 你只缺少 5 個字符:

fun SubsetOfSetAinB [b: B] : set A {
    { x : b.setA | b.setA.status in Status1 }
}

使用{ vars | test(vars) }的枚舉 { vars | test(vars) }對很多問題都非常有用。

暫無
暫無

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

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