逻辑程式设计( 二 )

AmB1,B2,…,Bn,其中Ai(1≤im)、Bj(1≤jn)都是原子公式,分别代表结论和前提的形式 。前提部分是各原子的合取式,构成子句体,结论部分最多只有一个原子,称为子句头 。由此可将HORN子句分成两个基本类型:①有头HORN子句(用来代表一条规则),例如,grandfather(x,z)←father(x,y),father (y,z)代表:xy的父亲且y是z的父亲,则x是z的祖父 。有头无体的HORN子句是一断言(用来代表一个事实) 。例如,father(A,B)代表:AB的父亲,father(B,C)代表:BC的父亲 。②无头HORN子句,称为目标语句(用来代表结论的否定式),例如,←grandfather(A,C)代表:A不是C的祖父 。逻辑学家A.霍恩对这类子句性质作了详尽的研究,HORN子句即因此得名 。从问题归约的角度看,可将HORN子句解释为一过程,它将问题(目标)A归约为若干子问题(子目标),每一子问题Bi(1≤in)又可解释为对其他过程(HORN子句)的调用 。有头无尾的HORN子句则代表一个已知其解的基元问题 。过程调用实际上是使构成子句体的一个原子(子目标)与某一子句头匹配,这就是运用归结原理中的合一的过程 。因此逻辑程式的执行过程也就可以看成是定理证明过程,其中解释程式起定理证明器或问题求解器的作用 。发展HORN子句的过程调用(B1,B2,…,Bn)可按任意次序进行,适合于平行处理 。HORN子句可作过程性的解释也可作陈述性的解释,运用比较方便 。因此,以HORN子句为基础的逻辑程式设计语言PROLOG受到人们的重视(见PROLOG语言) 。日本的第五代计算机系统的计画也推动了逻辑程式设计的研究 。也有人认为,不同类型的问题需要不同风格的程式设计方法,在下一代的知识信息处理系统中除逻辑程式设计之外,还必须重视面向对象的程式设计、面向存取的程式设计、规则型程式设计,此外,建立与知识信息处理相适应的程式设计环境也是重要的课题 。