?- consult('combinatorial_sets.pro'). true. ?- perm(s(cat,dog),p(A,B)). A = cat, B = dog . ?- perm(s(cat,dog),p(A,B)),write(p(A,B)),nl,fail. p(cat,dog) p(dog,cat) false. ?- perm(s(red,yellow,blue),p(X,Y,Z)),write(p(X,Y,Z)),nl,fail. p(red,yellow,blue) p(red,blue,yellow) p(yellow,red,blue) p(yellow,blue,red) p(blue,red,yellow) p(blue,yellow,red) false. ?- comb(set(2,3,5),comb(A,B),extras(C)). A = 2, B = 3, C = 5 . ?- comb(set(2,3,5),comb(A,B),extras(C)),write(result(combo(A,B),extras(C))),nl,fail. result(combo(2,3),extras(5)) result(combo(2,5),extras(3)) result(combo(3,5),extras(2)) false. ?- comb(set(2,3,5,7),comb(A,B),extras(C,D)),write(result(combo(A,B),extras(C,D))),nl,fail. result(combo(2,3),extras(5,7)) result(combo(2,5),extras(3,7)) result(combo(2,7),extras(3,5)) result(combo(3,5),extras(2,7)) result(combo(3,7),extras(2,5)) result(combo(5,7),extras(2,3)) false. ?- comb(set(2,3,5,7,9),comb(A,B),extras(C,D,E)),write(result(combo(A,B),extras(C,D,E))),nl,fail. result(combo(2,3),extras(5,7,9)) result(combo(2,5),extras(3,7,9)) result(combo(2,7),extras(3,5,9)) result(combo(2,9),extras(3,5,7)) result(combo(3,5),extras(2,7,9)) result(combo(3,7),extras(2,5,9)) result(combo(3,9),extras(2,5,7)) result(combo(5,7),extras(2,3,9)) result(combo(5,9),extras(2,3,7)) result(combo(7,9),extras(2,3,5)) false. ?- comb(set(cat,dog,bird,bees,chicken),comb(A,B),extras(C,D,E)),write(result(combo(A,B),extras(C,D,E))),nl,fail. result(combo(cat,dog),extras(bird,bees,chicken)) result(combo(cat,bird),extras(dog,bees,chicken)) result(combo(cat,bees),extras(dog,bird,chicken)) result(combo(cat,chicken),extras(dog,bird,bees)) result(combo(dog,bird),extras(cat,bees,chicken)) result(combo(dog,bees),extras(cat,bird,chicken)) result(combo(dog,chicken),extras(cat,bird,bees)) result(combo(bird,bees),extras(cat,dog,chicken)) result(combo(bird,chicken),extras(cat,dog,bees)) result(combo(bees,chicken),extras(cat,dog,bird)) false. ?- halt.