The algorithm cannot be guaranteed to terminate (since it is possible to write arbitrary Turing machines in Dyna).
if it does terminate, it should return values from a valid model of the program, i.e., values that simultaneously satisfy all the equations expressed by the program.