We looked at three different object-oriented program verifiers: Gobra, KeY, and Dafny. We show that all three can be made to prove false by using a simple trick with ghost variable declaration and non-terminating code. This shows that verifiers for these languages can produce unsound results without much difficulty and that this is possibly common throughout all OO verifiers.
翻译:我们查看了三个不同的目标导向程序验证器:戈布拉、凯伊和达夫尼。我们显示,通过使用幽灵变量声明和非终止代码的简单伎俩,这三者都可以证明是虚假的。 这表明,这些语言的验证器可以不费吹灰之力地产生错误的结果,而且这在所有业务厅验证器中都是常见的。