在以下合金模型中:
sig Family{
father: one Member,
mother: one Member,
daughter: set Member,
son: set Member
}
sig Member{}
fact {
all m:Member | one m.~(father+mother+daughter+son)
(none->none) = (mother & son) + (daughter & son) +(father & mother) + (father & daughter) + (father & son) + (mother & daughter)
}
pred show(){}
run show for 12 but exactly 2 Family, exactly 5 Member
在他们的约束意义上,儿子和女儿的关系没有区别(至少据我所知)但是当我运行这个模型时,它给了我3个实例:它在两个家族之间置换了儿子,但它没有置换女儿!为什么会这样?
PS:当我为1个家庭尝试它时,分析仪不会区分儿子和女儿,但当我将家庭增加到2或3时,歧视就会发生!