谓词逻辑
命题逻辑在是具有局限性的。
命题逻辑在处理语句成分中有诸如“否”、“并”、“或”和“如果···那么···”时, 取得了令人满意的结果, 但人类语言比这丰富得多, 我们如何处理如“存在···”, “所有···”,“在···中”,和“只有···”呢?
命题逻辑有其明显的局限性, 我们需要更精确微妙的 谓词逻辑(predicate logic) 来表达判断语句, 谓词逻辑也称为一阶逻辑(first-order logic)。
补充:
- 一阶谓词逻辑:谓词表示性质;
- 二阶谓词逻辑:谓词表示关系;
项
语言的项由变量、常值符号以及作用其上的函数构成。函数可以嵌套,如m(m(x))m(m(x))m(m(x))。
(此部分参考 《软件形式化基础》教材)
语法分析树
谓词逻辑公式可以用语法分析树表示。
- ¬\neg¬、 ∀y\forall y∀y和∃y\exists y∃y绑定优先级最高;
- 其次为 ∧\land∧ 和 ∨\lor∨;
- 然后是→\to→,它是右结合的。
只要不致引起歧义,我们经常省去关于量词的括号。
谓词逻辑公式可以用语法分析树表示。例如,下图的分析树表示公式∀((P(x)→Q(x))∧S(x,y))\forall((P(x)\to Q(x))\land S(x, y))∀((P(x)→Q(x))∧S(x,y))。

自由变元和约束变元
变量和量词的引入使我们可以表达“所有”和“某些”的含义。
直观地说,为证明∀xQ(x)\forall x Q(x)∀xQ(x) 为真,相当于将x用任何可能的取值来代替,检测Q对每一个这样的代入均成立。
公式为 “真”包含两层重要的、但不同的意义。
首先,如果对涉及的所有谓词和函数符号赋以具体含义,则我们有一个模型,并可以检测在这个特定模型中公式是否为真。
例如,若一个公式 是一个硬件线路要求的行为编码,那么,我们要知道是否它对线路模型是真的。其次,有时人们需要保证某个公式对所有模型都为真。
考虑关于常量c的公式P(c)∧∀y(P(y)→Q(y))→Q(c)P(c)\land \forall y(P(y)\to
Q(y))\to Q(c)P(c)∧∀y(P(y)→Q(y))→Q(c)。显然,无论考虑什么样的模型,这个公式都应该是真的。公式为真的第二层含义是2.3节讨论的内容。
遗憾的是,如果要在一个特定模型中形式地定义公式为真,则更为复杂。在理想情况下,我们寻求一个定义,可以用来编写验证公式在特定模型中是否成立的计算机程序。首先,我们需要理解以不同方式出现的变量。考虑前面已画出语法分析树的公式:∀x((P(x)→Q(x))∧S(x,y))\forall x((P(x) \to Q(x)) \land S(x, y))∀x((P(x)→Q(x))∧S(x,y))
可以发现变量出现在两种不同的位置:
- 第一,在像∀x\forall x∀x和∃z\exist z∃z的结点中,总出现在量词∀\forall∀和∃\exist∃后面;这样的结点总是只有一棵子树,它包含了对应量词的作用范围。
- 变量出现的另一种方式是包含变量的叶结点。若变量是叶结点,则它们代表仍旧需要具体化的值。这主要有两种形式:
- 在上图所示的例子中,有三个叶结点xxx。如果从叶结点xxx的任意一个出发向上遍历,都会遇到量词∀x\forall x∀x。这意味着xxx的出现实际上受到了∀x\forall x∀x的约束,因此,它们表示或代表了xxx的任意可能值。
- 在向上遍历的过程中,叶结点yyy所遇到的唯一量词是∀x\forall x∀x,但是xxx和yyy没有任何关系;xxx和yyy是两个不同的占位符。所以在这个公式里,yyy是自由的。
这意味着它的值需要一些附加信息才能确定。例如,内存位置上的内容。

[1]面向计算机科学的数理逻辑——系统建模与推理

本文探讨了命题逻辑的局限性,引入了谓词逻辑以更精确地表达判断语句。谓词逻辑中的项由变量、常值符号和函数构成,而自由变元和约束变元的概念帮助解释了量词"所有"和"某些"的含义。通过语法分析树,可以直观理解公式结构,其中自由变元需额外信息确定,而约束变元受到量词约束。

6346

被折叠的 条评论
为什么被折叠?



