一阶逻辑自动推理系统
- 格式:doc
- 大小:73.50 KB
- 文档页数:3
数理逻辑中的一阶逻辑与高阶逻辑的推理规则数理逻辑是研究形式系统的一门学科,其中包括一阶逻辑和高阶逻辑两种推理规则。
本文将分别介绍一阶逻辑和高阶逻辑的定义、基本概念以及推理规则。
一、一阶逻辑一阶逻辑是形式逻辑中的一种基本逻辑形式,也被称为一阶谓词逻辑或一阶一周理论。
它的推理规则包括以下几个方面:1. 命题逻辑命题逻辑是一阶逻辑的基础,它研究命题之间的逻辑关系以及对命题进行推理的规则。
命题逻辑中的推理规则主要涉及命题的合取、析取、否定等逻辑操作。
2. 量化一阶逻辑引入了变量和量词的概念,通过引入全称量词和存在量词,可以对一阶逻辑中的命题进行更加精确的描述。
量化的推理规则包括全称推广、全称规约、存在引入和存在消解等。
3. 假言推理假言推理是一阶逻辑中常见的一种推理形式,它通过条件语句的前提和结论之间的逻辑关系进行推理。
常用的假言推理规则有蕴涵引入、蕴涵消解、假言推广和假言规约等。
4. 等价推理等价推理是一阶逻辑中常用的一种推理形式,它通过等价命题之间的逻辑关系进行推理。
等价推理的规则包括等价引入、等价消解、双重否定引入和双重否定消解等。
二、高阶逻辑高阶逻辑是一种在一阶逻辑的基础上进行扩展的逻辑形式,它涉及到更高级别的量词和谓词的运用。
高阶逻辑中的推理规则包括以下几个方面:1. 高阶量词高阶逻辑引入了更高级别的量词,如二阶量词、三阶量词等,通过这些量词可以对更复杂的命题进行描述和推理。
高阶量词的推理规则包括量词引入和量词消解等。
2. 谓词高阶逻辑中的谓词可以是一阶逻辑中的命题或者函数,通过对谓词的运用可以进行更加精确的推理。
谓词的推理规则包括谓词引入、谓词消解等。
3. 广义命题高阶逻辑中的广义命题是指一个命题包含了其他命题作为子命题,通过对广义命题的推理可以对复杂的逻辑关系进行推理。
广义命题的推理规则包括广义命题引入和广义命题消解等。
总结:数理逻辑中的一阶逻辑和高阶逻辑是逻辑推理的重要分支,它们通过不同的推理规则对不同级别的命题进行推理和描述。
离散数学一阶逻辑离散数学是一门研究离散结构及其运算规律的学科,它涉及到数学中的逻辑、代数、集合论、图论等多个方面。
其中,一阶逻辑作为离散数学中的重要分支,具有广泛的应用和研究价值。
本文将从逻辑的基本概念、一阶逻辑的语法和语义、一阶逻辑的推理规则、一阶逻辑的应用等几个方面来介绍一阶逻辑,旨在帮助读者全面了解一阶逻辑的基本概念和使用方法,并为其后续学习和应用提供指导。
首先,我们来介绍逻辑的基本概念。
逻辑是研究判断的科学,它主要关注真理与推理的关系。
在逻辑中,我们使用语句来表示判断,语句可以是真或假。
同时,逻辑将语句分为简单语句和复合语句。
简单语句是指不能再分解为更简单语句的语句,而复合语句则由多个简单语句通过逻辑运算连接而成。
逻辑运算包括取反(¬)、合取(∧)、析取(∨)、蕴含(→)等。
接下来,我们进一步介绍一阶逻辑的语法和语义。
一阶逻辑是最基本且最常用的逻辑系统之一,它包括基本命题、谓词和量词。
基本命题是指具有真或假值的简单语句,如“今天是星期一”。
谓词是一种描述性的语句构造,它通过将一些对象与一些性质关联起来,来表示复杂的判断。
例如,“x是红色”的谓词可以表示成P(x)。
量词则用来表示概括性的判断,包括全称量词∀和存在量词∃。
例如,“对于任意x,P(x)”可以表示成∀xP(x)。
在一阶逻辑中,语义是根据给定的语句和模型来确定语句的真假值。
模型是一种对应关系,它将谓词与具体的对象元素相联系。
通过使用变元(变量)和量化符号(全称量词∀和存在量词∃),我们可以构造出不同的语句并进行语义推理,从而得到推理结论。
此外,一阶逻辑还有一些特殊的推理规则,例如代入规则和全称推广规则。
代入规则是指在一个语句中的某个位置用一个等价的语句替换。
全称推广规则是指在一个语句中添加一个全称量词,将一个具体对象概括为所有对象的性质。
最后,我们来介绍一阶逻辑的应用。
一阶逻辑在人工智能、计算机科学和数学等领域有着广泛的应用。
一阶逻辑演算的自然推理系统n的逻辑符号自然推理是一种用于证明数学定理和逻辑命题的演绎推理系统。
在一阶逻辑演算中,推理证明的过程是建立在逻辑符号和规则基础之上的。
在自然推理系统n中,一阶逻辑的符号集合和规则体系被赋予了特定的含义和解释,使得我们能够通过推理的步骤来推导出结论。
下面将对这一主题进行全面探讨。
1. 确定逻辑符号集合在自然推理系统n中,逻辑符号集合包括命题变项、逻辑联结词、全称量词、存在量词和推理规则。
其中,命题变项用于表示命题或命题化的变项,逻辑联结词包括合取、析取、蕴含和双条件等逻辑联结词,全称量词表示“对于任意的”关系,存在量词表示“存在着这样的”关系,推理规则包括假言推理、假言三段论、析取三段论、全称引入和全称消去等规则。
这些逻辑符号共同构成了自然推理系统n的逻辑符号集合。
2. 规定逻辑推导规则自然推理系统n中的逻辑推导规则用于推导出命题的真值,包括假言推理规则、假言三段论规则、析取三段论规则、全称引入规则和全称消去规则等。
这些规则按照一定的逻辑推导方式进行组合使用,从而得到了推导出的结论。
3. 举例说明逻辑推导的过程为了更好地理解自然推理系统n中的逻辑推导过程,举例说明是非常有必要的。
以假言推理为例,如果已知条件命题p→q和p为真,则可以推导出结论q为真。
这种推导过程利用了逻辑联结词中的蕴含关系,通过假言推理规则得到了推导结论q。
4. 总结回顾通过对自然推理系统n的逻辑符号和逻辑推导规则进行讨论和举例说明,我们深入地理解了自然推理系统n的推导过程。
在这个过程中,逻辑符号集合和推导规则相互作用,使得我们能够通过推导的步骤来得到有价值的结论。
个人观点和理解对于自然推理系统n的逻辑符号和推导规则,我认为这是一种非常有效的推理方法。
通过对逻辑符号的合理运用和推导规则的精确应用,我们能够清晰地证明和推导出命题的真值。
在这个过程中,我们也能够深入地理解和分析命题中的逻辑关系,从而获得更深刻的认识。
一阶逻辑表达式一阶逻辑表达式:存在 x, 对于所有 y, P(x, y)在数理逻辑中,一阶逻辑是一种形式系统,用于描述命题与谓词之间的关系。
一阶逻辑表达式可以用来表达一个特定的命题形式,即存在一个元素 x,对于所有元素 y,满足某个谓词 P(x, y)。
一阶逻辑表达式的形式为:存在 x, 对于所有 y, P(x, y)。
其中,存在量词"存在" 表示存在至少一个满足谓词P(x, y) 的元素x;全称量词 "对于所有" 表示对于任意一个元素 y,都满足谓词 P(x, y)。
通过一阶逻辑表达式,我们可以描述一些普遍的命题形式,从而推导出一些有关关系的结论。
下面将通过一个例子来说明一阶逻辑表达式的应用。
假设有一群学生,我们想要表达的命题是:存在一个学生,对于所有的课程,该学生都取得了优秀的成绩。
我们可以用一阶逻辑表达式来描述这个命题:存在一个学生 x,对于所有的课程 y,满足 P(x, y),其中 P(x, y) 表示学生 x 在课程 y 上取得了优秀的成绩。
通过一阶逻辑表达式,我们可以推导出一些结论。
例如,如果存在一个学生x,对于所有的课程y,满足P(x, y),那么我们可以得出结论:每个课程都有至少一个学生取得了优秀的成绩。
这是因为一阶逻辑表达式要求对于所有的课程y,都满足P(x, y),即每个课程都存在至少一个学生x,使得学生x 在该课程上取得了优秀的成绩。
除了描述命题之间的关系,一阶逻辑还可以用来推理和证明。
通过一阶逻辑表达式,我们可以推导出一些逻辑结论,从而得到新的命题。
例如,如果存在一个学生x,对于所有的课程y,满足P(x, y),那么我们可以得出结论:存在一个学生 y,对于所有的课程 x,满足P(y, x)。
这是因为一阶逻辑表达式要求对于所有的课程y,都满足P(x, y),即每个课程都存在至少一个学生x,使得学生x 在该课程上取得了优秀的成绩。
根据逻辑推理,我们可以得出存在一个学生y,对于所有的课程 x,都满足 P(y, x)。
第5章一阶逻辑等值演算与推理主要内容1. 等值式与基本的等值式①在有限个体域中消去量词等值式②量词否定等值式③量词辖域收缩与扩张等值式④量词分配等值式2. 基本规则①置换规则②换名规则③代替规则3. 前束范式4. 推理理论①推理的形式结构②推理正确③构造证明④新的推理规则全称量词消去规则,记为UI全称量词引入规则,记为UG存在量词消去规则,记为EI存在量词引入规则,记为EG学习要求1. 深刻理解重要的等值式,并能熟练地使用它们。
2. 熟练地使用置换规则、换名规则和代替规则。
3. 准确地求出给定公式的前束范式(形式可不唯一)。
4. 正确地使用UI、UG、EI、EG规则,特别地要注意它们之间的关系。
5. 对于给定的推理,正确地构造出它的证明。
5.1 一阶逻辑等值式与置换规则定义5.1设A,B是一阶逻辑中任意两个公式,若A B是永真式,则称A与B是等值的。
记做A B,称A B是等值式。
谓词逻辑中关于联结词的等值式与命题逻辑中相关等值式类似。
下面主要讨论关于量词的等值式。
一、基本等值式第一组代换实例由于命题逻辑中的重言式的代换实例都是一阶逻辑中的永真式,因而第二章的16组等值式给出的代换实例都是一阶逻辑的等值式的模式。
例如:xF(x)┐┐xF(x)x y(F(x,y)→G(x,y))┐┐x y(F(x,y)→G(x,y))等都是(2.1)式的代换实例。
又如:F(x)→G(y)┐F(x)∨G(y)x(F(x)→G(y))→zH(z)┐x(F(x)→G(y))∨zH(z))等都是(2.1)式的代换实例。
第二组消去量词等值式设个体域为有限域D={a1,a2,…,a n},则有(1)xA(x)A(a1)∧A(a2)∧…∧A(a n)(2)xA(x)A(a1)∨A(a2)∨…∨A(a n) (5.1)第三组量词否定等值式设A(x)是任意的含有自由出现个体变项x的公式,则(1)┐xA(x)x┐A(x)(2)┐xA(x)x┐A(x) (5.2)(5.2)式的直观解释是容易的。
一阶逻辑归结算法python实现一阶逻辑归结算法是一种基于逻辑推理的自动推理算法,通常被应用于人工智能领域。
该算法尝试通过将逻辑公式转化为诸如蕴含或等价命题的形式,并将这些命题归结为更简单的命题来推导结论。
在Python中实现一阶逻辑归结算法,需要以下几个步骤:1. 将逻辑公式表示为皮亚诺算术。
在皮亚诺算术中,逻辑命题可以用数学公式来表示。
可以通过使用一系列公理和推导规则,将其他的命题表示为原始命题的组合。
2. 编写归结规则。
归结规则用于将原命题转化为新命题。
最终目的是将命题简化为不再有共同变量的形式。
3. 执行归结。
执行归结过程的目的是找出两个公式,这两个公式通过一对补集中的共同变量绑定在一起。
有了这样的一对公式,可以将其归结为一个新的命题。
4. 对命题进行验证。
对归结出的新命题进行验证,以确定它们是否等价于原始的命题。
代码如下:```python#定义一阶逻辑公式class Predicate(object):def __init__(self, name, arity): = nameself.arity = aritydef __eq__(self, other):if isinstance(other, Predicate):return == and self.arity == other.arityreturn Falsedef __hash__(self):return hash((,self.arity))def __str__(self):return "{}({})".format(, ",".join(["?" + str(i) for i inrange(self.arity)]))#定义归结规则def rules(p1,p2):if ( == ) and (p1.arity == p2.arity):for idx, _ in enumerate(p1.arity):p1_args = ["?x_{}".format(i) if i != idx else "?y_{}".format(i) for i in range(p1.arity)]p2_args = ["?y_{}".format(i) if i != idx else "?x_{}".format(i) for i in range(p2.arity)]conclusion = "{}({})".format(, ",".join(p1_args))premise1 = "{}({})".format(, ",".join(p2_args))premise2 = "{}({})".format(, ",".join(p1_args))yield (conclusion, premise1, premise2)#执行归结过程def resolution(KB, alpha):KB.append(alpha.negate()) #将alpha的否定加入到KB中while True:new_clauses = []n = len(KB)for i in range(n):for j in range(i, n):if i == j:continuep1, p2 = KB[i], KB[j]resolvents = [resolvent for clause1 in p1 for clause2 in p2 for resolvent in rules(clause1, clause2)]for r in resolvents:if not any(r == c for c in new_clauses + KB):new_clauses.append(r)if not new_clauses:return Falseif any(c.empty() for c in new_clauses):return TrueKB.extend(new_clauses)```以上代码中,我们定义了一个`Predicate`类,用于表示一阶逻辑公式。
1一阶逻辑的推理演算这一讲我们学习一阶逻辑的自然推理系统。
其功能是由若干前提12,,,n A A A 推导出一条结论B 。
这相当于证明下列蕴含式是永真的: 12n A A A B ∧∧∧→1. 一阶逻辑的代入定理 将永真命题公式中的各命题变元代换为任何一阶公式后,所得的一阶公式是永真的。
例如,()p q p q →∧→是永真命题公式。
进行一阶公式代入p=F (x ),q=G (x )后得如下永真一阶公式:(()())()()F x G x F x G x →∧→定理1.1(代入定理)任何永真命题公式在代入一阶公式后是永真一阶公式。
证明 略。
证毕2. 永真蕴含式和推理定律永真蕴含式:若A →B 是永真式,则记为A B ⇒,称为永真蕴含式。
将永真命题蕴含式中的变元视为取值为任何一阶公式的变元,则该永真命题蕴含式就变成一条推理定律。
根据代入定理,推理定律表示一批形式相似的永真蕴含式。
因此,推理定律是描述永真蕴含式的模式。
由任何永真蕴含式可以得到对应的推理定律。
例如,由永真蕴含式()p q p q →∧⇒可得一阶逻辑的假言推理定律()A B A B →∧⇒,其中变元A ,B 表示任何一阶公式。
这条推理定律的含义是,对于任何一阶公式A 和B ,若(A →B )为真并且A 为真,则B 为真。
因此,由前提(A →B )与A 可得结论B 。
这是我们思维中最常用的一条推理规则,称为假言推理规则或者分离规则。
因此,推理定律可以当作推理规则使用。
2再如,(())p q q p →∧⌝→是永真蕴含式,由此可得推理定律(())A B B A →∧⌝⇒,称为拒取式。
命题逻辑的自然推理系统P 中的所有9条推理定律都可以当作一阶逻辑推理定律来使用。
3. 量词消去与引入规则与命题逻辑的自然推理系统相比,这是一阶逻辑自然推理系统所特有的推理规则。
见课本第75页。
这是课程中的一个难点,我们可以借助于语义来理解其正确性。
1) 全称量词消去规则(简记为∀-)(1)第一个竖式得出的结论是一个句型。
实验二:使用Prolog的一阶逻辑推理实验班级;智能1401姓名:蒙寿伟学号:201408070120一.实验目的1.学会使用Prolog语言;2.用Prolog语言巩固一阶逻辑知识;3.能够使用prolog语言实现一阶逻辑的证明;二、实验的硬件、软件平台硬件:计算机软件:操作系统:WINDOWS 10应用软件:Prolog三、实验内容及步骤熟悉prolog语言的使用并实现对于一阶逻辑推理的证明实验步骤:1:对于a,b,c,d四种输入情况,验证|?- p(a).的真假;a.p(b). p(a) :- p(b). p(a) :- p(c)推理分析:事实:p(b)为真.推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真. 结论:p(a)为真.运行结果:b. p(c). p(a) :- p(b). p(a) :- p(c).推理分析:事实:p(c)为真.推理:由p(b)为真可以推出p(a)为真,由p(c)为真可以推出p(a)为真. 结论:p(a)为真.运行结果:c. p(b). p(a) :- p(b) ,p(c).推理分析:事实:p(b)为真.推理:由p(b)为真且p(c)为真可以推出p(a)为真.结论:p(a)为假.因为p(b)未知.d. p(c). p(a):- p(b) ; p(c).推理分析:事实:p(b)为真.推理:由p(b)为真或p(c)为真可以推出p(a)为真.结论:p(a)为真.2.验证?-friend(john,Y).likes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane ,smith).friend(john,X):-likes(X,reading),likes(X,music).friend(john,X):-likes(X,sports),likes(X,music).推理分析:1.如果X喜欢音乐,而且喜欢阅读,那么X是john的朋友。
北京大学1997年研究生入学考试离散数学试题(共50分)1 (7分)在一阶逻辑自然推理系统F中,构造下面推理的证明。
个体域是人的集合。
“每位科学家都是勤奋的,每个勤奋又身体健康的人在事业中都会获得成功。
存在着身体健康的科学家。
所以,存在着事业获得成功的人或事业半途而废的人。
”2 (8分)在某次研讨会的休息时间,3名与会者根据王教授的口音分别作出下述判断:甲说:王教授不是苏州人,是上海人。
乙说:王教授不是上海人,是苏州人。
丙说:王教授既不是上海人,也不是杭州人。
王教授听后,笑曰:你们3人中有一人全说对了,有一人全说错了,还有一人对错各半。
试用逻辑演算法判断王教授是哪里人?3 (3分)设根树T有17条边,12片树叶,4个4度内点,1个3度内点。
求T的树根的度数。
4 (7分)设无向图G是n(n≥3)个顶点的极大平面图,证明G的对偶图G*的边连通度l(G)≥2,并且G*是3-正则图(Δ(G)=d(G)=k的无向图G称作k-正则图)。
5 (4分)设R={| x,yÎnÙx+3y=12},求R2。
6 (6分)设A为集合,B=P(A)-{Æ}-{A},且B≠Æ。
求偏序集<B,&IACUTE;>的极大元,极小元,最大元和最小元。
7 (4分)设A={1,2,3},fÎAA,且f(1)=f(2)=1,f(3)=2,定义G:A→P(A),G(x)=f-1(x)。
说明G有什么性质(单射、满射和双射),计算值域ranG。
8 (4分)设I是格L的非空子集,如果(1) "a,bÎI,有aÚbÎI,(2) "aÎI,"xÎL,有x≤aÞxÎI。
则称I是格L的理想。
证明:格L的理想是一个子格。
9 (7分)设G为n阶群,aÎG。
令H={xax-1|xÎG},N(a)={x|xÎGÙax=xa}。
一阶逻辑基本概念知识点总结一阶逻辑是一种形式化的逻辑系统,也称为一阶谓词演算。
它由一组基本的概念组成,包括:1. 项(Term):一阶逻辑中的项是指个体或对象,可以是常量、变量或函数应用。
常量是指已知的个体,变量是指代未知个体,函数应用是将一个函数应用于一组参数得到的结果。
2. 公式(Formula):一阶逻辑中的公式是用来描述真假性的陈述。
公式可以是原子公式或复合公式。
原子公式是一个谓词应用,谓词是一个描述性的关系符号,用来描述个体之间的关系。
复合公式是由逻辑连接词(如否定、合取、析取、蕴含等)连接的一个或多个公式。
3. 量词(Quantifier):一阶逻辑中的量词用来描述一个谓词在某个个体集合上的性质。
常见的量词包括全称量词(∀,表示对所有个体都成立)和存在量词(∃,表示存在至少一个个体成立)。
4. 推理规则(Inference Rule):一阶逻辑中的推理规则用来进行逻辑推理,在给定一组前提条件的情况下,得出结论的过程。
常用的推理规则包括引入规则(例如全称引入和存在引入)、消去规则(例如全称消去和存在消去)、逆反法和假设法等。
5. 自由变量和限定变量:一阶逻辑中的变量可以分为自由变量和限定变量。
自由变量是没有被量词约束的变量,限定变量是被量词约束的变量。
6. 全称有效性和存在有效性:一阶逻辑中的一个论断是全称有效的,如果它在所有模型中都为真;一个论断是存在有效的,如果它在某个模型中为真。
这些是一阶逻辑的基本概念,它们提供了一种描述和推理关于个体和关系之间的真假性的形式化方法。
一阶逻辑在数学、人工智能、计算机科学等领域有广泛的应用。
在数学领域中,逻辑是一门非常重要的学科。
它涉及到推理、论证以及证明等方面,是数学推理的基础。
在逻辑中,一阶逻辑和二阶逻辑是两个重要的分支,它们有着不同的特点和应用。
首先,让我们先来了解一下一阶逻辑。
一阶逻辑,也称为谓词逻辑,是一种基本的数学逻辑系统,它主要研究命题中的个体对象及其关系。
一阶逻辑的基本元素包括个体变量、谓词、量词等。
其中,个体变量表示论域中的个体对象,谓词表示对个体进行的性质或关系的描述,量词则表示对个体变量进行全称或存在的量化。
例如,存在一个个体变量x,谓词P(x)表示个体x具有某个性质P,量词∀x表示对所有个体x都具有该性质,量词∃x表示存在一个个体x具有该性质。
通过使用个体变量、谓词和量词,我们可以表示复杂的陈述和命题,并进行推理和论证。
一阶逻辑是描述数学结构和建立数学理论的基础,它能够表达和推理关于个体对象的性质和关系。
而与一阶逻辑相对应的是二阶逻辑。
二阶逻辑是一种更为强大和复杂的逻辑系统,它与一阶逻辑相比,语义表达能力更强,可以描述更复杂的数学结构和命题。
在二阶逻辑中,除了个体的性质和关系外,还可以引入表示集合的变量和谓词,以及集合的操作和关系。
二阶逻辑可以处理一阶逻辑中无法表达的陈述和命题,例如,对于实数集合,我们可以引入一个集合变量X和谓词P(x)表示X是一个有界集合,然后使用量词∃X来表达存在一个有界集合。
与此同时,我们还可以使用集合的运算和关系来描述集合之间的包含、相等、并集和交集等关系。
通过引入集合的概念,二阶逻辑能够更好地描述和分析数学中的集合论、拓扑学以及其他领域的问题。
总结起来,一阶逻辑和二阶逻辑都是数学逻辑中非常重要的分支。
一阶逻辑主要研究命题中的个体及其关系,适用于描述和论证个体对象的性质和关系。
而二阶逻辑则具有更强的语义表达能力,可以处理一阶逻辑中无法表达的陈述和命题,适用于描述和分析更复杂的数学结构和问题。
无论是一阶逻辑还是二阶逻辑,在数学领域中都扮演着重要的角色。
一阶逻辑自动推理系统一基础知识(1)定义 1设t是LF(X)中的项,若t为常量或变元,则t为 0元项,记为 0-T;若t为fn(t1 t2……tn)的形式,则t为 n元项。
(2)定义2 设g是LF(X)中的广义文字,若g为如下形式:P( f1( f2( f m(t) )))或ØP( f1( f2( f m(t) )))这里P是LF(X)中的谓词符号,f i(i = 1 2 m)是LF(X)中的函数符号且f i(i = 1 2 m)为0 元或1 元,t为常量或变元,且g中不含有蕴涵算子“®”,则称g为简单广义文字,称m为g的复杂度。
(3)定理1 设g1,g2是LF(X)中的简单广义文字,且g1,g2分别为如下形式:P(f ( f ( f(a) ))) (k个f)ØP(f ( f ( f(x) ))) (k个f)这里k,l分别是g1,g2的复杂度,a是LF(X)中的常量,x是LF(X)中的变元,f 是LF(X)中的函数符号。
如果k < l,则(g1 g2)不是α -归结对。
(4)定义3 设C 是LF(X) 中的子句,且C 为如下形式:g1 Ú g2 Ú Ú g n,其中g i(i = 1 2 n)为LF(X)中简单广义文字,则称C为简单广义子句。
(5)定义4 设S ={C1 C2 C m}是LF(X)中的子句集,若C i(i = 1 2 m)为简单广义子句,则称S为简单广义子句集。
(6)定理2LF(X)中子句集S为α-不可满足的当且仅当存在S中子句的基例的有穷集合S′,S′是α-不可满足的。
(7)定理3 设S为LF(X)中的子句集,S*是S经过基替换后得到的子句集,若S*是α-不可满足的,则S是α-不可满足的。
(8)引理1 LF(X)中的子句集S={C1 C2 C m}是α-不可满足的当且仅当对于任意的p i Î G i ,存在最一般合一σ,使得pσ1 Ù pσ2 Ù Ù pσm £ α,这里G i是子句C i中的广义文字集合。
(9)定理4 LF(X)中的子句集S为α-不可满足,当且仅当S的每一条路径上均有α- 归结对,即对任意的P i Î H i(i = 1 2 m),{P1 P2 P m}中有α-归结对。
(10)定理5 设S = S1 S2是LF(X)中的子句集,S1 ={C1 C2 C k},S2 ={C k + 1 C k + 2 C m},如果存在S的一条无α-归结对的前k元子路径R1,并且R1与子句集S2无α-归结对,则S为α-不可满足的当且仅当S2为α-不可满足的(11)定理6 将LF(X)中的子句集S中子句的次序调换或S中某个子句中文字的次序调换不改变S的α-不可满足性和α-可满足性。
二简单子句集的归结自动推理算法为了便于计算机程序的编制,首先对LF(X)中的子句集S进行如下的预处理:(1)定义一个二维数组C[m][n]来存储子句集S,其中n为子句集S中所有子句所含文字的最大数,则C[i]表示S中子句C i;C[i][0]表示子句C i广义文字的个数,C[i][ j]表示子句C i中第j个广义文字,i Î{1 2 m},j Î{1 2 n};(2)定义一个二维数组Com[i][ j],Com[i][ j]表示子句C i中第j个广义文字的复杂度;(3)定义一个一维数组num[i],num[i]表示子句C i中基广义文字的个数,num[θ[i]]表示子句C i进行θ替换后生成的新的基广义文字的个数;(4)变量k用于标记当前子句的位置;(5)定义两个一维数组p[k]和R[n],用p[i]记录子句C k中当前搜索位置,而R[1 2 k]来储存在S中目前的路径(k表示路径的有效长度);(6)定义与二维数组C[i][ j]相对应的变量t[i][ j](i Î{1 2 m},j Î{1 2 n}),在同一路径上的t[i][ j] = 1的两个广义文字是α-归结对;(7)定义与C[i]相对应的数组t[i],用于保存子句C[i]中所对应的t[i][ j];(8)定义一个二维数组G[i][p[i]],G[i][p[i]]表示子句C i中当前路径p[i]的所有基例。
详细的算法如下:(1)置循环变量k = 0,p(0) = 1,t[i][ j] = 0,R[0] = C[0][p[0]]。
(2)判断是否存在路径R[1 2 m]上广义文字对应的t[i][ j]全为0。
(2.1)若存在,则选择这样路径中复杂度最高的基广义文字C[i][ j],此时会出现两种情况:(2.1.1)这样的广义文字存在多个,则选择将C[i][ j]作为初始文字,G[i][p[i]]=:G[i][p[i]] {C[i][ j]},转到第(4)步;(2.1.2)这样的广义文字若不存在,则转到(3.2)。
(2.2)若不存在,则S是α-不可满足的且输出G[i][p[i]],算法结束。
(3)在S中选定C[k](3.1)若S中含有基广义文字,则在S中选定这样的子句C[i]:A.C[i]中含有最复杂的基广义文字C[i][ j];B.满足条件A的最短的子句,G[i][p[i]]=:G[i][p[i]] {C[i][ j]}。
(3.2)若S中不含有基广义文字,则在S中选定这样的子句C[i]:A.C[i]中含有最复杂的广义文字C[i][ j];B.满足条件A的最短的子句。
(3.3)如果i ¹k,则将子句C[i]与C[k]的位置对调,t[i]与t[k]的位置对调。
(3.4)如果j ¹p[k],则将C[i][ j]与C[i][k]的位置对调,t[i][ j]与t[i][k]的位置对调。
(4)在后m - 1 - k中选择C[k + 1],C[k + 1]中含有与C[k][p[k]]为α-归结对的广义文字(4.1)若这样的子句不存在:A.若m - 1 - k > 2,则删除前k + 1个子句,重置S。
a.C[i] = C[i + k + 1],i = 1 2 m - 2 - k;b.C[i] = 0;c.k = 0,转到第(1)步;B.若m - 1 - k = 2,如果C[m - 1]与C[m - 2]是α-归结对,则子句集S是α-不可满足的,算法结束;C.若m - 1 - k = 2,如果C[m - 1]与C[m - 2]不是α-归结对,则子句集S是α-可满足的,算法结束;D.若m - 1 - k £ 1,则子句集S是α-可满足的,算法结束。
(4.2)若这样的子句有多个:(4.2.1)选择这样的子句C[i]。
a.含有与C[k][p[k]]为α-归结对的广义文字;b.C[i][ j]中的变量对于子句C[i]中的其他广义文字是独立的;c.满足条件a和b的且含有复杂度最高的广义文字的子句;d.满足条件a、b 和c 的最短的子句;(4.2.2)否则,选择满足如下条件的子句C[i]:a.含有与C[k][p[k]]为α-归结对的复杂度最高的广义文字;b.满足条件a 的最短的子句。
(4.3)如果i ¹k + 1,则将子句C[i]与C[k + 1]的位置对调,t[i]与t[k + 1]的位置对调。
(4.4)如果j ¹p[k + 1],则将C[i][ j]与C[k + 1][p[k + 1]]的位置对调,t[i][ j]与t[i][k + 1]的位置对调。
(4.5)查找替换θ[p[k + 1]],使得C[k][p[k]]=┐C[k+1][θ[p(k+1)]],并将C[k + 1] 进行替换θ[p[k + 1]] ,C[k + 1][θ[p[k + 1]]] =:C[k + 1] ,G[k + 1][p[k + 1]]=:G[k + 1][p[k + 1]] {C[k + 1][θ[p[k +1]]},t[k][p[k]] = 1,t[k + 1][p[k + 1]] = 1。
(4.6)num[k + 1] = :num[k + 1] + num[θ[p[k + 1]]] ,且判断“num[θ[p[k + 1]]] = 0?”:(4.6.1)如果是,则k = k - 1,转到(4.6.2);(4.6.2)判断“k = 0?”;(4.6.2.1)如果是,判断“num[θ[p[k]]] = 0?”:a.如果是,则转到第(3)步;b.如果否,则将num[θ[p[k]]]个基广义文字中复杂度最高的作为初始文字,t[k + 1][p[k + 1]] =1 ,G[k + 1][p[k + 1]] =:G[k + 1][p[k + 1]] {C[k + 1][θ[p[k + 1]]},转到第(4)步;(4.6.2.2)如果否,判断“num[θ[p[k]]] = 0?”;a.如果是,则k = k - 1,则转到(4.6.2);b.如果否,则选择C[k][p[k]]作为初始文字,C[k][p[k]]是C[k][ j](j ³p[k])中复杂度最高的基广义文字,t[k][p[k]] = 1,G[k][p[k]]=:G[k][p[k]] {C[k][p[k]},转到第(4)步;(4.6.3)如果否,且判断“k + 1 = m - 1?”;(4.6.3.1)如果是,则重置S,初始子句和子句中的初始位置,即C[k + 1]为初始子句,num[θ[p[k + 1]]]个基广义文字中最复杂的广义文字作为初始文字,t[k][p[k]] = 1,G[k + 1][p[k + 1]]=:G[k + 1][p[k + 1]] {C[k + 1][p[k + 1]]},转到第(4)步;(4.6.3.2)如果否,则转到第(4)步。