Декартовое произведение двух списков
domains
t_list=Integer*
d_list=t_list*
predicates
decart(t_list,t_list,d_list).
insert(Integer,t_list,d_list,d_list).
clauses
insert(_,[],X,X).
insert(L1,[L2|T],X1,X2) :- insert(L1,T,X1,X), X2= [[L1,L2]|X].
decart([],_,[]).
decart([L1|T],L2,X) :- decart(T,L2,X1), insert(L1,L2,X1,X2),X = X2.
goal
decart([1,3,4],[5,7],X).
|