I just read that the semi-naive incremental update of tabled
predicates is subject to the following restrictions:
-
Only monotonic updates, i.e. assertz/1 and no retract/1,
if retract/1 the system falls back to simply invalidate tabled predicates,
and cannot incrementally promote changes. -
Only programs without negation, i.e. assertz/1 is only
incrementally promoted if the program has no negation.
The documentation here says “In particular it does not deal
with negation”
Is this the state of the art. What would be needed to allow
either non-monotonic updates or to allow negation or to
allow both?