Function 如何为Alloy中的函数返回单个值?

Function 如何为Alloy中的函数返回单个值?,function,return-value,alloy,Function,Return Value,Alloy,在合金的功能上找到好的资源有很多困难。我成功地创建了一个返回一组值的函数(即有一个“set”返回类型),但我不知道如何编写一个返回单个值的函数。我我有 open util/ordering[Time] // enforces total order on Time sig Time {} // instances denote timestamps sig File { time : Time // every file has

在合金的功能上找到好的资源有很多困难。我成功地创建了一个返回一组值的函数(即有一个“set”返回类型),但我不知道如何编写一个返回单个值的函数。我我有

open util/ordering[Time]   // enforces total order on Time

sig Time {}                // instances denote timestamps

sig File {
   time : Time             // every file has exactly one timestamp
}

fun getTime[F : set File] : Time {
     {one t : Time | some f : F | all g : F | f.time = t && gte[f.time,g.time]}
}


函数getTime接受一组文件并返回最近的文件戳(F中所有文件的最大时间属性)
然而,无论我以何种方式编写它,我都会不断地得到错误的返回类型(原始布尔)错误或其他错误。如何返回时间类型的内容

由于关键字one,您将得到一个布尔返回类型。当且仅当只有一个时间t满足以下谓词时,此量词强制返回true

如果没有任何量词,函数中的表达式将是我们称之为集合理解的表达式,也就是说,每次返回满足以下谓词的原子时,都会返回一个集合

fun getTime[F : set File] : Time {
     {t : Time | some f : F | all g : F | f.time = t && gte[f.time,g.time]}
}