簡體   English   中英

Dafny:子集檢查的斷言失敗

[英]Dafny: Assertion fails on subset checks

目前,我正在嘗試在 Dafny 中實現 AVL-Tree。 每個子節點和節點本身都是節點Repr:set 的一部分。 在樹中的每次更改之后,都會調用一個更新方法來更新Repr 集。

  1. 第一個斷言表明 new_node 不是左節點的Repr 集的一部分。
  2. 第二個斷言表明,在我將左側子網的Repr 集分配給節點后,該條件仍然正確。
  3. 在我將節點添加到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; 
} 

如果new_node == new_node.left ,則第三個斷言不成立。 你排除了這種可能性嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM