我们尝试将伪代码中的一个非常简单的程序转换为谓词逻辑。 该程序很简单,不包含循环。 (顺序)
它只包含变量赋值和if-else语句。
很遗憾,我们没有提供任何有用的信息来解决问题。如果有人有一些
会很棒亲切的问候
更新: 经过充分的研究,我找到了解决方案并可以分享它。例子。 诀窍是将程序状态视为我们所有任意变量inc的集合。程序计数器,代表当前要执行的指令。
x = input;
x = x*2;
if (y>0)
x = x∗y ;
else
x = y;
我们将形成谓词P(x,i,y,pc)。 从这里我们可以建立承诺,例如:
∀i∀x∀y(P (x, i, y, 1) => P (i, i, y, 2))
∀i∀x∀y(P (x, i, y, 2) => P (x ∗ 2, i, y, 3))
∀i∀x∀y(P (x, i, y, 3) ∧ y > 0 =⇒ P (x ∗ y, i, y, 4))
∀i∀x∀y(P (x, i, y, 3) ∧ ¬y > 0 =⇒ P (y, i, y, 4))
通过递增程序计数器,我们确保承诺遵循顺序。现在我们能够在给出输入的前提时定义一个证明,例如P(X,4,7,1)。