permute([],[]). permute([X|Y],[U|V]) :- delete(U,[X|Y],W),permute(W,V). delete(X,[X|Y],Y). delete(U,[X|Y],[X|Z]) :- delete(U,Y,Z).