伪代码到逻辑[CS中的谓词逻辑]

时间:2017-04-26 15:23:54

标签: logic computer-science pseudocode predicate

我们尝试将伪代码中的一个非常简单的程序转换为谓词逻辑。 该程序很简单,不包含循环。 (顺序)

它只包含变量赋值和if-else语句。

很遗憾,我们没有提供任何有用的信息来解决问题。如果有人有一些

会很棒
  • 简单5liner代码段或
  • 的“转换”示例
  • 链接到免费信息的来源,这些信息描述了表面级别的主题。 (我们只做谓词和介词逻辑,不想在逻辑空间中深入探讨。)

亲切的问候

更新: 经过充分的研究,我找到了解决方案并可以分享它。例子。 诀窍是将程序状态视为我们所有任意变量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)。

0 个答案:

没有答案