Finding valid and distinct integers for digits S, E, N, D, M, O, R and Y in the equation SEND + MORE = MONEY is a classical constraint programming problem. Here's the slightly modified version of the sample program at Wikipedia constraint programming entry for SWI-Prolog using clp library:
:- use_module(library('clp/bounds')).
sendmore(Digits) :-
Digits = [S,E,N,D,M,O,R,Y],
Digits in 0..9,
S #\= 0,
M #\= 0,
all_different(Digits),
1000*S + 100*E + 10*N + D
…continue.