合金 - 理发悖论的解决方案仍然不一致

时间:2014-11-17 00:27:54

标签: logic alloy

众所周知,如果有多个理发师可以解决理发悖论,那么他们可以相互刮胡子。

此规范是一致的:

 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

为什么呢?

1 个答案:

答案 0 :(得分:4)

在第一个事实中你约束: 所有理发师剃光的男人都是不刮胡子的男人

修改 我对第二个事实的解释当然缺乏清晰度。 你说一个男人被认为是理发师,如果他刮胡子的男人等于所有不刮胡子的男人(包括他在内,不一致的地方,那就是全部)这个问题的乐趣)。