[Note: I ended both problems early due to length] ?- consult('cryptoexh.pro'). % combosets.pro compiled 0.00 sec, 7,504 bytes % cryptoexh.pro compiled 0.00 sec, 11,112 bytes Yes ?- crypto(1,2,3,4,5,6,A). A = ex(ex(1, +, 2), *, ex(5, -, ex(3, +, 4))) ; A = ex(3, *, ex(5, -, ex(ex(1, +, 2), +, 4))) ; A = ex(ex(ex(1, +, 2), *, 4), /, ex(5, -, 3)) ; A = ex(ex(3, *, 4), /, ex(5, -, ex(1, +, 2))) ; A = ex(4, /, ex(ex(1, +, 2), *, ex(3, +, 5))) ; A = ex(4, /, ex(3, *, ex(ex(1, +, 2), +, 5))) ; A = ex(ex(1, +, 2), *, ex(4, /, ex(3, +, 5))) ; A = ex(3, *, ex(4, /, ex(ex(1, +, 2), +, 5))) ; A = ex(ex(1, +, 2), *, ex(4, +, ex(3, -, 5))) ; A = ex(3, *, ex(4, +, ex(ex(1, +, 2), -, 5))) ; A = ex(ex(ex(1, +, 2), -, 5), /, ex(4, *, 3)) Yes ?- crypto(7,7,7,7,7,7,A). A = ex(ex(7, +, 7), -, ex(7, +, ex(7, +, 7))) ; A = ex(ex(7, +, 7), -, ex(7, +, ex(7, +, 7))) ; A = ex(ex(7, +, 7), /, ex(7, *, ex(7, +, 7))) ; A = ex(ex(7, +, 7), /, ex(7, *, ex(7, +, 7))) ; A = ex(ex(7, +, 7), +, ex(7, -, ex(7, +, 7))) ; A = ex(ex(7, +, 7), +, ex(7, -, ex(7, +, 7))) ; A = ex(ex(7, +, 7), -, ex(7, -, ex(7, +, 7))) ; A = ex(ex(7, +, 7), -, ex(7, -, ex(7, +, 7))) ; A = ex(ex(7, +, 7), /, ex(7, /, ex(7, +, 7))) ; A = ex(ex(7, +, 7), /, ex(7, /, ex(7, +, 7))) ; A = ex(7, +, ex(ex(7, +, 7), -, ex(7, +, 7))) ; A = ex(7, +, ex(ex(7, +, 7), -, ex(7, +, 7))) Yes ?-