名簿の例の次の単純な変形を考えてみましょう
sig Name, Addr {}
sig Book { addr : Name -> Addr } // no lone on Addr
pred show(b:Book) { some n : Name | #addr[b,n] > 1 }
run show for exactly 2 Book, exactly 2 Addr, exactly 2 Name
一部のモデルインスタンスでは、エバリュエーターで次の結果を得ることができます
all b:Book | show[b]
--> yields false
some b:Book | show[b]
--> yields true
show[Book]
--> yields true
showがリレーションだった場合、{true、false}のような答えが得られると期待するかもしれません。述語である場合、単一のブール値が返されます。show [Book]は、その上の全称記号表現の省略形であると期待していました。代わりに、存在記号を使用して結果を折りたたんでいるようです。誰もがこれの合理的な理由を知っていますか、またはshow [Book]の意味について別の説明がありますか?