For future expansion of my program, I need to use a third-party Prolog module to perform a set of desired operations. The third-party module has the following declarations (and other predicates I need to use).
:- op(500, xfy, user:(+)). :- op(400, xfy, user:(*)). :- op(500, xfy, user:(-)). :- op(400, xfy, user:(/)).
After including the third-party module in my main program, some of the problems that the program used to solve are no longer solvable. When I comment the above
op/3 declarations out, things get back to normal. So my guess is that these
op/3 declarations are the culprit.
Can somebody please explain to me what possible conflict could these declarations be introducing? I checked the page about op/3 and the operator priority seems to be matching. My program performs arithmetic operations (amongst other things), and I have no
op/3 declarations in my program – well except the ones in the third-party module after adding it. Also, the third-party module is not imported as module per se, I use ensure_loaded/1 to include it in my program.