FOL - 一阶逻辑
本页目录
\mathscr{L}
语法(Syntax)
概念
Domain (论域):一个非空的对象(Objects)的集合。
Constant(常量):论域中确定的(Concrete)对象。
Variable(变量):确定的值的“占位符(Place Holders)”。
Predicate (谓词):论域单个对象的一种属性,或多个对象之间的一种关系。
- 例如:用
S(\text{andy})表示 Andy 是一个学生,这是一个一元谓词(Unary Predicate)。两个参数的谓词就是二元谓词(Binary Predicate),以此类推。
Quantifiers(量词):描述有多少对象使命题成立。 - The universal quantifier
\forall(全称量词)。”for all”, “every” - The existential quantifier
\exists(存在量词)。”there exists”, “for some”
Universal Proposition(全称命题):\forall x P(x)。
Existential Proposition(存在命题):\exists xP(x)。
这里P是某种属性。
Function(函数):n元到一元的映射,记作f^{(n)}。 - 例如:
m(y)表示y的母亲,是一个一元函数 (Unary Function)。
字母表
Non-logical symbols(非逻辑符号):
- Constant symbols(个体常元):
c_{1},c_{2},c_{3},\dots - Predicates(谓词/关系符号):
P,Q,P_{1},P_{2},\dots,Q_{1}^1,Q_{1}^2(这里上标表示参数个数) - Function Symbols(函词):
f,g,h,f_{1},f_{2}^2,..,g_{1}^2,\dots(这里上标表示参数个数)
Logical symbols(逻辑符号): - Quantifiers(量词):
\forall, \exists - Variables(个体变元):
x,y,z,x_{1},x_{2},\dots,y_{1},y_{2},\dots - Connectives(连词):
\neg,\land,\lor, \to,\leftrightarrow - Punctuation(标点):
(和)和, - Equality(等号):
=(一种特别的二元关系)
项
Terms(项)就是 Object。严格定义为:
- Constant symbols 和 Variables 都是 Term。
- 若
f^n是一个n元函数且t_{1},t_{2},\dots,t_{n}为 Term,则f^n(t_{1},t_{2},\dots,t_{n})也是 Term。 - 只有上述递归定义的结果才是 Term。
\text{Term}(\mathscr{L})
原子公式
Atomic Formula/Atom(原子公式)为施加在项上的 Predicate。严格定义为,它为以下两种形式之一:
P(t_{1},\dots,t_{n}),其中P是一个n元 Predicate,而t_{i}\in\text{Term}(\mathscr{L}).=(t_{1},t_{2})(有时写作t_{1}=t_{2}),t_{1},t_{2}\in\text{Term}(\mathscr{L})。
\text{Atom}(\mathscr{L})
公式
Formula(公式)的定义为, \alpha \in Form(\mathscr L) 当且仅当它能由以下规则(有限次使用)生成:
Atom(\mathscr L)\subseteq Form(\mathscr L)。- 若
\alpha\in Form(\mathscr L),则(\neg\alpha)\in Form(\mathscr L)。 - 若
\alpha,\beta\in Form(\mathscr L),则(\alpha * \beta)\in Form(\mathscr L),其中*\in\{\land,\lor,\to,\leftrightarrow\}。 - 若
\alpha\in Form(\mathscr L)且x是变量,则(\forall x\,\alpha)\in Form(\mathscr L)且(\exists x\,\alpha)\in Form(\mathscr L)。
惯例:
- 可像命题逻辑中一样省略部分括号。
- 量词周围的括号可省略。
优先级(Precedence):
- 有括号优先
\forall x,\exists x的优先级和\neg相同,高于所有二元连接符- 在
\neg,\exists,\forall之间是右结合的
解析树(Parse Tree)例如 \forall x((P(x)\to Q(x))\land S(x,y))

形式化表达(Formalization)
Every student knows math.
\forall x(S(x)\to K(x,\text{Math})
Some student knows math.
\exists x(S(x)\land K(x,\text{Math}))
Every student is younger than some instructor.
\forall x(S(x)\to(\exists y(I(y)\land Y(x,y))))
Every Son of my father is my brother.
用 Predicate: \forall x\forall y(F(x,m)\land S(y,x)\to B(y,m))
用 Function:\forall x(S(x,f(m))\to B(x,m))
语义(Semantics)
Scope(作用域):在公式 \forall x\alpha 或 \exists x\alpha 中,x 是量化变量(Quantified Variable),它的 Scope 就是 \alpha。例如,\forall xP(x)\land Q(x) 中,x 的 Scope 是 P(x)。
定义
- Free Variables(自由变元):不在量化变量
x的 scope 中的x就是自由变元。 - Bounded Variables(约束变元):其他情况。
另一种定义方式:解析树中,如果一个叶子节点x到根节点的路径中不存在\forall x或\exists x,则它是一个自由变元。否则,为约束变元。

定义:没有自由变量的公式叫做 Closed Formula / Sentence(闭公式/句子)。因为没有自由变量才能决定真或假。
对闭公式赋予意义需要对其中非逻辑符号(常量,谓词和函数)做阐释(Interpretation)(对应到定定义域上)。例如:
对变量也赋予一个值,就是环境(Environment)。例如:E(x)=1就是说在环境E中,x=1。
定义:在\mathcal{I}和E中,项t的值记为t^{(\mathcal{I},E)}。若它是常量,则为c^{\mathcal{I}}。若它为变量,则为x^E。若为函数,则为迭代的产物。
有了阐释和环境,原子公式(Atom Formula)的值也就可以确定了:P(t_{1},\dots,t_{n})^{(\mathcal{I},E)}。进一步,可迭代定义出任何 wff 的值。
为了形式化定义含有量词的公式的值,我们定义一个新的记号E\left[ x\mapsto d \right]:
E\left[ x \mapsto d \right](y):=\begin{cases} d & \text{if } y=x \\ E(y) & \text{if } y\neq x \end{cases}
那么定义

逻辑等价:
对偶性 (Duality):
\neg \forall xP(x)\equiv \exists x\neg P(x)
\neg \exists xP(x)\equiv \forall x\neg P(x)
因而 \exists \sim \neg \forall \neg, \forall\sim \neg \exists \neg。
且命题逻辑中的逻辑等价在一阶逻辑中仍然成立。
量词的可交换性(Commutativity):
\forall x\forall yP(x,y)\equiv \forall y\forall xP(x,y)
\exists x\exists yP(x,y)\equiv \exists y\exists xP(x,y)
这里需要是相同种类的量词。
可交换性(Distributivity):
\forall x(P(x)\land Q(x))\equiv (\forall xP(x))\land(\forall xQ(x))
\exists x(P(x)\lor Q(x))\equiv(\exists xP(x))\lor(\exists xQ(x))
若定义域有穷,则可以通过枚举把量词拆成合取或析取式。
可满足性(Satisfiability): 与命题逻辑类似。一个阐释 \mathcal{I} 和环境 E 满足 \alpha,记作 \mathcal{I}\vDash_{E}\alpha,当且仅当 \alpha^{(\mathcal{I},E)}=1。否则为不满足,记作 \mathcal{I}\not\vDash_{E}\alpha。
若对任何 E 都有 \mathcal{I}\vDash_{E}\alpha,则称 \mathcal{I} 满足 \alpha,记作 \mathcal{I}\vDash\alpha。
拓展到一组公式:\mathcal{I}\vDash_{E}\Sigma。这里记号 \vDash 代表满足。
语义蕴含(Semantic Entailment)的定义:对于 FOL 中的公式组 \Sigma 和公式 \alpha,有 \Sigma\vDash\alpha 当且仅当:
- 对任意诠释
\mathcal{I}和环境E,若\mathcal{I}\vDash_{E}\Sigma则\mathcal{I}\vDash_{E}\alpha。
这里记号\vDash表示蕴含。
在 FOL 中,一个公式 \alpha 是:
- 永真的(Valid):
\mathcal{I}_{E}\vDash\alpha对任意\mathcal{I},E。类似与 PL 中的永真式(Tautology) - 可满足的(Satisfiable):存在一组诠释和环境满足
\alpha。 - 不可满足的(Unsatisfiable):不存在诠释和环境满足
\alpha。
\emptyset\vDash\alpha表示\alpha是正当的/永真式。
例如:
\exists y\forall x R(x,y)\to \forall x\exists yR(x,y)
\exists x(P(x)\to \forall xP(x))
FOL 的不可判定性(Undecidability):给定一个公式,不可能用某个程序判断它是否是永真式。(可以表示为停机问题)
而 PL 可以决定,因为可以用真值表判定。
ND 证明
替换(Substitution):
\alpha[t/x]
表示将公式 \alpha 中的自由变元 x 替换为 t。
为了避免语义的改变(Capture),需要替换为新的变量(Fresh Variable),也就是在 \alpha 中没有出现过的变量。
推理规则:
\forall e:
\dfrac{\forall x\,\alpha}{\alpha[t/x]}\exists i:
\dfrac{\alpha[t/x]}{\exists x\,\alpha}\forall i:
\dfrac{ \boxed{ \begin{aligned} y\text{ fresh} \\ \vdots \\ \alpha [y/x] \end{aligned}} }{\forall x \, \alpha}
这里 fresh variable 不可以出现在 subproof 之外。最好不要出现在任何的\alpha和\Sigma中。
例如:
\exists e:
\dfrac{(\exists x\,\alpha)_\,\boxed{\begin{align} \alpha[u / x], u\text{ fresh} \\ \vdots \\ \beta \end{align}} }{\beta}
ND for FOL 是完备的(Complete)和可靠的(Sound)。
任何 FOL 中的公式可以写成前束范式(Prenex Normal Form):
Q_{1}x_{1}Q_{2}x_{2}\dots Q_{k}x_{k}B
其中 Q_{i} 为量词,B 为无量词的公式。
其他逻辑系统:
- Higher-Order Logic(HOL, 可描述 Property of a property / function 等)
- Temporal Logic(描述时间线上的逻辑)
- Modal Logic(描述必要性/可能性)
- Hoare Logic(可证明计算机程序的正确性)