编写一个描述亲属关系的PROLOG程序,然后再给出一些事实数据,建立一个小型演绎数据库。可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他亲属关系
时间: 2024-03-11 11:51:08 浏览: 10
一个简单的描述亲属关系的Prolog程序如下所示:
```
% 基本谓词:父亲和母亲
father(X, Y) :- male(X), parent(X, Y).
mother(X, Y) :- female(X), parent(X, Y).
% 亲属关系:祖父、祖母、兄弟、姐妹
grandfather(X, Y) :- male(X), parent(X, Z), parent(Z, Y).
grandmother(X, Y) :- female(X), parent(X, Z), parent(Z, Y).
brother(X, Y) :- male(X), parent(Z, X), parent(Z, Y), X \= Y.
sister(X, Y) :- female(X), parent(Z, X), parent(Z, Y), X \= Y.
% 其他亲属关系
uncle(X, Y) :- male(X), parent(Z, Y), brother(X, Z).
aunt(X, Y) :- female(X), parent(Z, Y), sister(X, Z).
cousin(X, Y) :- parent(Z, X), parent(W, Y), brother(Z, W), X \= Y.
```
然后,我们可以给出一些事实数据,建立一个小型演绎数据库:
```
% 事实数据
male(john).
male(bob).
male(tom).
male(jim).
female(kate).
female(ann).
female(lily).
female(lucy).
parent(john, bob).
parent(john, ann).
parent(bob, tom).
parent(bob, lily).
parent(tom, jim).
parent(tom, lucy).
parent(kate, bob).
parent(kate, ann).
parent(ann, tom).
parent(ann, lily).
parent(lily, jim).
parent(lily, lucy).
% 查询亲属关系
?- grandfather(john, jim). % true
?- aunt(lily, jim). % false
?- cousin(jim, lucy). % true
```