【面向计算机的数理逻辑/软件理论基础笔记】一阶谓词逻辑系统的语义解释、赋值、可满足性

262 阅读6分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

解释

  • 定义:在命题逻辑中,我们需要对将命题中的复杂的语言符号转换成我们可以进行计算的逻辑公式,这个过程我们叫做解释,用符号II表示解释的内容。
  • 在一阶语言L\mathcal{L}中,L\mathcal{L}的解释II的组成如下:
    • 论域:是一个非空的集合,用符合DID_I表示。
    • 个体常元:解释II中所用到的个体常元都包含在论域DID_I中,就是解释II中所用到的这些个体常元aˉi\bar{a}_i在论域DID_I中都能找到相对应的aia_i
    • 谓词符:L\mathcal{L}中的谓词符号AinA_i^n对应与DID_I上的nn元关系AˉinDIn\bar{A}_i^n \subseteq D_I^n
    • 函数符:L\mathcal{L}中的函数符号finf_i^n对应与DID_Inn元运算符fˉin:DInDI\bar{f}_i^n:D_I^n \to D_I
  • 例题一:
    • 对于整数语言LZ\mathcal{L}_Z的解释II有:
      • 论域:DI={0,±1,±2,±3,}D_I=\{0,\pm1,\pm2,\pm3, · · · \}
      • 个体常元:aˉ=0\bar{a}=0
      • 谓词符:A12ˉ:=\bar{A_1^2}:===”,A22ˉ:=\bar{A_2^2}:=<<
      • 函数符:f11ˉ(x)=x+1\bar{f_1^1}(x)=x+1f12ˉ(x,y)=x+y\bar{f_1^2}(x,y)=x+y
    • 问题:说明公式(x1)(x2)(x3)A12(f21(x1,x3),x2)(\forall x_1)(\forall x_2)(\exist x_3)A_1^2(f_2^1 (x_1, x_3), x_2)的含义
    • 答案:在整数集中,对于任何整数xxyy总有整数zz使得x+z=yx + z = y

赋值(变量代换)

  • 定义:设L\mathcal{L}是一阶语言,IIL\mathcal{L}的一个解释,L\mathcal{L}II中的赋值vv是从L\mathcal{L}的项集T\mathcal{T}DID_I的一个映射,公式表示为: v:TDIv :\mathcal{T} \to D_I
    • 这个映射公式就是赋值的意思,其中
      • v(ai)=aiˉv(a_i) = \bar{a_i}
      • v(fin(t1,t2,...,tn)=finˉ(v(t1),v(t2),...,v(tn))v(f_i^n (t_1, t_2,..., t_n) = \bar{f_i^n} (v(t_1), v(t_2),..., v(t_n))
  • 例题二
    • 自然数语言LN\mathcal{L}_N
      • N={0,1,2,...}N=\{ 0,1,2,... \}
      • 赋值v:TDIv :\mathcal{T} \to D_I满足
        • v(a)=0v(a)=0
        • v(f11(x))=f11ˉ(v(x))=v(x)+1v(f_1^1(x))=\bar{f_1^1}(v(x))=v(x)+1
        • v(f12(x,y))=f12ˉ(v(x),v(y))=v(x)+v(y)v(f_1^2(x,y))=\bar{f_1^2}(v(x),v(y))=v(x)+v(y)
        • v(f22(x,y))=f22ˉ(v(x),v(y))=v(x)×v(y)v(f_2^2(x,y))=\bar{f_2^2}(v(x),v(y))=v(x)\times v(y)
    • 问题:若v(x1)=1,v(x2)=2v(x_1)=1,v(x_2)=2,那么v(f12(x1,x2))v(f_1^2(x_1,x_2))等于多少
    • 答案:v(f12(x1,x2))=f12ˉ(v(x1),v(x2))=v(x1)+v(x2)=1+2=3v(f_1^2(x_1,x_2))=\bar{f_1^2}(v(x_1),v(x_2))=v(x_1)+v(x_2)=1+2=3
  • 等价赋值:赋值vvii-等价赋值vv′也是一个赋值,且满足对于任意的jj,当ji,v(xj)=v(xj)j \neq i, v′(x_j ) = v(x_j ),其中xi,xjx_i,x_j都是一阶语言L\mathcal{L}的变量
    • 应用:

      • v(xi)Av \models (\forall x_i)A,则对于vv的任意ii-等价赋值ww都有wAw \models A

      • v(xi)Av \models (\exists x_i)A,则存在vvii-等价赋值wwwAw \models A

      • v(xi)Av \models (\forall x_i)A,则对于vv的任意ii-等价赋值vvvAv \models A

      或者写作:

      • v(xi)A(xi)v \models (\forall x_i)A(x_i),则对于vv的任意ii-等价赋值ww都有wA(xi)w \models A(x_i)
      • v(xi)A(xi)v \models (\exists x_i)A(x_i),则存在vvii-等价赋值wwwA(xi)w \models A(x_i)
      • v(xi)A(xi)v \models (\forall x_i)A(x_i),则对于vv的任意ii-等价赋值vvvA(xi)v \models A(x_i)

    vv'是与vvii-等价赋值,反映了 “差的不多”的意思,即它们的赋值最多只能在ii处不同(也就是除在jij \neq i的时候都相同),其他地方的赋值必须完全一样(就是v(xj)=v(xj)v′(x_j ) = v(x_j )),如果ii处的赋值相同当然也可以。

  • vv是一阶语言L\mathcal{L}的一个赋值,AAL\mathcal{L}中的一个公式,vAv \models Avv满足AA)归纳定义为
    • vAv \models A:若AA是原子公式Ain(t1,t2,...,tn)A_i^n (t_1, t_2,..., t_n),当且仅当(v(t1),v(t2),...,v(tn))Ainˉ(v(t_1), v(t_2),..., v(t_n)) \in \bar{A_i^n}(即Ainˉ(v(t1),v(t2),...,v(tn))\bar{A_i^n}(v(t_1), v(t_2),..., v(t_n))结果为真)时,vAv \models A成立
    • v¬Av \models \neg A:当且仅当vAv \nvDash A(即vv不满足AA)时,v¬Av \models \neg A成立
    • vABv \models A \to B:当且仅当若vAv \models AvBv \models B成立时,vABv \models A \to B成立
    • v(xi)Av \models (\forall x_i)A:当且仅当对于每一个与vvii-等价赋值vv′都有vAv′ \models A
  • 赋值的满足性:由归纳定义可知,任一公式AA以及任一赋值vv, vv满足AAvv满足¬A\neg A二者有一个且只有一个成立,所以我们通常约定,若vv满足AA,则v(A)=1v(A) = 1,若vv不满足AA,则v(A)=0v(A) = 0
    • 因此,则有
      • v(¬A)=¬v(A)v(\neg A)=\neg v(A)
      • v(AB)=v(A)v(B)v(A \to B) =v(A)\to v(B)
      • v((xi)A)={v(A)vv((\forall x_i)A)=\wedge \{v'(A)|v'vvii-等价}\}
    • 对于其他逻辑算子,容易得到
      • vABv \models A \vee B 当且仅当vAv \models AvBv \models B成立
      • vABv \models A \wedge B 当且仅当vAv \models AvBv \models B都成立
      • v(xi)Av \models (\exists x_i)A 当且仅当存在一个与vvii-等价赋值vv′使得vAv′ \models A
  • 例题三
    • 自然数语言LN\mathcal{L}_N中,aaLN\mathcal{L}_N的个体常元
    • 设公式A=A12(f12(x1,x2),f22(x1,x2))A = A_1^2(f_1^2 (x_1, x_2), f_2^2 (x_1, x_2))
    • 解释II为:
      • v(f12(x,y))=f12ˉ(v(x),v(y))=v(x)+v(y)v(f_1^2(x,y))=\bar{f_1^2}(v(x),v(y))=v(x)+v(y)
      • v(f22(x,y))=f22ˉ(v(x),v(y))=v(x)×v(y)v(f_2^2(x,y))=\bar{f_2^2}(v(x),v(y))=v(x)\times v(y)
      • A12ˉ:=\bar{A_1^2}:===”。
    • 问题:
      • 问题1:若定义赋值vvv(a)=0,v(xi)=iv(a) = 0, v(x_i) = i,则vv是否满足AA
      • 问题2:若定义赋值vv'v(a)=0,v(xi)=iv'(a) = 0, v'(x_i) = i,则vv'是否满足AA
    • 答案:
      • 问题1答案: f12(x1,x2)=v(x1)+v(x2)=1+2=3f_1^2(x_1,x_2)=v(x_1)+v(x_2)=1+2=3 f22(x1,x2)=v(x1)×v(x2)=1×2=2f_2^2(x_1,x_2)=v(x_1)\times v(x_2)=1\times 2=2 A=A12(f12(x1,x2),f22(x1,x2))=A12(3,2)=(3=2)=0A = A_1^2(f_1^2(x_1,x_2),f_2^2(x_1,x_2))=A_1^2(3,2)=(3=2)=0 因为AA的最终结果为00,因此vAv \nvDash A

      这里(3=2)表示判断3是否等于2,因为不相等,所以结果为0

      • 问题2答案: f12(x1,x2)=v(x1)+v(x2)=2+2=4f_1^2(x_1,x_2)=v(x_1)+v(x_2)=2+2=4 f22(x1,x2)=v(x1)×v(x2)=2×2=4f_2^2(x_1,x_2)=v(x_1)\times v(x_2)=2\times 2=4 A=A12(f12(x1,x2),f22(x1,x2))=A12(3,2)=(4=4)=1A = A_1^2(f_1^2(x_1,x_2),f_2^2(x_1,x_2))=A_1^2(3,2)=(4=4)=1 因为AA的最终结果为11,因此vAv \models A
  • 例题四
    • 设公式B=(x1)(x1x2)B = (\forall x_1)(x_1 \geq x_2)
    • 问题:
      • 问题1:定义赋值v(x1)=3v(x_1) = 3v(x2)=0v(x_2) = 0,则vv是否满足AA
      • 问题2:定义赋值v(x1)=3v′(x_1) = 3v(x2)=3v′(x_2) = 3,则vv是否满足AA
    • 答案:
      • 因为已经对x1x_1x2x_2进行赋值,所以我们直接将他们的值拿去比较即可
      • 问题1答案:303 \geq 0结果是正确的,此时B=1B=1,因此因此vBv \models B
      • 问题2答案:333 \geq 3结果是错误的,此时B=0B=0,因此因此vBv \nvDash B
  • 对于给定的一个公式,在同一解释下,可能有两个不同的赋值分别满足或不满足该公式;
  • 在不同解释下, 可能一个解释下的所有赋值都满足该公式,而另一解释下有赋值不满足该公式。
  • 项替换定理
    • 定义:设L\mathcal{L}是一阶语言,IIL\mathcal{L}的一个解释,A(xi)A(x_i)是属于F(L)\mathcal{F(L)}的一个公式,xix_iA(xi)A(x_i)的自由变元。设项tt关于xix_i自由,vvL\mathcal{L}II中的赋值,vv′是与vvii-等价赋值,且v(xi)=v(t)v′(x_i) = v(t),则 vA(t)当且仅当vA(xi)v \models A(t) 当且仅当v′ \models A(x_i)
    • 推论: v(xi)A(xi)当且仅当有个体常元c使得vA(c)v \models (\exists x_i)A(x_i) 当且仅当有个体常元c使得v \models A(c)
  • 自由变元重要性定理
    • 定义:设L\mathcal{L}是一阶语言,IIL\mathcal{L}的一个解释,AF(L)A \in \mathcal{F(L)}v,wv, wII中的两个赋值. 若对于AA中的每个自由变元xix_i都有v(xi)=w(xi)v(x_i) = w(x_i),则 wA当且仅当vAw \models A当且仅当v \models A

公式的可满足性

  • 定义:设L\mathcal{L}是一阶语言,IIL\mathcal{L}的一个解释,AF(L)A \in \mathcal{F(L)}。若对II中的每个赋值vv,都有vAv \models A,则称AA是可满足的,IIAA的一个模型, 记作IAI \models A(称AA关于II是真公式)。没有模型的公式称为不可满足的。
    • 解释II满足公式AA是一个整体性概念,与单个赋值vv满足AA完全不同
    • 对于任一个解释II而言,II不可能同时是AA¬A\neg A的模型,即A¬AA \wedge \neg A没有模型
  • 定理:
    • IABI \models A \to BIAI \models A,则IBI \models B
    • IABI \models A \to BIBCI \models B \to C,则IACI \models A \to C
    • IAB当且仅当IAIBI \models A \wedge B 当且仅当 I \models A 且 I \models B
    • IAIB可以推出IABI\models A 或 I \models B 可以推出 I \models A \vee B
    • IAI \models AI(xi)AI \models (\exists x_i)A
    • IA当且仅当I(xi)AI \models A 当且仅当 I \models (\forall x_i)A
    • IA当且仅当I(y1)(y2)(yn)AI \models A 当且仅当 I \models (\forall y_1)(\forall y_2)· · ·(\forall y_n)A

巩固习题

(习题摘自《软件理论基础》32页,第二章第 2.2小节习题)

  • 习题一:
    • L\mathcal{L}是一阶语言,它有11个个体常元a1a111个函数符f12f_1^211个谓词符A12A_1^2,设公式AA(x1)(A12(x1,a1)A12(f12(x1,x1),a1))(\forall x_1)(A_1^2(x_1,a_1)\to A_1^2(f_1^2(x_1,x_1),a_1)) \qquad(a)设L\mathcal{L}的解释II的解释域DID_I是整数集合Z,a1ˉ=0,f12ˉ(x,y)=x×y,A12ˉ(x,y)Z,\bar{a_1} = 0, \bar{f_1^2}(x, y) = x \times y,\bar{A_1^2}(x, y)x<yx < y,问公式AA在此解释下的意义是什么?是真是假? \qquad(b)把解释II稍作改变,记为II',设f12ˉ(x,y)=x+y\bar{f_1^2}(x, y) = x + y,其余不变,问公式AA在此解释II'下的意义是什么?是真是假? \qquad(c)把解释II稍作改变,记为II'',设A12ˉ(x,y)\bar{A_1^2}(x, y)表示x=yx = y,其余不变,问公式AA在此解释II''下的意义是什么?是真是假?

    • 答案: \qquad(a)将解释带入后,公式变为:(x1)((x1<0)(x1×x1<0))(\forall x_1)((x_1 < 0)\to (x_1 \times x_1< 0)),公式意义为:对于任意的x1x_1都有当x1x_1小于零时,x1×x1x_1 \times x_1也小于零。当x1x_1小于零时,x1x_1为负数,两个负数相乘,结果为正数,因此x1×x1<0x_1 \times x_1< 0是错误的,所以公式AA在此解释下为假。 \qquad(b)将解释带入后,公式变为:(x1)((x1<0)(x1+x1<0))(\forall x_1)((x_1 < 0)\to (x_1 + x_1< 0)),公式意义为:对于任意的x1x_1都有当x1x_1小于零时,x1+x1x_1 + x_1也小于零。当x1x_1小于零时,x1x_1为负数,两个负数相加,结果依然为负数,因此x1+x1<0x_1 + x_1< 0是正确的,所以公式AA在此解释下为真。 \qquad(c)将解释带入后,公式变为:(x1)((x1=0)(x1×x1=0))(\forall x_1)((x_1 = 0)\to (x_1 \times x_1= 0)),公式意义为:对于任意的x1x_1都有当x1x_1等于零时,x1×x1x_1 \times x_1也等于零。当x1x_1等于零时,x1x_1为零,两个零相乘,结果仍然为零,因此x1×x1=0x_1 \times x_1= 0是正确的,所以公式AA在此解释下为真。

  • 习题二:
    • 设一阶语言L\mathcal{L}中的公式AA(x1)(A11(x1)A11(f11(x1)))(\forall x_1)(A_1^1(x_1)\to A_1^1(f_1^1(x_1))) 公式BB(x1)(A12(x1,x2)A12(x1,x2))(\forall x_1)(A_1^2(x_1,x_2)\to A_1^2(x_1,x_2)) 试分别作出不同的解释,使AABB有时为真,有时为假。
    • 答案:
      • 对于公式AA
        • L\mathcal{L}的解释II的解释域DID_I是整数集合Z,f11ˉ(x)=x,A11ˉ(x)Z, \bar{f_1^1}(x) = x, \bar{A_1^1}(x)x<0x < 0,则此时公式AA在解释II下变为(x1)((x1<0)(x1<0))(\forall x_1)((x_1 < 0) \to (x_1 < 0)),可以看出公式AA为真;
        • L\mathcal{L}的解释II的解释域DID_I是整数集合Z,f12ˉ(x)=x,A12ˉ(x)Z, \bar{f_1^2}(x) = -x, \bar{A_1^2}(x)x<0x < 0,则此时公式AA在解释II下变为(x1)((x1<0)(x1<0))(\forall x_1)((x_1 < 0) \to (-x_1 < 0)),可以看出公式AA为假;
      • 对于公式BB
        • L\mathcal{L}的解释II的解释域DID_I是整数集合Z,A12ˉ(x1,x2)Z, \bar{A_1^2}(x_1,x_2)x1<x2x_1 < x_2,则此时公式AA在解释II下变为(x1)((x1<x2)(x2<x1))(\forall x_1)((x_1 < x_2) \to (x_2 < x_1)),可以看出公式BB为假;
        • L\mathcal{L}的解释II的解释域DID_I是整数集合Z,A12ˉ(x1,x2)Z, \bar{A_1^2}(x_1,x_2)x1=x2x_1 = x_2,则此时公式AA在解释II下变为(x1)((x1=x2)(x2=x1))(\forall x_1)((x_1 = x_2) \to (x_2 = x_1)),可以看出公式BB为真;
  • 习题三:
    • 证明:在任何一阶语言L\mathcal{L}中,公式(xi)A(xi)A(xi)(\forall x_i)A(x_i) \to A(x_i)L\mathcal{L}的任何解释下都真的。
    • 答案:
      • 证明:设IIL\mathcal{L}的任一解释,vvL\mathcal{L}II下的任一赋值,再设v(xi)Av \models (\forall x_i)A,则对于vv任一ii-等价赋值ww都有wAw \models A,而vv是自身的ii-等价于,因此vAv \models A。 这表明v(xi)AAv \models (\forall x_i)A \to A。故(xi)AA(\forall x_i)A \to A是逻辑有效的。
      • 解释:假设有一个关于vvii-赋值等价ww,那么因为v(xi)Av \models (\forall x_i)A,所以这个ii-赋值等价wAw \models A,因此,我们假设这个ww就是vv本身,从而vAv \models A(vvii-等价赋值可以是自身),所以,我们由v(xi)Av \models (\forall x_i)A得到了vAv \models A。故(xi)AA(\forall x_i)A \to A是逻辑有效的。