Я бы подумал, что мой пролог-код подойдет для этой задачи на умножение, но он возвращает false. Я что-то пропустил?
solve(T,W,O,S,I,X,E,L,V) :-
X = [T,W,O,S,I,X,E,L,V],
Digits = [0,1,2,3,4,5,6,7,8,9],
assign_digits(X, Digits),
T > 0,
S > 0,
(100*T + 10*W + O) * (100*S + 10*I + X) =:=
100000*T + 10000*W + 1000*E + 100*L + 10*V + E,
write(X).