$ pl Welcome to SWI-Prolog (Multi-threaded, Version 5.6.24) Copyright (c) 1990-2006 University of Amsterdam. SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Please visit http://www.swi-prolog.org for details. For help, use ?- help(Topic). or ?- apropos(Word). ?- ['combosets.pro']. % combosets.pro compiled 0.00 sec, 7,312 bytes Yes ?- combo(set(a,b,c),C,X). Correct to: combos(set(a, b, c), C, X)? C = combo(a, b) X = extra(c) Yes ?- combo(set(1,2,3,7),C,X). Correct to: combos(set(1, 2, 3, 7), C, X)? C = combo(1, 2) X = extras(3, 7) ; C = combo(1, 3) X = extras(2, 7) ; C = combo(1, 7) X = extras(2, 3) ; C = combo(2, 3) X = extras(1, 7) ; C = combo(2, 7) X = extras(1, 3) ; C = combo(3, 7) X = extras(1, 2) ; No ?- halt. $