当前,我正在尝试在Dafny中实现AVL树。 每个子节点和节点本身都是节点Repr:set的一部分。 在树中每次更改后,都会调用一个update方法来更新Repr集。
我不明白为什么最后一个断言失败了,因为被检查的集合没有被更改。
if(new_node.left != null && new_node.right == null) {
assert new_node !in new_node.left.Repr;
new_node.Repr := new_node.left.Repr;
assert new_node !in new_node.left.Repr;
new_node.Repr := new_node.Repr + {new_node};
assert new_node !in new_node.left.Repr;
new_node.Contents := {new_node.data} + new_node.left.Contents;
}
答案 0 :(得分:0)
如果new_node == new_node.left
,则第三断言不成立。您是否排除了这种可能性?