Problems with human explanations in s(CASP) when using abducibility

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 anythings 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