Hi @JasonMorris,
I’ve tried to reproduce the results posted above, but as for preserving variable names in my case I see that s(CASP) does preserve them in the justification tree (not in the query description though).
Here’s the program I’ve created to try and reproduce these results (I just tweaked your code from here based on the output provided above):
#pred player(G, X) :: '@(X) played in @(G)'.
#pred winner(Game,Player) :: 'The winner of @(Game) is @(Player)'.
#pred throw(Player,Sign) :: '@(Player) threw @(Sign)'.
#pred beat(Sign,OtherSign) :: '@(Sign) beats @(OtherSign)'.
beat(rock,scissors).
beat(scissors,paper).
beat(paper,rock).
#abducible player(Game, Player).
#abducible throw(Player, Sign).
winner(Game,Player) :-
player(Game, Player),
player(Game, OtherPlayer),
throw(Player,Sign),
throw(OtherPlayer,OtherSign),
beat(Sign,OtherSign).
And here’s the output I get for the most general query:
$ ./scasp --query 'winner(Game, Player)' --human --tree examples/rps.pl
% Query
I would like to know if
The winner of anything is anything?
% ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
% Answer 1 (0.002 sec)
% ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
% Justification
The winner of Game is Player, because
Player played in Game, because
it is assumed that Player played in Game, and
abducible holds for player(Game,Player), because
abducible holds for player(Game,Player), because
it is assumed that there is no evidence that o_abducible holds for player(Game,Player)
A played in Game, because
it is assumed that A played in Game, and
abducible holds for player(Game,A), because
abducible holds for player(Game,A), because
it is assumed that there is no evidence that o_abducible holds for player(Game,A)
Player threw rock, because
it is assumed that Player threw rock, and
abducible holds for throw(Player,rock), because
abducible holds for throw(Player,rock), because
it is assumed that there is no evidence that o_abducible holds for throw(Player,rock)
A threw scissors, because
it is assumed that A threw scissors, and
abducible holds for throw(A,scissors), because
abducible holds for throw(A,scissors), because
it is assumed that there is no evidence that o_abducible holds for throw(A,scissors)
rock beats scissors
∎
As you can see I can’t reproduce the whole lot of anything
s just yet.
Is my contrived program close enough to what you ran?
Are you getting these results with the latest s(CASP) commit (f47d5c039bc219347a08aad8600951a3496ddad2)?
Cheers