Formal sys-pradicate syntax

基础知识

逻辑符号(Logische Zeichen)

首先是在表达逻辑里已经出现过的:
¬,,,,,(,)
然后还有几个新的:
:表示所有的
:表示存在
Vi :表示变量//也可以用var表示
:客观相等//给汗了,啥意思啊???
(objektsprachliches Gleichheitssymbol)

Signature

一个Signature是指一个三元组(Tripel) =(F,P,α) :其中
F,P 是有限的或者是可数无限的(albzählbar unendliche Menge)//也就是可以用自然数连续编号的。
F,P 和前面说到的特殊符号两两不相交//就是不重复得意思
α:FPIN //表示映射
fF 叫做函数符号(Funktionssymbol)
gP 叫做谓词符号(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. VarTerm
2.如果有 fF,α(f)=n,t1,...,tnTerm ,那么 f(t1,...,tn)Term
//不含有变量的Term,可以叫做Grundterm

Formel

Atom Formel:
At:= { st|s,tTerm } { p(t1,...tn)|pP,α(p)=n,tiTerm }
Formel:
For 也可以同过归纳法(induktiv)来定义:
1.{1,0} AtFor
2.如果 xVar,A,BFor ,那么下列也属于 For :
¬A,(AB),(AB),(AB),(AB),xA,xA

自由变量和约束变量(Gebundene und freie Variable)

Vx(p0(x,y)) 里面x就是约束变量,y就是自由变量
约束变量就是被量词约束着的变量,自由变量与之相反。

符号表示

已知有 AFortTerm :
Bd(A) :={x| xVar,xA }
Fr(A):={x| xVar,xA }
Var(A):= Fr(A)Bd(A)
Var(t):={x| xVar,xt }

Abschlussoperationen für Formeln

//看不懂这节 怎么看都觉得他写矛盾了

替换(Substitutionen)

替换就是指一个映射: σ:VarTerm 其中对于几乎所有的变量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. tTerm τ,σ 是两个替换
如果有: σ(t)=τ(t) 那么就有 σ(s)=τ(s) 其中s是t的子集
证明:略
2.承上当 σ(t)=t ,那么就有 σ(s)=s
证明:再次略

变量重命名(Variablenumbenennung)

已知有: τ,σ 是两个替换
如果有: τσ=id
那么我们就说 σ 是变量重命名
因为假如我们有 σ(x)=σ(y) 那么直接带入上式我们就可以得到x=y。

归一(Unifikation)

已知有: TTerm,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满足 xVar(t) 是则转5,否则转6
5.取出这个x和t;
μ:= {x/t} μ
S:= {x/t}(S)
转到2
6.输出T不可归一,算法停止
//欠可行性证明和mgu证明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值