%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Set union for ordered lists. This involves learning one extra clause. % to complete the definition. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Mode declarations :- nosplit? :- set(i,1), set(c,2), set(h,20)? :- modeb(1,+int =< +int)? :- modeb(1,setuni(+ilist,[+int|+ilist],-ilist))? :- modeh(1,setuni([+int|+ilist],[+int|+ilist],[-int|-ilist]))? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Types ilist([]). ilist([H|T]) :- int(H), ilist(T). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Positive examples setuni([],X,X). setuni(X,[],X). setuni([E1|S1],[E2|S2],[E2|S3]) :- E2=