I think this is a feature request.
I’m using the latest version of SWI-Prolog with the sCASP library and accessing it through swiplserver. This is being used as the back-end reasoner for Blawx, which displays the human-language version of the explanation tree to the user.
Here’s what the human language explanation for one model looks like when I use abducibility on the rules for rock paper scissors, and ask how a game might be won.
the winner of anything is anything, because
anything played in anything, because
there is no evidence that o_player holds for anything, and anything, because
it is assumed that anything played in anything
abducible$ holds for player(_32,_34), because
there is no evidence that abducible$$ holds for player(_32,_34), because
abducible$ holds for player(_32,_34), because
it is assumed that there is no evidence that abducible$$ holds for player(_32,_34)
anything played in anything, because
there is no evidence that o_player holds for anything, and anything, because
it is assumed that anything played in anything
abducible$ holds for player(_32,_818), because
there is no evidence that abducible$$ holds for player(_32,_818), because
abducible$ holds for player(_32,_818), because
it is assumed that there is no evidence that abducible$$ holds for player(_32,_818)
anything threw rock, because
there is no evidence that o_throw holds for anything, and rock, because
it is assumed that anything threw rock
abducible$ holds for throw(_34,rock), because
there is no evidence that abducible$$ holds for throw(_34,rock), because
abducible$ holds for throw(_34,rock), because
it is assumed that there is no evidence that abducible$$ holds for throw(_34,rock)
anything threw scissors, because
there is no evidence that o_throw holds for anything, and scissors, because
it is assumed that anything threw scissors
abducible$ holds for throw(_818,scissors), because
there is no evidence that abducible$$ holds for throw(_818,scissors), because
abducible$ holds for throw(_818,scissors), because
it is assumed that there is no evidence that abducible$$ holds for throw(_818,scissors)
rock beats scissors
That’s a lot of anything
. It would be great if we could keep the original variable name in the query, when we have one, and use the skolem names. So Player _118
where the variable has a name and just _118
when it doesn’t.
It would also be great if the human versions of predicates were being used inside the abducibility statements.
It would also be great if the abducibility statements would use something natural-language-ish instead of “abducible$ holds for”.
It would also be great of o_predicate was translated into "it is not proven that " followed by the human language version of the positive predicate.
The Ciao implementation of s(CASP) deals with some of these things differently, but I forget which, and how, exactly.
Thanks very much.