程序验证(四):一阶理论

程序验证(四):一阶理论

定义

一个一阶理论(theory) T T T被以下两点定义:

  • 它的符号集 Σ \Sigma Σ, 一个非逻辑符号的集合
  • 它的公理 A \mathcal{A} A, 一个在 Σ \Sigma Σ上的闭公式(closed formula)
    一阶逻辑理论定义了一个有限的词汇表以讨论所关注的主题,而理论中的公理定义了所意指的涵义(intended meaning)
    Σ \Sigma Σ-formula: 一个 Σ \Sigma Σ-formula 只包含 Σ \Sigma Σ中的非逻辑符号,以及逻辑变元,逻辑连接词和量词。
    举例:
    ∀ x , y . x = y → y = x \forall x,y.x=y\to y=x x,y.x=yy=x
    a [ i ] = e → a ⟨ i ◃ e ⟩ = a a[i] = e\to a \langle i \triangleleft e\rangle = a a[i]=eaie=a

常用理论(theory)

等价理论(Theory of Equality)

定义

等价理论 T E T_E TE由以下符号集给出:
Σ E : { = , a , b , c , . . . , f , g , h , . . . , p , q , r , . . . } \Sigma_E: \{=,a,b,c, ... ,f,g,h, ... ,p,q,r, ...\} ΣE:{ =,a,b,c,...,f,g,h,...,p,q,r,...}
这里有二元等价符号=,以及其他的常量、函数、谓词符号。 T E T_E TE的公理“=”满足自反性、对称性、传递性,以及函数与谓词的同余性(congruence)
T E T_E TE公式举例:

  • ∀ x , y . x = y → y = x \forall x,y.x=y\to y=x x,y.x=yy=x
  • a = b ∧ b = c → g ( f ( a ) , b ) = g ( f ( c ) , a ) a=b\wedge b=c\to g(f(a),b) = g(f(c),a) a=bb=cg(f(a),b)=g(f(c),a)

符号集:
Σ E : { = , a , b , c , . . . , f , g , h , . . . , p , q , r , . . . } \Sigma_E : \{=,a,b,c, ... ,f,g,h, ... ,p,q,r, ...\} ΣE:{ =,a,b,c,...,f,g,h,...,p,q,r,...}
公理集:

  • 自反性(refelxivity): ∀ x . x = x \forall x.x=x x.x=x
  • 对称性(symmetry): ∀ x , y . x = y → y = x \forall x,y.x=y \to y=x x,y.x=yy=x
  • 传递性(transitivity): ∀ x , y , z . x = y ∧ y = z → x = z \forall x,y,z.x=y\wedge y=z \to x=z x,y,z.x=yy=zx=z
  • 函数同余性(function congruence): ∀ x , y . ( ⋀ i = 1 n x i = y i ) → f ( x ) = f ( y ) \forall x,y.(\bigwedge ^n_{i=1} x_i=y_i)\to f(x) = f(y) x,y.(i=1nxi=yi)f(x)=f(y)
  • 谓词同余性(predicate congruence): ∀ x , y . ( ⋀ i = 1 n x i = y i ) → ( p ( x ) ↔ p ( y ) ) \forall x,y.(\bigwedge ^n_{i=1} x_i = y_i)\to (p(x)\leftrightarrow p(y)) x,y.(i=1nxi=yi)(p(x)p(y))

注意,以上公理并不是标准的公理,实际上,它只是一个模式(schema)因为表达式中的 f f f p p p可以代表任何函数(或谓词)

性质

T E T_E TE是可判定的吗?
不是(即答
证明方法:将 T E T_E TE公式转化为一阶逻辑公式:

  • T E T_E TE仍然允许所有常量、函数以及谓词符号存在
  • 可以将任何一阶逻辑公式 F F F编码为 T E T_E TE公式 F ′ F' F
    • F F F中所有=符号用一个新的(fresh)谓词符号替换
    • F ′ F' F中不出现=符号
    • T E T_E TE中的公理与此无关
      然而, T E T_E TE的量词自由片段(quantifier-free fragment)是可判定的
理论的片段(theory fragment)

一个理论的片段(fragment)是 T T T中公式的一个由语义约束的(syntactically-restricted)子集
如果对于每个符合片段的语义约束的公式 F F F T ⊨ F T\models F TF是可判定的,那么这个片段是可判定的
量词自由的片段: T T T中没有量词的永真公式(也可以看做是所有量词都是全称量词)

永真性的证明

使用一阶逻辑中的语义分析方法,同时假如 T E T_E TE的公理
举例:
证明以下公式的永真性:
F : x = y ∧ y = z → g ( f ( x ) , y ) = g ( f ( z ) , x ) F: x=y\wedge y=z \to g(f(x),y) = g(f(z), x) F:x=yy=zg(f(x),y)=g(f(z),x)

步骤 公式 备注
1 $I\not\models F -
2 I ⊨ x = y ∧ y = z I\models x=y\wedge y=z Ix=yy=z 1, → \to
3 I ⊭ g ( f ( x ) , y ) = g ( f ( z ) , x ) I\not\models g(f(x),y)=g(f(z),x) Ig(f(x),y)=g(f(z),x) 1, → \to
4
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值