Dafny:不检查多个谓词

时间:2020-06-12 17:55:11

标签: dafny

当前,我试图在Dafny Repo中编写现有Binary-Tree的平衡版本(AVL-Tree)。 我可以验证此平衡树仍然是有效的二叉树。

为验证它也满足AVL-Tree的需求,我创建了两个附加谓词。 这些谓词可以验证子树的高度有效,并且节点及其子树是平衡的。

由于高度有效性检查需要有效的二叉树,而由于余额检查需要有效的高度计算,因此谓词彼此依赖:

  predicate Heigth_Valid() 
    reads this, Repr 
  {
    Valid() &&
    (..)
  }

  predicate Balanced() 
    reads this, Repr
  {
    Valid() &&
    Heigth_Valid() &&
    (..)
  }

  predicate Valid()
    reads this, Repr
  {
    (..)
  }

因此,可以将验证分为不同的方法,因为某些方法只能提供有效的二叉树,而另一些方法可以重新计算高度或平衡树。

成功验证树是否平衡, 但是当我尝试通过反例检查验证并更改代码以生成不平衡的树时,Dafny在IDE中未显示任何错误。 达夫妮有可能会忽略某些谓词吗?

0 个答案:

没有答案
相关问题