1.事实(fact)
格式:〈谓词名〉 (〈项表〉).
例子:(注意末尾的.不能省略)
student(john).//约翰是学生 like(mary,music).//玛丽喜欢音乐
2.规则(rule)一般表示对象间的因果关系、蕴含关系或对应关系
格式:〈谓词名〉(〈项表〉):-〈谓词名〉(〈项表〉){,〈谓词名〉(〈项表〉)}.
bird(X):-animal(X),has(X,feather). run:-start,step1(X),step2(X),end.
其中:-表示if 其左边为规则的结论,右边为前提。逗号表示and(逻辑与)
同一谓词名的事实或规则必须集中排列在一起
3.问题(question)——表示用户的询问, 它是程序运行的目标。
格式: ?-〈谓词名〉(〈项表〉){,〈谓词名〉(〈项表〉)}.
?-student(john). ?-like(mary,X).
例:
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). 则求解目标:friend(john,Y). 新目标: likes(X,reading),likes(X,music).
两个谓词可匹配合一, 是指两个谓词的名相同, 参量项的个数相同, 参量类型对应相同, 并且对应参量项还满足下列条件:
(1) 如果两个都是常量, 则必须完全相同。
(2) 如果两个都是约束变量, 则两个约束值必须相同。
(3) 如果其中一个是常量, 一个是约束变量, 则约束值与常量必须相同。
(4) 至少有一个是自由变量。
例:
pre1(″ob1″,″ob2″,Z) pre1(″ob1″,X ,Y)
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225075.html原文链接:https://javaforall.net
