第2章逻辑程序设计语言 功能一般表示对象间的因果关系、蕴含关系或对应关系 例如,上面的第一条规则就表示“如果X是动物,并且Ⅹ有 羽毛,则Ⅹ是鸟”;第二条规则就表示“X是Y的祖父,如果存 在Z,X是Z的父亲并且Z又是Y的父亲” 作为特殊情形,规则中的谓词也可以只有谓词名而无参量。 例如: run:-start, stepl(X), step2(X), end 也是一个合法规则
第 2 章 逻辑程序设计语言 功能 一般表示对象间的因果关系、 蕴含关系或对应关系。 例如, 上面的第一条规则就表示“如果X是动物, 并且X有 羽毛, 则X是鸟” ; 第二条规则就表示“X是Y的祖父, 如果存 在Z, X是Z的父亲并且Z又是Y的父亲” 。 作为特殊情形, 规则中的谓词也可以只有谓词名而无参量。 例如: run:-start,step1(X),step2(X),end. 也是一个合法规则
第2章逻辑程序设计语言 3.问题( question) 格式?-〈谓词名〉(〈项表〉){,〈谓词名〉(〈项表〉)} 例如: student(john) -like(mary, X) 就是两个合法的问题。 可以看出,这里的问题也就是Horn子句逻辑中的目标子句, 只是形式略有不同。 功能问题表示用户的询问,它就是程序运行的目标 问题可以与规则及事实同时一起给出,也可以在程序运行 时临时给出 例如,上面的第一个问题的意思是“约翰是学生吗?”,第 个问题的意思是“玛玛丽喜欢谁?
第 2 章 逻辑程序设计语言 3. 问题(question) 格式 ?-〈谓词名〉(〈项表〉){,〈谓词名〉(〈项表〉)}. 例如: ? -student(john). ? -like(mary,X). 就是两个合法的问题。 可以看出, 这里的问题也就是Horn子句逻辑中的目标子句, 只是形式略有不同。 功能 问题表示用户的询问, 它就是程序运行的目标。 问题可以与规则及事实同时一起给出, 也可以在程序运行 时临时给出。 例如, 上面的第一个问题的意思是“约翰是学生吗?” , 第 二个问题的意思是“玛玛丽喜欢谁 ?
第2章逻辑程序设计语言 212 PROLOG的程序 PROLOG程序一般由一组事实、规则和问题组成。问题 是程序执行的起点,称为程序的目标。例如下面就是一个 PROLOG程序 likes(bell, sports) likes(mary, music) likes(mary, sports) likes(jane, smith) friendgjohn, X): -likes(X, reading), likes(X, music) friendgjohn, X): -likes(X, sports), likes(X, music) ?-friendgjohn,Y)
第 2 章 逻辑程序设计语言 2.1.2 PROLOG的程序 PROLOG程序一般由一组事实、 规则和问题组成。 问题 是程序执行的起点, 称为程序的目标。 例如下面就是一个 PROLOG程序。 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). ?-friend(john,Y)
第2章逻辑程序设计语言 可以看出,这个程序中有四条事实、两条规则和一个问题 其中事实、规则和问题都分行书写。规则和事实可连续排列 在一起,其顺序可随意安排,但同一谓词名的事实或规则必须集 中排列在一起。问题不能与规则及事实排在一起,它作为程序 的目标要么单独列出,要么在程序运行时临时给出。 这个程序的事实描述了一些对象(包括人和事物)间的关系 而规则则描述了john交朋友的条件,即如果一个人喜欢读书并 且喜欢音乐(或者喜欢运动和喜欢音乐,则这个人就是john的朋 友(当然,这个规则也可看作是john朋友的定义);程序中的问题 是“约翰的朋友是谁?
第 2 章 逻辑程序设计语言 可以看出, 这个程序中有四条事实、 两条规则和一个问题。 其中事实、规则和问题都分行书写。 规则和事实可连续排列 在一起, 其顺序可随意安排, 但同一谓词名的事实或规则必须集 中排列在一起。 问题不能与规则及事实排在一起, 它作为程序 的目标要么单独列出, 要么在程序运行时临时给出。 这个程序的事实描述了一些对象(包括人和事物)间的关系; 而规则则描述了john交朋友的条件, 即如果一个人喜欢读书并 且喜欢音乐(或者喜欢运动和喜欢音乐), 则这个人就是john的朋 友(当然, 这个规则也可看作是john朋友的定义);程序中的问题 是“约翰的朋友是谁?”
第2章逻辑程序设计语言 当然, PROLOG程序中的目标可以变化,也可以含有多个语 句(上例中只有一个)。如果有多个语句,则这些语句称为子目标 例如对上面的程序,其问题也可以是
第 2 章 逻辑程序设计语言 当然, PROLOG程序中的目标可以变化, 也可以含有多个语 句(上例中只有一个)。如果有多个语句, 则这些语句称为子目标。 例如对上面的程序