第二部分:第5章 Prolog基础 第5章Pro|og基础 本章介绍学习关于 Prolog编程最基本的内容,包括Horn子句、 Prolog推理 机、程序控制、 Prolog算符等。 ● Visual Prolog是面向对象的、严格类型化的和模式检验的。在编写 Visual log程序时,必须掌握这些内容。但在这里,我们将集中于编写代码这 个核心问题,也就是说,编写这些代码时暂时不考虑类、类型和模式。 我们将使用包含在Vsua| Prolog6中的PIE例子。PIE是一个经典的 Prolog 解释器,通过使用它,可以学会和试验 Prolog程序,而不必关心类、类型 等方面的知识。 ●内容是基于使用 Build6004或以后的 Visual Prolog6版本,否则,PIE应 用程序将不会像我们描述的这样工作。这个编译号可以在VDE的Abou对话 框中找到 2004.11.3 A|程序设计
2004.11.3 AI程序设计 1 第二部分:第5章 Prolog基础 第5章 Prolog基础 ⚫ 本章介绍学习关于Prolog编程最基本的内容,包括Horn子句、Prolog推理 机、程序控制、Prolog算符等。 ⚫ Visual Prolog是面向对象的、严格类型化的和模式检验的。在编写Visual Prolog程序时,必须掌握这些内容。但在这里,我们将集中于编写代码这 个核心问题,也就是说,编写这些代码时暂时不考虑类、类型和模式。 ⚫ 我们将使用包含在Visual Prolog 6中的PIE例子。PIE是一个经典的Prolog 解释器,通过使用它,可以学会和试验Prolog程序,而不必关心类、类型 等方面的知识。 ⚫ 内容是基于使用Build 6004或以后的Visual Prolog 6版本,否则,PIE应 用程序将不会像我们描述的这样工作。这个编译号可以在VDE的About对话 框中找到
第二部分:第5章 Prolog基础 第5章Pro|og基础 5.1Hon子句逻辑 52 Prolog推理机 5.3扩展家庭定理 54 Prolog是一种编程语言 5.5程序控制 6 Prolog算符 本章小结与习题 2004.11.3 A|程序设计
2004.11.3 AI程序设计 2 第二部分:第5章 Prolog基础 第5章 Prolog基础 5.1 Horn子句逻辑 5.2 Prolog推理机 5.3 扩展家庭定理 5.4 Prolog是一种编程语言 5.5 程序控制 5.6 Prolog算符 本章小结与习题
第二部分:第5章 Prolog基础 5.1Horn子句逻辑 ● Visual prolog和其他用语都是基于Horn子句逻辑的。Horn子句逻 辑是对事物及其相互关系进行推理的形式系统 ●在自然语言中,我们可以这样表达一个陈述句 John是Bi的父亲 ●这里我们涉及两个实体,John和BⅢ,以及他们之间的关系,即一 个是另一个的父亲。在Horn子句逻辑中,可以这样形式化地表述上 面的陈述句: father( Bill John") 上面的 father是带有两个参量的一个谓词或关系,它表示第二个人 是第一个人的父亲 2004.11.3 A|程序设计
2004.11.3 AI程序设计 3 第二部分:第5章 Prolog基础 5.1 Horn子句逻辑 ⚫ Visual Prolog和其他用语都是基于Horn子句逻辑的。Horn子句逻 辑是对事物及其相互关系进行推理的形式系统。 ⚫ 在自然语言中,我们可以这样表达一个陈述句: John是Bill 的父亲. ⚫ 这里我们涉及两个实体,John和Bill,以及他们之间的关系,即一 个是另一个的父亲。在Horn子句逻辑中,可以这样形式化地表述上 面的陈述句: father(“Bill”, “John”). ⚫ 上面的father是带有两个参量的一个谓词或关系,它表示第二个人 是第一个人的父亲
第二部分:第5章 Prolog基础 5.1Horn子句逻辑 ●像“John是B的父亲”这样的陈述称为事实,而“X是Z的祖父, 如果X是Y的父亲且Y是Z的父亲”称为规则 ●我们可以用事实和规则来形成定理,一个定理是事实和规则的集合, 让我们陈述一个小定理 father(" Bill", John). father Pam"Bill") grandFather(Person, Grand Father) father(Person, Father) father(Father, GrandFather) 2004.11.3 A|程序设计
2004.11.3 AI程序设计 4 第二部分:第5章 Prolog基础 5.1 Horn子句逻辑 ⚫ 像“John是Bill 的父亲”这样的陈述称为事实,而“X是Z的祖父, 如果X是Y的父亲且Y是Z的父亲”称为规则。 ⚫ 我们可以用事实和规则来形成定理,一个定理是事实和规则的集合, 让我们陈述一个小定理: father("Bill", "John"). father("Pam", "Bill"). grandFather(Person, GrandFather) :- father(Person, Father), father(Father, GrandFather)
第二部分:第5章 Prolog基础 5.1Horn子句逻辑 ●这个定理的作用是回答这样一些问题: ●John是Sue的父亲吗? ●谁是Pam的父亲? ●John是Pam的祖父吗? 这些问题称为目标(goa)。它们可以这样形式化表述: .?father( Sue, John") .?father("Pam",X) 0?- grand Father( Pam, John") 2004.11.3 A|程序设计
2004.11.3 AI程序设计 5 第二部分:第5章 Prolog基础 5.1 Horn子句逻辑 ⚫ 这个定理的作用是回答这样一些问题: ⚫ John是Sue的父亲吗? ⚫ 谁是Pam的父亲? ⚫ John是Pam的祖父吗? ⚫ ... ⚫ 这些问题称为目标(goal)。它们可以这样形式化表述: ⚫ ?- father("Sue", "John"). ⚫ ?- father("Pam", X). ⚫ ?- grandFather("Pam", "John")
第二部分:第5章 Prolog基础 5.1Horn子句逻辑 ●这些问题被称为目标子句( goal clause)或简称为目标(goa)。 事实( facts)、规则( rules)及目标( goals)合起来称为Horn 子句,因此得名Horn子句逻辑。 个 Prolog程序是一个定理和目标的集合。当程序开始时,它试图 使用定理,为目标找到一个解。 2004.11.3 A|程序设计 6
2004.11.3 AI程序设计 6 第二部分:第5章 Prolog基础 5.1 Horn子句逻辑 ⚫ 这些问题被称为目标子句(goal clause)或简称为目标(goal)。 事实(facts)、规则(rules)及目标(goals)合起来称为Horn 子句,因此得名Horn子句逻辑。 ⚫ 一个Prolog程序是一个定理和目标的集合。当程序开始时,它试图 使用定理,为目标找到一个解
第二部分:第5章 Prolog基础 5.2 Prolog推理机 ●PIE( Prolog inference Engine),即 Prolog推理机,随Vsua Prolog6一起提供。 ●在开始之前,必须先安装和建立PIE 1)在 Windows开始菜单中选择“安装例子”,( Start-> Visual Prolog 6->Install Examples) 2)用VDE打开PIE项目,且运行该程序。 2004.11.3 A|程序设计
2004.11.3 AI程序设计 7 第二部分:第5章 Prolog基础 5.2 Prolog推理机 ⚫ PIE (Prolog Inference Engine),即Prolog推理机,随Visual Prolog 6一起提供。 ⚫ 在开始之前,必须先安装和建立PIE 1) 在Windows开始菜单中选择“安装例子” ,(Start -> Visual Prolog 6 -> Install Examples)。 2) 用VDE打开PIE项目,且运行该程序
第二部分:第5章 Prolog基础 5.2 Prolog推理机 ●当程序启动后,其情形如下图5.1所示。 Prolog Inference Engine x File Edit Engine Window Help 口日+曲居茴画■? og Ro eady Use OnlineHelp to see descriptions To load example files choose File\Consult menu entry Type your predicate calls here like write[ Hello world!]. <Set Caret here and press Enter 图5.1 Prolog 推理机 Ready Stack: 2396 Heap:196608 2004.11.3 A|程序设计 8
2004.11.3 AI程序设计 8 第二部分:第5章 Prolog基础 5.2 Prolog推理机 ⚫ 当程序启动后,其情形如下图5.1所示。 图5.1 Prolog 推理机
第二部分:第5章 Prolog基础 5.2 Prolog推理机 ●选择菜单File->NeW,键入前面的父亲子句和祖父子句,如图5.2 所示。 FILE4 PRO 5:57 Insert Indent father("Bill,john") father ("Pam,"Bill) grandFather(Person, GrandFather): father(Father, GrandFather), father(Person, Father). 图5.2子句代码 2004.11.3 A|程序设计
2004.11.3 AI程序设计 9 第二部分:第5章 Prolog基础 5.2 Prolog推理机 ⚫ 选择菜单File -> New,键入前面的父亲子句和祖父子句,如图5.2 所示。 图5.2 子句代码
第二部分:第5章 Prolog基础 5.2 Prolog推理机 ●当编辑器窗口激活时,选择 Engine→> Reconsult,将会把文件装 入到推理机。在对话框中,还将得到这样一个消息: Reconsulted from:.... pie Exe FILE4 PRO 无论用编辑器如何装入,其内容都不会保存到文件之中。如果想要 保存内容,必须使用菜单命令File->Save。 ●菜单Fle-> Consult不管文件是否因编辑而打开,都会装载磁盘文 件中的内容。 旦查阅过定理,就可以回答各种目标 2004.11.3 A|程序设计 10
2004.11.3 AI程序设计 10 第二部分:第5章 Prolog基础 5.2 Prolog推理机 ⚫ 当编辑器窗口激活时,选择Engine -> Reconsult,将会把文件装 入到推理机。在对话框中,还将得到这样一个消息: Reconsulted from: ....\pie\Exe\FILE4.PRO ⚫ 无论用编辑器如何装入,其内容都不会保存到文件之中。如果想要 保存内容,必须使用菜单命令File -> Save。 ⚫ 菜单File -> Consult不管文件是否因编辑而打开,都会装载磁盘文 件中的内容。 ⚫ 一旦查阅过定理,就可以回答各种目标