第二章 归结推理方法

  
2.6 归结法与Prolog 语言

  逻辑程序设计始于70年代,由Kowalski 和Colmerauer 引入的。逻辑对人工智能来说是一种重要的知识表示方法和推理方法,而且还可对逻辑给予一种过程解释,从而形成一种程序设计语言,如prolog。这种逻辑语言是一种描述性(表示问题)语言,其控制(如何求解)过程由逻辑程序设计系统本身实现,无需程序设计人员给出问题算法。Roussel于1972年在马赛大学实现了一种逻辑程序设计的解释程序prolog。这个系统的控制过程是基于归结原理的,当然作为一种逻辑程序设计系统来说不是必须基于归结方法的。

  
2.6.1 Prolog 语句
  Prolog 有三种形式语句
  
语句  B←,…,
  含义是∧…∧→B,相当于子句~∨…∨~∨B,可视作人工智能系统中的推理规则。可将该语句看作一个过程。B为过程头,是过程名,而{,…,}为过程体。

  
语句  ←,…,
  含义是∧…∧→F,相当于子句~∨…∨~,可视作推理的目标,或称目标子句。实际的目标是()…(xk)(∧…∧),在使用归结法求解时,需对目标求否定再SKOLEM标准化得~∨…∨~。这语句是个无名的过程,过程体为{,…,}。

  
语句  B←
  含义是公式B无条件地为真。可视作已知事实,是过程体为空过程。
  另外空语句□表矛盾语句,相当于空子句,表停机语句。
  Prolog 解释过程是归结反演过程,归结的描述是若有语句
     ← ,…,,…,
     B←,…,Cm
  其中B与有 mguθ,则有归结式
     ←(,…,-1,,…,Cm ,+1,…,
  如将←,…,理解为目标,B←,…,Cm 理解为规则,则归结式就是新的目标了。