本文已参与「新人创作礼」活动,一起开启掘金创作之路。
解释
- 定义:在命题逻辑中,我们需要对将命题中的复杂的语言符号转换成我们可以进行计算的逻辑公式,这个过程我们叫做解释,用符号I表示解释的内容。
- 在一阶语言L中,L的解释I的组成如下:
- 论域:是一个非空的集合,用符合DI表示。
- 个体常元:解释I中所用到的个体常元都包含在论域DI中,就是解释I中所用到的这些个体常元aˉi在论域DI中都能找到相对应的ai
- 谓词符:L中的谓词符号Ain对应与DI上的n元关系Aˉin⊆DIn
- 函数符:L中的函数符号fin对应与DI的n元运算符fˉin:DIn→DI
- 例题一:
- 对于整数语言LZ的解释I有:
- 论域:DI={0,±1,±2,±3,⋅⋅⋅}
- 个体常元:aˉ=0
- 谓词符:A12ˉ:=“=”,A22ˉ:=“<”
- 函数符:f11ˉ(x)=x+1,f12ˉ(x,y)=x+y
- 问题:说明公式(∀x1)(∀x2)(∃x3)A12(f21(x1,x3),x2)的含义
- 答案:在整数集中,对于任何整数x与y总有整数z使得x+z=y
赋值(变量代换)
- 定义:设L是一阶语言,I是L的一个解释,L在I中的赋值v是从L的项集T到DI的一个映射,公式表示为:
v:T→DI
- 这个映射公式就是赋值的意思,其中
- v(ai)=aiˉ
- v(fin(t1,t2,...,tn)=finˉ(v(t1),v(t2),...,v(tn))
- 例题二
- 自然数语言LN中
- N={0,1,2,...}
- 赋值v:T→DI满足
- v(a)=0
- v(f11(x))=f11ˉ(v(x))=v(x)+1
- v(f12(x,y))=f12ˉ(v(x),v(y))=v(x)+v(y)
- v(f22(x,y))=f22ˉ(v(x),v(y))=v(x)×v(y)
- 问题:若v(x1)=1,v(x2)=2,那么v(f12(x1,x2))等于多少
- 答案:v(f12(x1,x2))=f12ˉ(v(x1),v(x2))=v(x1)+v(x2)=1+2=3
- 等价赋值:赋值v的i−等价赋值v′也是一个赋值,且满足对于任意的j,当j=i,v′(xj)=v(xj),其中xi,xj都是一阶语言L的变量
-
应用:
-
设v⊨(∀xi)A,则对于v的任意i−等价赋值w都有w⊨A
-
设v⊨(∃xi)A,则存在v的i−等价赋值w有w⊨A
-
设v⊨(∀xi)A,则对于v的任意i−等价赋值v有v⊨A
或者写作:
- 设v⊨(∀xi)A(xi),则对于v的任意i−等价赋值w都有w⊨A(xi)
- 设v⊨(∃xi)A(xi),则存在v的i−等价赋值w有w⊨A(xi)
- 设v⊨(∀xi)A(xi),则对于v的任意i−等价赋值v有v⊨A(xi)
v′是与v的i−等价赋值,反映了 “差的不多”的意思,即它们的赋值最多只能在i处不同(也就是除在j=i的时候都相同),其他地方的赋值必须完全一样(就是v′(xj)=v(xj)),如果i处的赋值相同当然也可以。
- 设v是一阶语言L的一个赋值,A是L中的一个公式,v⊨A(v满足A)归纳定义为
- v⊨A:若A是原子公式Ain(t1,t2,...,tn),当且仅当(v(t1),v(t2),...,v(tn))∈Ainˉ(即Ainˉ(v(t1),v(t2),...,v(tn))结果为真)时,v⊨A成立
- v⊨¬A:当且仅当v⊭A(即v不满足A)时,v⊨¬A成立
- v⊨A→B:当且仅当若v⊨A则v⊨B成立时,v⊨A→B成立
- v⊨(∀xi)A:当且仅当对于每一个与v的i−等价赋值v′都有v′⊨A
- 赋值的满足性:由归纳定义可知,任一公式A以及任一赋值v, v满足A与v满足¬A二者有一个且只有一个成立,所以我们通常约定,若v满足A,则v(A)=1,若v不满足A,则v(A)=0。
- 因此,则有
- v(¬A)=¬v(A)
- v(A→B)=v(A)→v(B)
- v((∀xi)A)=∧{v′(A)∣v′与v的i−等价}
- 对于其他逻辑算子,容易得到
- v⊨A∨B 当且仅当v⊨A或v⊨B成立
- v⊨A∧B 当且仅当v⊨A和v⊨B都成立
- v⊨(∃xi)A 当且仅当存在一个与v的i−等价赋值v′使得v′⊨A
- 例题三
- 自然数语言LN中,a是LN的个体常元
- 设公式A=A12(f12(x1,x2),f22(x1,x2))
- 解释I为:
- v(f12(x,y))=f12ˉ(v(x),v(y))=v(x)+v(y)
- v(f22(x,y))=f22ˉ(v(x),v(y))=v(x)×v(y)
- A12ˉ:=“=”。
- 问题:
- 问题1:若定义赋值v为v(a)=0,v(xi)=i,则v是否满足A
- 问题2:若定义赋值v′为v′(a)=0,v′(xi)=i,则v′是否满足A
- 答案:
- 问题1答案:
f12(x1,x2)=v(x1)+v(x2)=1+2=3
f22(x1,x2)=v(x1)×v(x2)=1×2=2
A=A12(f12(x1,x2),f22(x1,x2))=A12(3,2)=(3=2)=0
因为A的最终结果为0,因此v⊭A
这里(3=2)表示判断3是否等于2,因为不相等,所以结果为0
- 问题2答案:
f12(x1,x2)=v(x1)+v(x2)=2+2=4
f22(x1,x2)=v(x1)×v(x2)=2×2=4
A=A12(f12(x1,x2),f22(x1,x2))=A12(3,2)=(4=4)=1
因为A的最终结果为1,因此v⊨A
- 例题四
- 设公式B=(∀x1)(x1≥x2)
- 问题:
- 问题1:定义赋值v(x1)=3,v(x2)=0,则v是否满足A
- 问题2:定义赋值v′(x1)=3,v′(x2)=3,则v是否满足A
- 答案:
- 因为已经对x1和x2进行赋值,所以我们直接将他们的值拿去比较即可
- 问题1答案:3≥0结果是正确的,此时B=1,因此因此v⊨B
- 问题2答案:3≥3结果是错误的,此时B=0,因此因此v⊭B
- 对于给定的一个公式,在同一解释下,可能有两个不同的赋值分别满足或不满足该公式;
- 在不同解释下, 可能一个解释下的所有赋值都满足该公式,而另一解释下有赋值不满足该公式。
- 项替换定理
- 定义:设L是一阶语言,I是L的一个解释,A(xi)是属于F(L)的一个公式,xi是A(xi)的自由变元。设项t关于xi自由,v是L在I中的赋值,v′是与v的i−等价赋值,且v′(xi)=v(t),则
v⊨A(t)当且仅当v′⊨A(xi)
- 推论:
v⊨(∃xi)A(xi)当且仅当有个体常元c使得v⊨A(c)
- 自由变元重要性定理
- 定义:设L是一阶语言,I是L的一个解释,A∈F(L),v,w是I中的两个赋值. 若对于A中的每个自由变元xi都有v(xi)=w(xi),则
w⊨A当且仅当v⊨A
公式的可满足性
- 定义:设L是一阶语言,I是L的一个解释,A∈F(L)。若对I中的每个赋值v,都有v⊨A,则称A是可满足的,I是A的一个模型, 记作I⊨A(称A关于I是真公式)。没有模型的公式称为不可满足的。
- 解释I满足公式A是一个整体性概念,与单个赋值v满足A完全不同
- 对于任一个解释I而言,I不可能同时是A与¬A的模型,即A∧¬A没有模型
- 定理:
- 若I⊨A→B且I⊨A,则I⊨B
- I⊨A→B且I⊨B→C,则I⊨A→C
- I⊨A∧B当且仅当I⊨A且I⊨B
- I⊨A或I⊨B可以推出I⊨A∨B
- 若I⊨A则I⊨(∃xi)A
- I⊨A当且仅当I⊨(∀xi)A
- I⊨A当且仅当I⊨(∀y1)(∀y2)⋅⋅⋅(∀yn)A
巩固习题
(习题摘自《软件理论基础》32页,第二章第 2.2小节习题)
- 习题一:
-
设L是一阶语言,它有1个个体常元a1,1个函数符f12和1个谓词符A12,设公式A为
(∀x1)(A12(x1,a1)→A12(f12(x1,x1),a1))
(a)设L的解释I的解释域DI是整数集合Z,a1ˉ=0,f12ˉ(x,y)=x×y,A12ˉ(x,y)为x<y,问公式A在此解释下的意义是什么?是真是假?
(b)把解释I稍作改变,记为I′,设f12ˉ(x,y)=x+y,其余不变,问公式A在此解释I′下的意义是什么?是真是假?
(c)把解释I稍作改变,记为I′′,设A12ˉ(x,y)表示x=y,其余不变,问公式A在此解释I′′下的意义是什么?是真是假?
-
答案:
(a)将解释带入后,公式变为:(∀x1)((x1<0)→(x1×x1<0)),公式意义为:对于任意的x1都有当x1小于零时,x1×x1也小于零。当x1小于零时,x1为负数,两个负数相乘,结果为正数,因此x1×x1<0是错误的,所以公式A在此解释下为假。
(b)将解释带入后,公式变为:(∀x1)((x1<0)→(x1+x1<0)),公式意义为:对于任意的x1都有当x1小于零时,x1+x1也小于零。当x1小于零时,x1为负数,两个负数相加,结果依然为负数,因此x1+x1<0是正确的,所以公式A在此解释下为真。
(c)将解释带入后,公式变为:(∀x1)((x1=0)→(x1×x1=0)),公式意义为:对于任意的x1都有当x1等于零时,x1×x1也等于零。当x1等于零时,x1为零,两个零相乘,结果仍然为零,因此x1×x1=0是正确的,所以公式A在此解释下为真。
- 习题二:
- 设一阶语言L中的公式A为
(∀x1)(A11(x1)→A11(f11(x1)))
公式B为
(∀x1)(A12(x1,x2)→A12(x1,x2))
试分别作出不同的解释,使A与B有时为真,有时为假。
- 答案:
- 对于公式A:
- 设L的解释I的解释域DI是整数集合Z,f11ˉ(x)=x,A11ˉ(x)为x<0,则此时公式A在解释I下变为(∀x1)((x1<0)→(x1<0)),可以看出公式A为真;
- 设L的解释I的解释域DI是整数集合Z,f12ˉ(x)=−x,A12ˉ(x)为x<0,则此时公式A在解释I下变为(∀x1)((x1<0)→(−x1<0)),可以看出公式A为假;
- 对于公式B:
- 设L的解释I的解释域DI是整数集合Z,A12ˉ(x1,x2)为x1<x2,则此时公式A在解释I下变为(∀x1)((x1<x2)→(x2<x1)),可以看出公式B为假;
- 设L的解释I的解释域DI是整数集合Z,A12ˉ(x1,x2)为x1=x2,则此时公式A在解释I下变为(∀x1)((x1=x2)→(x2=x1)),可以看出公式B为真;
- 习题三:
- 证明:在任何一阶语言L中,公式(∀xi)A(xi)→A(xi)在L的任何解释下都真的。
- 答案:
- 证明:设I是L的任一解释,v是L在I下的任一赋值,再设v⊨(∀xi)A,则对于v任一i−等价赋值w都有w⊨A,而v是自身的i−等价于,因此v⊨A。 这表明v⊨(∀xi)A→A。故(∀xi)A→A是逻辑有效的。
- 解释:假设有一个关于v的i−赋值等价w,那么因为v⊨(∀xi)A,所以这个i−赋值等价w⊨A,因此,我们假设这个w就是v本身,从而v⊨A(v的i−等价赋值可以是自身),所以,我们由v⊨(∀xi)A得到了v⊨A。故(∀xi)A→A是逻辑有效的。