第2章逻辑程序设计语言 ?-likes( mary, X) 或 ?-likes(mary, music) 或 ?-friend(X,Y) 或 ?-likes( bell, sports) likes(mary, music) friendgjohn, X) 等等。当然,对于不同的问题,程序运行的结果一般是不 样的
第 2 章 逻辑程序设计语言 ?-likes(mary,X). ?-likes(mary,music). ?-friend(X,Y). ?-likes(bell,sports), likes(mary,music), friend(john,X). 等等。当然, 对于不同的问题, 程序运行的结果一般是不 一样的
第2章逻辑程序设计语言 还需说明的是, PROLOG程序中的事实或规则一般称为它 们对应谓词的子句。例如上面程序中的前四句都是谓词 Likes的 子句。 PROLOG规定,同一谓词的子句应排在一起。从语句形 式和程序组成来看, PROLOG就是一种基于Homn子句的逻辑程 序。这种程序要求用事实和规则来求证询问,即证明所给出的 条件子句和无条件子句与目标子句是矛盾的,或者说程序中的 子句集是不可满足的。这就是所谓的 PROLOG的说明性语义
第 2 章 逻辑程序设计语言 还需说明的是, PROLOG程序中的事实或规则一般称为它 们对应谓词的子句。例如上面程序中的前四句都是谓词likes的 子句。 PROLOG规定, 同一谓词的子句应排在一起。 从语句形 式和程序组成来看, PROLOG就是一种基于Horn子句的逻辑程 序。 这种程序要求用事实和规则来求证询问, 即证明所给出的 条件子句和无条件子句与目标子句是矛盾的, 或者说程序中的 子句集是不可满足的。 这就是所谓的PROLOG的说明性语义
第2章逻辑程序设计语言 从 PROLOG的语句来看, PROLOG语言的文法结构相当简 单。但由于它的语句是Homn子句,而Hon子句的描述能力是很 强的,所以 PROLOG的描述能力也是很强的。例如,当它的事实 和规则描述的是某一学科的公理,那么问题就是待证的命题; 当事实和规则描述的是某些数据和关系,那么问题就是数据查 询语句;当事实和规则描述的是某领域的知识,那么问题就是 利用这些知识求解的问题;当事实和规则描述的是某初始状态 和状态变化规律,那么问题就是目标状态。所以, PROLOG语言 实际是一种应用相当广泛的智能程序设计语言 从上面最后一个目标可以看出,同过程性语言相比,一个 PROLOG程序,其问题就相当于主程序,其规则就相当于子程序, 而其事实就相当于数据
第 2 章 逻辑程序设计语言 从PROLOG的语句来看, PROLOG语言的文法结构相当简 单。但由于它的语句是Horn子句, 而Horn子句的描述能力是很 强的, 所以PROLOG的描述能力也是很强的。 例如, 当它的事实 和规则描述的是某一学科的公理, 那么问题就是待证的命题; 当事实和规则描述的是某些数据和关系, 那么问题就是数据查 询语句; 当事实和规则描述的是某领域的知识, 那么问题就是 利用这些知识求解的问题; 当事实和规则描述的是某初始状态 和状态变化规律, 那么问题就是目标状态。所以, PROLOG语言 实际是一种应用相当广泛的智能程序设计语言。 从上面最后一个目标可以看出, 同过程性语言相比, 一个 PROLOG程序, 其问题就相当于主程序, 其规则就相当于子程序, 而其事实就相当于数据
第2章逻辑程序设计语言 213 PROLOG程序的运行机理 1.自由变量与约束变量 PROLOG中称无值的变量为自由变量,有值的变量为约東 变量。一个变量取了某值就说该变量约束于某值,或者说该变 量被某值所约束,或者说该变量被某值实例化了。在程序运行 期间,一个自由变量可以被实例化而成为约束变量,反之,一个 约束变量也可被解除其值而成为自由变量
第 2 章 逻辑程序设计语言 2.1.3 PROLOG 1. PROLOG中称无值的变量为自由变量, 有值的变量为约束 变量。一个变量取了某值就说该变量约束于某值, 或者说该变 量被某值所约束, 或者说该变量被某值实例化了。 在程序运行 期间, 一个自由变量可以被实例化而成为约束变量, 反之, 一个 约束变量也可被解除其值而成为自由变量
第2章逻辑程序设计语言 2.匹配合 两个谓词可匹配合一,是指两个谓词的名相同,参量项的个 数相同,参量类型对应相同,并且对应参量项还满足下列条件之 1)如果两个都是常量,则必须完全相同。 (2)如果两个都是约束变量,则两个约束值必须相同 (3)如果其中一个是常量,一个是约束变量,则约束值与常 量必须相同。 (4)至少有一个是自由变量
第 2 章 逻辑程序设计语言 2. 两个谓词可匹配合一, 是指两个谓词的名相同, 参量项的个 数相同, 参量类型对应相同, 并且对应参量项还满足下列条件之 一: (1) 如果两个都是常量, 则必须完全相同。 (2) 如果两个都是约束变量, 则两个约束值必须相同。 (3) 如果其中一个是常量, 一个是约束变量, 则约束值与常 量必须相同。 (4) 至少有一个是自由变量