谓词逻辑
命题逻辑较为简单高效,但是它的表述能力有限,它只能表述“全是”或者“全非”,而不是表示“部分是/非”,因此引入了谓词逻辑
语法
推导规则
Γ , x ⊢ P Γ ⊢ ∀ x . P ( ∀ I ) Γ ⊢ ∀ x . P Γ ⊢ P [ x ↦ E ] ( ∀ E ) Γ ⊢ P [ x ↦ E ] Γ ⊢ ∃ x . P ( ∃ I ) Γ ⊢ ∃ x . P Γ , x , P ⊢ Q Γ ⊢ Q ( ∃ E ) \begin{align} &\cfrac{\Gamma,x \vdash P}{\Gamma \vdash \forall x.P}(\forall I)& \qquad &\cfrac{\Gamma \vdash \forall x.P}{\Gamma \vdash P[x \mapsto E]}(\forall E)& \\ \\ &\cfrac{\Gamma \vdash P[x \mapsto E]}{\Gamma \vdash \exists x.P}(\exists I)& \qquad &\cfrac{\Gamma \vdash \exists x.P \quad \Gamma,x,P \vdash Q}{\Gamma \vdash Q}(\exists E)& \end{align} Γ⊢∀x.PΓ,x⊢P(∀I)Γ⊢∃x.PΓ⊢P[x↦E](∃I)Γ⊢P[x↦E]Γ⊢∀x.P(∀E)Γ⊢QΓ⊢∃x.PΓ,x,P⊢Q(∃E)
规则2中的
x
↦
E
x \mapsto E
x↦E是指将x替换为其子集,也就是说通过前提【对于所有的x都满足P】可以推出【对于x的子集都满足P】。
规则3同理。
例题
一些概念
- 绑定变量(BoundVar):由谓词进行约束的变量
- 自由变量(FreeVar):无谓词约束的变量
- 绑定:将自由变量转换为绑定变量
- 替换:将变量替换成表达式
- 捕获:做变量替换时表达式中有变量与原作用域内变量重名
求绑定变量的集合
B ( c ) = ϕ ( 常量没有绑定变量 ) B ( x ) = ϕ ( 无谓词约束的变量不是绑定变量 ) B ( r ( E , . . . , E ) ) = ϕ ( r 代表运算规则 ) B ( f ( E , . . . , E ) ) = ϕ ( f 代表函数 ) B ( ⊤ ) = ϕ B ( ⊥ ) = ϕ B ( ¬ P ) = B ( P ) B ( P 1 ∧ P 2 ) = B ( P 1 ) ∪ B ( P 2 ) B ( P 1 ∨ P 2 ) = B ( P 1 ) ∪ B ( P 2 ) B ( P 1 → P 2 ) = B ( P 1 ) ∪ B ( P 2 ) B ( ∀ x . P ) = { x } ∪ B ( P ) ( x 显然是绑定变量 ) B ( ∃ x . P ) = { x } ∪ B ( P ) \begin{align} B(c)&=\phi\ (常量没有绑定变量)\\ B(x)&=\phi\ (无谓词约束的变量不是绑定变量)\\ B(r(E,...,E))&=\phi\ (r代表运算规则)\\ B(f(E,...,E))&=\phi\ (f代表函数)\\ B(\top) &= \phi \\ B(\bot) &= \phi \\ B(\neg P) &= B(P) \\ B(P1 \land P2) &= B(P1) \cup B(P2) \\ B(P1 \lor P2) &= B(P1) \cup B(P2) \\ B(P1 \to P2) &= B(P1) \cup B(P2) \\ B(\forall x.P) &= \{x\} \cup B(P)\ (x显然是绑定变量)\\ B(\exists x.P) &= \{x\} \cup B(P) \\ \end{align} B(c)B(x)B(r(E,...,E))B(f(E,...,E))B(⊤)B(⊥)B(¬P)B(P1∧P2)B(P1∨P2)B(P1→P2)B(∀x.P)B(∃x.P)=ϕ (常量没有绑定变量)=ϕ (无谓词约束的变量不是绑定变量)=ϕ (r代表运算规则)=ϕ (f代表函数)=ϕ=ϕ=B(P)=B(P1)∪B(P2)=B(P1)∪B(P2)=B(P1)∪B(P2)={x}∪B(P) (x显然是绑定变量)={x}∪B(P)
例题
求自由变量的集合
F ( c ) = ϕ ( 常量不属于变量 ) F ( x ) = { x } ( 无谓词约束的变量是自由变量 ) F ( r ( E 1 , . . . , E n ) ) = F ( E 1 ) ∪ . . . ∪ F ( E n ) F ( f ( E 1 , . . . , E n ) ) = F ( E 1 ) ∪ . . . ∪ F ( E n ) F ( ⊤ ) = ϕ F ( ⊥ ) = ϕ F ( ¬ P ) = F ( P ) F ( P 1 ∧ P 2 ) = F ( P 1 ) ∪ F ( P 2 ) F ( P 1 ∨ P 2 ) = F ( P 1 ) ∪ F ( P 2 ) F ( P 1 → P 2 ) = F ( P 1 ) ∪ F ( P 2 ) F ( ∀ x . P ) = F ( P ) − { x } F ( ∃ x . P ) = F ( P ) − { x } \begin{align} F(c)&=\phi\ (常量不属于变量)\\ F(x)&=\{x\}\ (无谓词约束的变量是自由变量)\\ F(r(E1,...,En))&=F(E1) \cup ... \cup F(En)\\ F(f(E1,...,En))&=F(E1) \cup ... \cup F(En)\\ F(\top) &= \phi \\ F(\bot) &= \phi \\ F(\neg P) &= F(P) \\ F(P1 \land P2) &= F(P1) \cup F(P2) \\ F(P1 \lor P2) &= F(P1) \cup F(P2) \\ F(P1 \to P2) &= F(P1) \cup F(P2) \\ F(\forall x.P) &= F(P) -\{x\} \\ F(\exists x.P) &= F(P) -\{x\} \\ \end{align} F(c)F(x)F(r(E1,...,En))F(f(E1,...,En))F(⊤)F(⊥)F(¬P)F(P1∧P2)F(P1∨P2)F(P1→P2)F(∀x.P)F(∃x.P)=ϕ (常量不属于变量)={x} (无谓词约束的变量是自由变量)=F(E1)∪...∪F(En)=F(E1)∪...∪F(En)=ϕ=ϕ=F(P)=F(P1)∪F(P2)=F(P1)∪F(P2)=F(P1)∪F(P2)=F(P)−{x}=F(P)−{x}
例题
替换
x [ x ↦ E ] = E y [ x ↦ E ] = y 且 x ≠ y r ( E 1 , . . . , E n ) [ x ↦ E ] = r ( E 1 [ x ↦ E ] , . . . , E n [ x ↦ E ] ) f ( E 1 , . . . , E n ) [ x ↦ E ] = f ( E 1 [ x ↦ E ] , . . . , E n [ x ↦ E ] ) ( P 1 ∧ P 2 ) [ x ↦ E ] = P 1 [ x ↦ E ] ∧ P 2 [ x ↦ E ] ( P 1 ∨ P 2 ) [ x ↦ E ] = P 1 [ x ↦ E ] ∨ P 2 [ x ↦ E ] ( P 1 → P 2 ) [ x ↦ E ] = P 1 [ x ↦ E ] → P 2 [ x ↦ E ] ( ∀ x . P ) [ x ↦ E ] = ∀ x . P ( 绑定变量替换后结果不变 ) ( ∀ y . P ) [ x ↦ E ] = ( ∀ z . P [ y ↦ z ] ) [ x ↦ E ] ( 对变量重命名避免捕获 ) ( ∃ x . P ) [ x ↦ E ] = ∃ x . P ( ∃ y . P ) [ x ↦ E ] = ( ∃ z . P [ y ↦ z ] ) [ x ↦ E ] \begin{align} x[x \mapsto E] &= E \\ y[x \mapsto E] &= y且x \ne y \\ r(E1,...,En)[x \mapsto E]&=r(E1[x \mapsto E],...,En[x \mapsto E])\\ f(E1,...,En)[x \mapsto E]&=f(E1[x \mapsto E],...,En[x \mapsto E])\\ (P1 \land P2)[x \mapsto E] &= P1[x \mapsto E] \land P2[x \mapsto E] \\ (P1 \lor P2)[x \mapsto E] &= P1[x \mapsto E] \lor P2[x \mapsto E] \\ (P1 \to P2)[x \mapsto E] &= P1[x \mapsto E] \to P2[x \mapsto E] \\ (\forall x.P)[x \mapsto E] &= \forall x.P\ (绑定变量替换后结果不变)\\ (\forall y.P)[x \mapsto E] &= (\forall z.P[y \mapsto z])[x \mapsto E]\ (对变量重命名避免捕获)\\ (\exists x.P)[x \mapsto E] &= \exists x.P \\ (\exists y.P)[x \mapsto E] &= (\exists z.P[y \mapsto z])[x \mapsto E] \end{align} x[x↦E]y[x↦E]r(E1,...,En)[x↦E]f(E1,...,En)[x↦E](P1∧P2)[x↦E](P1∨P2)[x↦E](P1→P2)[x↦E](∀x.P)[x↦E](∀y.P)[x↦E](∃x.P)[x↦E](∃y.P)[x↦E]=E=y且x=y=r(E1[x↦E],...,En[x↦E])=f(E1[x↦E],...,En[x↦E])=P1[x↦E]∧P2[x↦E]=P1[x↦E]∨P2[x↦E]=P1[x↦E]→P2[x↦E]=∀x.P (绑定变量替换后结果不变)=(∀z.P[y↦z])[x↦E] (对变量重命名避免捕获)=∃x.P=(∃z.P[y↦z])[x↦E]
例题