Just wanted to let you know that Jekejeke Minlog 0.6.2 is
out. There was some functionality in the Jekejeke Minlog
extension module that lay dormant until now. With this release
of Jekejeke Minlog we provide a first batch of built-ins for
hypothetical and counterfactual reasoning. Internally these
built-ins work with clause references and trailed undos.
To introduce hypothetical and counterfactual reasoning to
logic programming is not new, we draw here on work from
Jekejeke Minlog also provides variants that work without a
sub-goal and keep the update for the duration of the continuation.
The continuation variants of hypothetical and counter factual
reasoning form the update component of the continuation version of
forward chaining, which is used to implement constraint solvers.
Since new constraints, similar to unification results,
stay for the duration of the continuation.
Now that we have hypothetical and counter factual reasoning: Is
it useful and does it perform? To some extend we have already
answered this question by the implementation of our CLP(FD)
constraint solver. But the constraint solver makes also use
of the forward closure computation, so are there some interesting
applications not integrated with the forward closure?
Interestingly the answer seems yes. We managed to implement
tic-tac-toe via the continuation variant of the new Jekejeke
Minlog tool box.
In the old solution the board state is passed around in predicate
arguments. In the new solution we perform updates on the facts
via hypothetical/counter factual operations. Since the board state
is not anymore passed around we do not need a move/3 predicate.
Instead we can work with a move/1 predicate that has only one
parameter and that updates the knowledge base:
clause_ref(board(-,M,N), true, R),
Astonishingly the new solution is also performant. Our measurements
show the following figures for checking whether there exists
a winning strategy:
Old Parameter Solution: 124ms
New Update Solution: 224ms
Theoretically a certain advantage could be gained for bigger boards
via the update method, since it works only locally. Further forward
closure could come to the picture again to model complex moves.
Jekejeke Minlog 0.6.2
Tic-Tac-Toe with Parameter
Tic-Tac-Toe with Update