[英]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.