parent(tom,bob). parent(pam,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). grandparent(X,Y):- parent(X,Z),parent(Z,Y). male(tom). male(bob). male(jim). female(pam). female(liz). female(ann). female(pat). sibling(X,Y):- parent(Z,X),parent(Z,Y). sister(X,Y):- sibling(X,Y),female(X). mother(X,Y):- parent(X,Y),female(X). member(X, [X|T]). member(X, [H|T]):- member(X,T). max([X],X). max([H|T],H):- max(T,Y),H>Y. max([H|T],Y):- max(T,Y),Y>H. fact(X,1):- X<2. fact(X,Y):- X1 is X - 1, fact(X1,X2), Y is X2 * X. length([],0). length([H|T],Y):- length(T,X), Y is X + 1. % cat([1,2],[3,4],[1|2,3,4]) % cat([2],[3,4],[2|3,4]) % cat([],[3,4],[3,4]) % rev([1,2],[],Y) Y=[2,1] by rule 2. % rev([2],[1],Y) Y=[2,1] by rule 2. % rev([],[2,1],Y) Y=[2,1] by rule 1. mkkpal(X,Y):-rev(X,X,Y). % del(2,[1,2,3],[1,3]). % del(2,[1|2,3],[1|3]). % del(2,[2|3],[3]).