提取集合中具有特定属性(与特定值相关)的所有元素

Extract all elements of a set which have a certain attribute (are in relation with a certain value)

我正在尝试编写一个 Alloy 函数来检索与函数参数相关的特定类型的所有元素(让我说,它们的 "fields/attributes").我试过各种方法,none 成功了。

有点像

fun get[a:A] : set X{
    (x.name :> a)
}

但是这个return一套A,而我想要一套X

这个有效,希望对某人有用:

fun get[a:A] : set X{
    ((X <: name) :> a).A
}

你可以更简单地做到这一点:

name.a

returns name 下映射到 a.

中元素的 X 集合

正在检查与您的版本的等效性:

sig A { }
sig X {
  name: set A
  }

fun get [a:A] : set X{
    ((X <: name) :> a).A
}

fun get' [a:A] : set X{
    name.a
}

check {
  all a: A | get[a] = get'[a]
}