?-ikes(mary1X).潼 或盍 ? -likes( mary, musIC)潼 或蕌 ?- friend(XY),潼 或 日日 ?-likes(bell sports),EE ikes(mary; musIc),蕌 friend(john,X).潼
2.1.3PR0L0G程序的运行机理 1.自由变量与约東变量 匹配合一 两个谓词可匹配合一,是指两个谓词的名相同, 参量项的个数相同,参量类型对应相同,并且对应 参量项还满足下列条件之一: (1)如果两个都是常量,则必须完全相同。蕌 (2)如果两个都是约束变量,则两个约束值必 须相同。蕌 (3)如果其中一个是常量,一个是约束变量, 则约束值与常量必须相同。 蕌(4)至少有一个是自由变量
考虑下面的各组谓词是否可匹配合一?蕌 pre("obl","ob2”,Z)蕌 prel("obl″,"ob3″,Y)潼 prel("obl","ob2″,z)蕌 pre("ob1"”,X,"ob3") pre("obl"”,"ob2”,Z)蕌 prel(obl",X,Y)
3.回溯蕌 所谓回溯,就是在程序运行期间,当某一个子 目标不能满足(即谓词匹配失败)时,控制就返回到 前一个已经满足的子目标(如果存在的话),并撤消 其有关变量的约束值,然后再使其重新满足。成 功后,再继续满足原子目标。如果失败的子目标前 再无子目标,则控制就返回到该子目标的上一级目 标(即该子目标谓词所在规则的头部)使它重新匹配。 回溯也是 PROLOG的一个重要机制
likes(bell, sports).HE likes(mary, music), Ax u likes(mary, sports).HE likes(jane, smith) friend (john, X): -likes(X, reading), likes(X, music friend(john, X): -likes(X, sports), likes(X, music ?-friend (john, Y) 则求解目标为 friend(john, Y 新目标蕌 likes(X, reading), likes(X, music).ti