基础知识
逻辑符号(Logische Zeichen)
首先是在表达逻辑里已经出现过的:
¬,∧,∨,→,↔,(,)
然后还有几个新的:
∀
:表示所有的
∃
:表示存在
Vi
:表示变量//也可以用var表示
≐
:客观相等//给汗了,啥意思啊???
(objektsprachliches Gleichheitssymbol)
Signature
一个Signature是指一个三元组(Tripel)
∑=(F∑,P∑,α∑)
:其中
F∑,P∑
是有限的或者是可数无限的(albzählbar unendliche Menge)//也就是可以用自然数连续编号的。
F∑,P∑
和前面说到的特殊符号两两不相交//就是不重复得意思
α∑:F∑∪P∑→IN
//表示映射
f∈F∑
叫做函数符号(Funktionssymbol)
g∈P∑
叫做谓词符号(Prädikatssymbol)//也有叫断言符号的
α∑
是符号中参数个数的映射
f是含有n个参数的函数符号(n-stelliges Funktionssymbol)时有
α∑(f)=n
相应的p如果是含有n个参数的谓词符号(n-stelliges Prädikatssymbol),那么就有
α∑(p)=n
一个不含有参数的函数符号(nullstelliges Funktionssymbol)又被称为常量符号或者直接就叫做常量
一个不含有参数的谓词符号(nullstelliges Prädikatsymbol)就是表达逻辑中的Atom
Term
Term可以通过归纳法(induktiv)来定义:
1.
Var∈Term∑
2.如果有
f∈F∑,α∑(f)=n,t1,...,tn∈Term∑
,那么
f(t1,...,tn)∈Term∑
//不含有变量的Term,可以叫做Grundterm
Formel
Atom Formel:
At∑:=
{
s≐t|s,t∈Term∑
}
∪
{
p(t1,...tn)|p∈P∑,α∑(p)=n,ti∈Term∑
}
Formel:
For∑
也可以同过归纳法(induktiv)来定义:
1.{1,0}
∪At∑⊆For∑
2.如果
x∈Var,A,B∈For∑
,那么下列也属于
For∑
:
¬A,(A∧B),(A∨B),(A→B),(A↔B),∀xA,∃xA
自由变量和约束变量(Gebundene und freie Variable)
Vx(p0(x,y))
里面x就是约束变量,y就是自由变量
约束变量就是被量词约束着的变量,自由变量与之相反。
符号表示
已知有
A∈For∑t∈Term∑
:
Bd(A) :={x|
x∈Var,x是A中的约束变量
}
Fr(A):={x|
x∈Var,x是A中的自由变量
}
Var(A):=
Fr(A)∪Bd(A)
Var(t):={x|
x∈Var,x在t中出现
}
Abschlussoperationen für Formeln
//看不懂这节 怎么看都觉得他写矛盾了
替换(Substitutionen)
替换就是指一个映射:
σ:Var→Term∑
其中对于几乎所有的变量var有
σ(x)=x
//就是用Term替换变量
就像是那semantic替换syntax,举个例子
x=f(u)+g(v),m(x)⇝m(f(u)+g(v))
存在
σ(x)≠x
的,比如x=x+1
用符号表示替换
当:
{
x|σ(x)≠x
}
⊆
{
x1,...,xm
}
σ(xi)=si
i=1,…,m
我们可以把这个替换表示为:
{
x1/s1,...,xm/sm
}
//即用
si
替换
xi
另外,我们定义id(x)=x//id表示identische Substitution
替换的应用
已知有:
σ
是一个替换,t指代Term,
∅
指代一个Formel 那么就有:
σ(t):
同时替换所有在
σ
中出现的变量
σ(∅):
只替换
σ
中出现的自由变量
例子
1.
σ=
{x/f(x,y),y/g(x)}
⇒
σ(f(x,y))=f(f(x,y),g(x))
2.
σ=
{x/c,y/d}
⇒
σ(∃yp(x,y))=∃yp(c,y)
3.
σ=
{x/y}
⇒
σ(∀yp(x,y))=∀yp(y,y)
然后问题就出现了,在第三个例子中,我们把一个自由变量变成了约束变量。这就是所谓的替换的collision了
无冲突的替换(Kollisionsfreie Substitution)
就是字面意思,指不会出现上面的情况的替换。即对于Formel的替换,自由变量替换后用到的变量应该不属于原Formel的约束变量。
多个替换组合(Komposition von Substitution)
假如
τ
,
σ
是两个替换,那么我们定义:
(τ∘σ)(x)=τ(σ(x))
//注意不满足交换律
几个定律
1.
t∈Term∑
τ,σ
是两个替换
如果有:
σ(t)=τ(t)
那么就有
σ(s)=τ(s)
其中s是t的子集
证明:略
2.承上当
σ(t)=t
,那么就有
σ(s)=s
证明:再次略
变量重命名(Variablenumbenennung)
已知有:
τ,σ
是两个替换
如果有:
τ∘σ=id
那么我们就说
σ
是变量重命名
因为假如我们有
σ(x)=σ(y)
那么直接带入上式我们就可以得到x=y。
归一(Unifikation)
已知有:
T⊆Term∑,T≠
{},且
σ
是
∑
的一个替换
我们说
σ
是T的归一替换,当且仅当
#σ(T)=1
//#返回个数
另外我们就认为这个T是可归一的(unifizierbar)
例如T={s,t}是可归一的当
σ(s)=σ(t)
有可归一的自然就有不可归一的了,举个例子T={
P,¬P
}就是不可归一的,我们说他们是矛盾的
那么问题来了,p(s),
¬
p(t)会不会也有矛盾呢???看起来很严重啊。其答案是当t和s可以归一时,上面两货就矛盾的。
那么问题又来了,p(x,x)和
¬
p(a,b)呢?其中x为变量,a,b为常量。若a=b则他们矛盾,若a
≠b
那么他们不可能归一。这咋算????
再来几个定律
1.每个Term都可以和它自身归一
2.两个Term:
f(s1,...,sn),g(t1,...,tn)
是不可能归一的(函数名不同)
3.两个Term:
f(s1,...,sn),f(t1,...,tn)
是可以归一的,当存在一个替换
σ
使得
σ(si)=σ(ti)
i=1,…,n
4.x是一个变量而t是Term,只有当x不在t中出现是,x和t是可归一的
最一般归一(mgu:most general unifier)(Allgemeinster Unifikator)
定义:
μ
是T的mau
1.
μ
可以归一T
2.对于T的每一个归一替换
σ
存在一个替换
σ′
使得:
σ=σ′∘μ
//差一条与重命名有关的定律 木看懂?????
Robinson归一算法
先定义几个符号:
t(i)
:表示重左向右数Term t中的第i个项,他可能是函数符号也可能是变量
D(T):
当#T<=1时D(T):=T
当#T>=2时D(T):={
t(j)
|t
∈T
} j是T中term之间存在差异的最小位置值
例如:T={f(g(a,x),g(y,b)),f(z,g(v,w)),f(g(x,a),g(v,b))}
D(T)={g(a,x),z,g(x,a)}
Robinson算法如下:
1.S:=T;
μ:=id
2.#S=1?是则转3,否则转4
3.输出
μ
,算法停止
4.D(S)中是否存在一个变量和一个Term t满足
x∉Var(t)
是则转5,否则转6
5.取出这个x和t;
μ:=
{x/t}
∘μ
S:=
{x/t}(S)
转到2
6.输出T不可归一,算法停止
//欠可行性证明和mgu证明