33.5.2 Turning Answers into Terms

In meta-programming applications one needs to get a grip on the results computed by the clp(Q,R) solver. You can use the predicates dump/3 and/or call_residue/2 for that purpose:

     clp(r) ?- {2*A+B+C=10,C-D=E,A<10}, dump([A,B,C,D,E],[a,b,c,d,e],Constraints).
     
     Constraints = [e<10.0,a=10.0-c-d-2.0*e,b=c+d],
     {C=10.0-2.0*A-B},
     {E=10.0-2.0*A-B-D},
     {A<10.0}
     clp(r) ?- call_residue({2*A+B+C=10,C-D=E,A<10}, Constraints).
     
     Constraints = [
                    [A]-{A<10.0},
                    [B]-{B=10.0-2.0*A-C},
                    [D]-{D=C-E}
                   ]