Conversation
For a recent example that would benefit from this, see "Prolog Basics Explained with Pokémon" by @alexpetros: https://unplannedobsolescence.com/blog/prolog-basics-pokemon/ Thank you a lot!
UWN
left a comment
There was a problem hiding this comment.
Instantiation error if Goal is not ground.
(And type error if not a term)
|
This is a step in the direction towards completeness, but it still doesn't make |
This was not an objection but an observation. What we have here is called negation as failure (NAF), which means two things: A way to implement this in Prolog (8.15.1 The simplest way to reconcile both is to use a safe approximation that is correct as long as it terminates and does not produce an error. This is what More elaborate (and much more complex) attempts can be found under the name constructive negation. All of this remains inherently non-monotonic. This is not a bug. Take as an example the relation Quite often, however, Another inherent downside of non-monotonic predicates is that explanations about unexpected success/failure/non-termination/instantiation errors are much more complex (resembling closely the actual execution traces) than in the pure and monotonic subset where we often can reduce the size of the relevant program to a very tiny slice. For this reason focusing on the pure monotonic part first does make a lot of sense. Another downside of non-monotonic predicates is that they do not fit together easily with constraints whereas the pure monotonic part fits in nicely. This may be resolvable, it is more of an implementation issue, but a very non-trivial one. |
|
No, apparently not! |
For a recent example that would benefit from this, see "Prolog Basics Explained with Pokémon" by @alexpetros:
Thank you a lot!