众所周知,如果有多个理发师可以解决理发悖论,那么他们可以相互刮胡子。
此规范是一致的:
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
为什么呢?
答案 0 :(得分:4)
在第一个事实中你约束: 所有理发师剃光的男人都是不刮胡子的男人
修改强> 我对第二个事实的解释当然缺乏清晰度。 你说一个男人被认为是理发师,如果他刮胡子的男人等于所有不刮胡子的男人(包括他在内,不一致的地方,那就是全部)这个问题的乐趣)。