What is the difference between Picat's `table` and a hand-written assert/retract memoization pattern in Prolog?
-
A
assert/retract is faster because it uses native memory.
-
B
There is no practical difference; both are equally automatic.
-
C
`table` is declarative and automatically managed, while assert/retract requires manual cache management.
-
D
`table` only works for deterministic predicates, while assert/retract works for all predicates.