append([],L,L). append([H|T1],L2,[H|T3]):-append(T1,L2,T3). % append([1|[2]],[3,4],[1|[2,3,4]]):-append([2],[3,4],[2,3,4]). % append([2|[]],[3,4],[2|[3,4]]):-append([],[3,4],[3,4]). % append([],[3,4],[3,4]). prefix(A,B):-append(A,_,B). append(A,B,C,D):-append(A,B,AB),append(AB,C,D). remove(A,B,C):-append(L1,A,L2,B),append(L1,L2,C). isList([A|B]):-isList(B). isList([]). %:-isList([1,2]). %:-append([1,2],X,[1,2,3,4]),write(X). listlen([],0) : listlen([H|T],N) :- listlen(T,Nt), N is Nt+1. lenacc(L,N) :- lenacc(L,0,N). lenacc([],A,A) :-!,fail. lenacc([H|T],A,N) :- Ax is A+1, lenacc(T,Ax,N). % lenacc([1,2],0,X). -> yes X=2 % lenacc([1,2],0,X). if lenacc([1|[2]],0,X) :- 1 is 0+1, lenacc([2],1,X). % lenacc([2],1,X). if lenacc([2|[]],1,X) :- 2 is 1+1, lenacc([],2,X). % lenacc([],2,X) if lenacc([],2,2). % lenacc(L,0,3). -> yes X=2 % lenacc([H1|T1],0,3) :- 1 is 0+1, lenacc(T1,1,3). % lenacc([H2|T2],1,3) :- 2 is 1+1, lenacc(T2,2,3). % lenacc([H3|T3],2,3) :- 3 is 2+1, lenacc(T3,3,3). % lenacc([],3,3). % lenacc([H4|T4],3,3) :- 4 is 3+1, lenacc(T4,4,3). sibling(A,B):-A=B,!,fail. sibling(A,B):-parentOf(A,P),parentOf(B,P). add(A,B,C) :- var(C),!,C is A + B. add(A,B,C) :- var(A),!,A is C - B. add(A,B,C) :- var(B),!,B is C - A. add(A,B,C) :- C is A + B. %person(X) :- human(X),tall(X).