listToNumber(List, Number) :- listToNumber(List, 0, Number).
listToNumber([], X, X).
listToNumber([H | Tail], A, X) :-
        Anew is A * 10 + H,
        listToNumber(Tail, Anew, X).

shatter(InList, OutLists) :- 
        length(InList, InL),
        between(1, InL, OutL),
        length(OutLists, OutL),
        append(OutLists, InList),
        forall(member(SubOutLists, OutLists), SubOutLists \= []).

split(InList, OutLists) :- 
        shatter(InList, OutLists),
        length(OutLists, 3).

isEqual(X) :-
        permutation(X, [1,2,3,4,5,6,7,8,9]),
        split(X, List),
        maplist(listToNumber, List, Y),
        Y = [Multiplicand, Multiplier, Product],
        Product =:= Multiplicand * Multiplier.