?- consult('combosets.pro'). % combosets.pro compiled 0.01 sec, 7,384 bytes Yes ?- combos(set(X,Y,Z), combo(X,Y),extra(Z)). Yes ?- combos(set(1,2,3), COM,EX). COM = combo(1, 2) EX = extra(3) Yes ?- combos(set(1,2,3), COM,EX). COM = combo(1, 2) EX = extra(3) ; COM = combo(2, 3) EX = extra(1) ; COM = combo(1, 3) EX = extra(2) ; No ?- combos(set(a,b,c,d),Com,EX). Com = combo(a, b) EX = extras(c, d) ; Com = combo(a, c) EX = extras(b, d) ; Com = combo(a, d) EX = extras(b, c) ; Com = combo(b, c) EX = extras(a, d) ; Com = combo(b, d) EX = extras(a, c) ; Com = combo(c, d) EX = extras(a, b) ; No ?- combos(set(1,2,3,a,b),COM,EX). COM = combo(1, 2) EX = extras(3, a, b) ; COM = combo(1, 3) EX = extras(2, a, b) ; COM = combo(1, a) EX = extras(2, 3, b) ; COM = combo(1, b) EX = extras(2, 3, a) ; COM = combo(2, 3) EX = extras(1, a, b) ; COM = combo(2, a) EX = extras(1, 3, b) ; COM = combo(2, b) EX = extras(1, 3, a) ; COM = combo(3, a) EX = extras(1, 2, b) ; COM = combo(3, b) EX = extras(1, 2, a) ; COM = combo(a, b) EX = extras(1, 2, 3) ; No ?- halt. moxie - swenton - A2 >