moxie - swenton - xsolve1 > 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). ?- consult('cryptores.pro'). % combosets.pro compiled 0.01 sec, 7,504 bytes % cryptores.pro compiled 0.01 sec, 10,648 bytes Yes ?- crypto(3,5,8). ERROR: Undefined procedure: crypto/3 ERROR: However, there are definitions for: ERROR: crypto/4 ERROR: crypto/5 ERROR: crypto/6 No ?- crypto(3,5,8,A). A = ex(3, +, 5) ; No ?- crypto(3,5,5,13,A). A = ex(5, +, ex(3, +, 5)) ; A = ex(3, +, ex(5, +, 5)) ; A = ex(5, +, ex(3, +, 5)) ; No ?- crypto(5,10,15,20,50,A). A = ex(ex(5, +, 10), +, ex(15, +, 20)) ; A = ex(15, +, ex(ex(5, +, 10), +, 20)) ; A = ex(ex(5, +, 10), +, ex(20, +, 15)) ; A = ex(15, +, ex(20, +, ex(5, +, 10))) ; A = ex(20, +, ex(ex(5, +, 10), +, 15)) ; A = ex(20, +, ex(15, +, ex(5, +, 10))) ; A = ex(20, +, ex(15, *, ex(5, /, 10))) ; A = ex(ex(5, +, 15), +, ex(10, +, 20)) ; A = ex(20, +, ex(10, +, ex(5, +, 15))) ; A = ex(10, +, ex(ex(5, +, 15), +, 20)) ; A = ex(10, +, ex(20, +, ex(5, +, 15))) ; A = ex(ex(5, +, 15), +, ex(10, +, 20)) ; A = ex(20, +, ex(10, +, ex(5, +, 15))) ; A = ex(10, -, ex(20, *, ex(5, /, 15))) ; A = ex(20, +, ex(10, *, ex(5, /, 15))) ; A = ex(ex(10, +, 15), +, ex(5, +, 20)) ; A = ex(ex(5, +, 20), +, ex(10, +, 15)) ; A = ex(10, +, ex(15, +, ex(5, +, 20))) ; A = ex(15, +, ex(10, +, ex(5, +, 20))) ; A = ex(ex(5, *, 20), -, ex(10, *, 15)) ; A = ex(10, -, ex(15, *, ex(5, /, 20))) ; A = ex(ex(5, +, 20), +, ex(10, +, 15)) ; A = ex(ex(10, +, 15), +, ex(5, +, 20)) ; A = ex(5, +, ex(20, +, ex(10, +, 15))) ; A = ex(20, +, ex(5, +, ex(10, +, 15))) ; A = ex(ex(10, *, 15), -, ex(5, *, 20)) ; A = ex(20, +, ex(5, /, ex(10, *, 15))) ; A = ex(ex(10, +, 20), +, ex(5, +, 15)) ; A = ex(5, +, ex(15, +, ex(10, +, 20))) ; A = ex(15, +, ex(5, +, ex(10, +, 20))) ; A = ex(ex(15, +, 20), +, ex(5, +, 10)) ; A = ex(5, +, ex(10, +, ex(15, +, 20))) ; A = ex(10, +, ex(5, +, ex(15, +, 20))) ; A = ex(10, -, ex(5, /, ex(15, *, 20))) ; No ?-