使用PROLOG进行逻辑编程5


 

CPascal等经典编程语言相比,Logic可以优雅,紧凑和声明地表达关系。自动定理证明甚至能够决定知识库是否在逻辑上需要查询。存储在知识库中的证明微积分和知识是严格分开的。子句正规形式中描述的公式可以用作任何定理证明器的输入数据,与所使用的证明演算无关。这对于推理和知识表示具有重要价值。

如果一个人希望实现不可避免地具有程序性组件的算法,那么纯粹的声明性描述往往是不够的。逻辑编程的先驱之一罗伯特科瓦尔斯基(Robert Kowalski)用这个公式提出了这一观点

 

算法=逻辑+控制。

这个想法在PROLOG语言中得以实现。PROLOG用于许多项目,主要用于人工智能和计算语言学。我们现在将简要介绍这种语言,介绍最重要的概念,展示它的优点,并将其与其他编程语言和定理证明进行比较。那些寻找完整编程课程的人可以使用[Bra11CM94]和手册[Wie04Dia04]等教科书。

PROLOG语言的语法只允许使用Horn子句。逻辑表示法和PROLOG的语法并列在下表中:

 

图片

PL1 /子句正常形式PROLOG描述

图片

¬1 ∨¬ BB一个1
A 。规则

A 1 B一个1
A 。规则

图片

事实

图片

¬1 ∨¬1
A 。询问

图片

¬A 1 1
A 。询问

图片

 

W. Ertel人工智能导论67

计算机科学本科专业,

DOI
10.1007 / 978-0-85729-299-5_5
©Springer-Verlag London Limited 2011

 

 

1.    
孩子(奥斯卡,莫文蔚,坦诚)。

2.    
孩子(玛丽卡伦,坦诚)。

3.    
孩子(前夕,安妮,奥斯卡)。

4.    
孩子(亨利,安妮,奥斯卡)。

5.    
孩子(伊索尔德,安妮,奥斯卡)。

6.    
孩子(克莱德,玛丽,oscarb)。7

8个孩子(XZY):孩子(XYZ)。9

1. 
后代(XY):子(XYZ)。

2. 
后代(XY):子(XUV),后代(UY)。

 

图片

5.1 PROLOG程序与家庭关系

 

这里A 1 AmAB是文字。与PL1一样,文字是用谓词符号构造的,其中术语作为参数。正如我们在上表中所看到的,在PROLOG中,在严格的逻辑意义上没有否定,因为文字的符号由其在子句中的位置决定。

 

图片


 


ETC注销ETC充值ETC客服ETC扣费查询


ETC发行合作

发表回复