I suggest a look at Etalis . If this turns out to be redundant (I'm sorry I never went too deep inside) and you use SWI-Prolog, see if the Julian package could be better. It integrates perfectly with the CLP (FD) library and leaves you complete freedom with respect to the semantics of your statements. Of course, this is a "lower level" approach ...
source
share