证明基本算术性质

时间:2019-05-27 20:00:07

标签: formal-verification tla+

我正在尝试使用TLA +定理证明工具来证明算法的安全性。但是我发现TLAPS无法说明非常“简单”的数学事实。

我的第一个问题是:

EXTENDS Naturals
CONSTANTS x,y
ASSUME x \in Nat /\ y \in Nat
LEMMA x=y+1 => y<x
  OBVIOUS

TLAPS不能单独使用任何后端证明程序来做到这一点。我还尝试将特定的后端证明与其他策略结合使用:

LEMMA x=y+1 => y<x
  BY IsaM("blast")

但也失败了。同样,也无法检查其他类型的简单事实,例如:

LEMMA x<y => x<y+0

我过去曾经使用过一些后端定理证明,例如Z Solver或Isabelle,从我的记忆中他们非常强大。我想我在这里遗漏了一些东西……或者我不了解TLAPS证明组织者,或者我仍然需要使用公理来加载其他模块?。

1 个答案:

答案 0 :(得分:1)

看来您在TLAPM中遇到了一个错误-至少在我机器上的开发版本中。原因是SMT转换没有采纳第二个假设。没有域限制,任何断言都不能证明。作为一个热修复,我在本地引理中添加了域限制。我现在可以证明:

LEMMA ASSUME x \in Nat, y \in Nat
      PROVE x=y+1 => y < x BY SMT

目前解决该问题的另一种方法是,在需要时调用命名的假设:

ASSUME DOM == x \in Nat /\ y \in Nat
LEMMA x=y+1 => y < x BY SMT, DOM

应该通过。在这两种情况下,您都必须在规范的开头添加EXTENDS TLAPS才能启用SMT关键字。

我还将向维护者报告该错误。

更新:似乎TLAPM(出于性能原因而拒绝使用afaik)通常忽略了全局假设。带有命名假设的版本是首选方式。

相关问题