程序验证(三):一阶逻辑

本文深入探讨了一阶逻辑的语法,包括逻辑符号、非逻辑符号、项和公式等。接着阐述了其语义,如项求值、公式求值和量词求值,并介绍了可满足性和永真性。文章还详细讲解了一阶逻辑的证明系统,涉及永真性证明、证明规则以及可靠性与完备性,最后讨论了一阶逻辑的可判定性问题。
摘要由CSDN通过智能技术生成

程序验证(三):一阶逻辑

语法

逻辑符号

包括:

  • 命题连接符: ∧ , ∨ , ¬ , → , ↔ \wedge , \vee , \neg , \to , \leftrightarrow ,,¬,,
  • 变元: v , y , z , x 1 , x 2 , . . . v,y,z,x_1,x_2, ... v,y,z,x1,x2,...
  • 量词: ∃ \exists , ∀ \forall

非逻辑符号(参数)

包括:

  • 常量: c 1 , c 2 , . . . c_1, c_2, ... c1,c2,...
  • 函数符号: g , h , f , f 1 , f 2 , . . . g,h,f,f_1,f_2, ... g,h,f,f1,f2,...
  • 谓词符号: r , q , p , p 1 , p 2 , . . . r,q,p,p_1,p_2 , ... r,q,p,p1,p2,...
    谓词与函数符号通过元数(arity)联系起来,也就是:
    元数:一个描述参数数量的自然数
    举例:
  • = : = : =:: arity 2
  • f ( a , b , c ) f(a,b,c) f(a,b,c): arity 3
  • 常量:可以视为0元函数

项(term)

项是用来描述对象的表达式
定义:

  • 常量是项
  • 变量是项
  • 对于n元函数符号 f f f f ( t 1 , . . . , t n ) f(t_1, ..., t_n) f(t1,...,tn)是一个项,如果 t 1 , . . . , t n t_1, ... ,t_n t1,...,tn是项

原子公式(atom)

一阶逻辑(FOL)中的原子公式取值或为真、或为假
定义:

  • ⊥ \bot , ⊤ \top 为原子
  • 对于每个n元谓词符号 p p p p ( t 1 , . . . , t n ) p(t_1, ..., t_n) p(t1,...,tn)是一个原子如果 t 1 , . . . , t n t_1, ... , t_n t1,...,tn是项
    一个文字(literal)是一个原子或它的非。

公式(formula)

一个一阶逻辑公式是:

  • 一个文字
  • 使用 ¬ , ∧ , ∨ , → , ↔ \neg ,\wedge ,\vee ,\to ,\leftrightarrow ¬,,,,连接的公式
  • 使用量词(quantifier)的公式
    两种量词:
  • ∀ x . F [ x ] :   " F o r   a l l   x ,   F [ x ] " \forall x.F[x]:~"For~all~x,~F[x]" x.F[x]: "For all x, F[x]"
  • ∃ x . F [ x ] :   " T h e r e   e x i s t s   a n   x   s u c h   t h a t   F [ x ] " \exists x.F[x]:~"There~exists~an~x~such~that~F[x]" x.F[x]: "There exists an x such that F[x]"
    其中,
  • x x x是约束变元(quantified variable)
  • F [ x ] F[x] F[x]是量词的辖域(scope)
  • x x x F [ x ] F[x] F[x]中被量词约束(bind)
  • 如果 F F F y y y没有被任何量词约束,那么它是自由(free)的
    一阶逻辑公式的一些名称:
  • 一个不包含自由变量的公式是关闭的(closed)(也叫做一个句子)
  • 一个包含自由变量的公式是开放的(open)
  • 一个不包含任何变量的公式是ground

一阶逻辑表达式举例

“All cats have more days than dogs”
∀ x , y . d o g ( x ) ∧ c a t ( y ) → n d a y s ( y ) > n d a y s ( x ) \forall x,y.dog(x)\wedge cat(y)\to ndays(y) > ndays(x) x,y.dog(x)cat(y)ndays(y)>ndays(x)
“The numeric array a is sorted”
f o r a l l i . 0 ≤ i < ∣ a ∣ → a [ i ] ≤ a [ i + 1 ] forall i.0\le i< |a|\to a[i] \le a[i+1] foralli.0i<aa[i]a[i+1]
“Graph G contains a triangle”
∃ v 1 , v 2 , v 3 . e ( v 1 , v 2 ) ∧ e ( v 2 , v 3 ) ∧ e ( v 3 , v 1 ) \exists v_1 ,v_2 ,v_3 .e(v_1, v_2)\wedge e(v_2, v_3)\wedge e(v_3, v_1) v1,v2,v3.e(v1,v2)e(v2,v3)e(v3,v1)

语义

一个一阶逻辑解构是一个对(pair) S = ( D , I ) S=(D,I) S=(D,I),这里:

  • D D D是论域(universe of discourse),也就是说,一个我们要讨论的对象的非空集合
  • I I
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值