Alloy の次の仕様を検討してください。
sig Books {}
fun f[b:Books] : Books {
{b':Books | b' = Books -b }
}
run show {}
$univ = {Books$0, Books$1, Books$2}$ のインスタンスがあるとします。関数 f を $Books$0$ で評価すると、${Books$1, Books$2}$ の代わりに空のセットが生成されます。
f[Books$0]
{}
理由はありますか?