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

Logic 伪代码到逻辑[CS中的谓词逻辑],logic,computer-science,pseudocode,predicate,Logic,Computer Science,Pseudocode,Predicate,我们试图用伪代码将一个非常简单的程序翻译成谓词逻辑。 该程序简单明了,不包含循环。(顺序) 它只包含变量赋值和if-else语句 不幸的是,我们没有提供任何好的信息来解决这个问题。如果有人有一些 简单5行程序代码段的“转换”示例或 指向免费信息源的链接,这些链接从表面上描述了主题。(我们只做谓语和介词逻辑,不想深入逻辑空间。) 问候 更新: 经过足够的研究,我找到了解决方案,并可以分享它的例子。 诀窍是将程序状态视为所有任意变量的集合,包括一个程序计数器,它代表要执行的当前指令 x = i

我们试图用伪代码将一个非常简单的程序翻译成谓词逻辑。 该程序简单明了,不包含循环。(顺序)

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

不幸的是,我们没有提供任何好的信息来解决这个问题。如果有人有一些

  • 简单5行程序代码段的“转换”示例或
  • 指向免费信息源的链接,这些链接从表面上描述了主题。(我们只做谓语和介词逻辑,不想深入逻辑空间。)
问候


更新: 经过足够的研究,我找到了解决方案,并可以分享它的例子。 诀窍是将程序状态视为所有任意变量的集合,包括一个程序计数器,它代表要执行的当前指令

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)。

您能否提供一个示例,说明您所期望的输入(伪代码)和输出(谓词逻辑)的种类?很抱歉,我不允许指定更多,因为它与大学有关。这就是为什么我只搜索主题或一般示例的顶层信息。但是你能编一个示例吗?输入是什么样子的?输出是什么样子的?没有这些,我们真的无法提供任何建议。我现在能够给出一个例子和解决方案。我猜我的解释不太清楚。无论如何谢谢你!