Consider the following specification in Alloy:
sig Books {}
fun f[b:Books] : Books {
{b':Books | b' = Books -b }
}
run show {}
Suppose we have got an instance for which $univ = {Books$0, Books$1, Books$2}$. Evaluating function f with $Books$0$ yields the empty set instead of ${Books$1, Books$2}$:
f[Books$0]
{}
Any ideas why?