I was reading up on pure prolog, including the dif/2 paper @Boris had posted some while ago and the reif library, as well as comments made by @jan, how correctness can also be achieved by ensuring instantiated variables as well as through tabling.
I find that this discussion injects uncertainty in my use of Prolog – that it is possible to have language uses that provide unexpected (incorrect – in the logic sense) results. Perhaps, i can’t always ensure that everything is instantiated, and perhaps its also too limiting, given the various techniques that make use of uninstantiated variables (difference lists perhaps, and others).
It would be great, if we as a community, could create a document for swi-prolog that gives guidance on how to use the language in a way that is correct; and that would be performant as well.
It seems that pure Prolog would only be a subset, and there are proven usage idioms, that go beyond pure Prolog, given recent developments with tabling, for example.
I’d like to know if you see value in such a collaborative effort, and how to best go about creating something. In the end it could reside in the tutorial section of the swi-prolog site.
all comments are much appreciated,