【发布时间】:2014-11-17 00:27:54
【问题描述】:
众所周知,如果有多个理发师,他们可以互相刮胡子,理发师悖论就解决了。
本规范一致:
sig Man {shaves: set Man}
some sig Barber extends Man {}
fact {
Barber.shaves = {m: Man | m not in m.shaves}
}
run { } for 4
然而,以下内容,尽管看起来相同,但仍然不一致:
sig Man {
shavedMen : set Man
}
fact {
# {barber:Man | barber.shavedMen = {m: Man | m not in m.shavedMen} } > 1
}
run {} for 4
为什么?
【问题讨论】: