/*Program 4, Example on Page 40. */
 
:-['xref.def',dsutil,pdsdb].
 
fp((A,B),X) :- !,fp(A,Xa),(Xa=ok -> fp(B,X);X=Xa ).
fp(A,X) :- system(A) -> A,X=ok;
	   clause(A,B),fp(B,Xb),
	   (Xb\==ok -> X=Xb;
	    query(forall,A,true) -> X=ok; X=(A :- B) ).
 
 
isort([X|Xs],Ys) :- isort(Xs,Zs),insert(X,Zs,Ys).
isort([],[]).
 
insert(X,[Y|Ys],[Y|Zs]) :- X < Y,insert(X,Ys,Zs).
insert(X,[Y|Ys],[X,Y|Ys]) :- X =< Y.
insert(X,[],[X]).
 
 
:-end.
