% This file tests the HYPROLOG system
% with a combination of DCG, assumptions and abducibles.
%
% Copyright (C) Henning Christiansen, October 2005

% ?- hyprolog(shootingLuckyLuke).

% NB: An extended version available with file name shootingLuckyLukeAdvanced

abducibles   event/3. % abducibles; example: event(shooting,maDalton,luckyLuke)

assumptions acting/2. % for pronouns

discourse --> ss.
ss    --> [].    % ss stands for sentenceS
ss    --> s, ss.

s    --> np(_,Who), [shoots], np(_,Whom),
         {event(shooting,Who,Whom)}.

np(Gender,Who)   --> pro(Gender,Who).

np(Gender,Who)   --> name(Gender,Who),   {*acting(Gender,Who)}.

name(masc,luckyLuke)      --> [luckyLuke].
name(masc,joeDalton)      --> [joeDalton].
name(masc,jackDalton)     --> [jackDalton].
name(masc,williamDalton)  --> [williamDalton].
name(masc,averellDalton)  --> [averellDalton].
name(fem,calamityJane)    --> [calamityJane].
name(fem,maDalton)        --> [maDalton].

pro(masc,Who) -->  [he],   {-acting(masc,Who)}.
pro(fem,Who) -->   [she],  {-acting(fem,Who)}.
pro(masc,Whom)  --> [him], {-acting(masc,Whom)}.
pro(fem,Whom)  -->  [her], {-acting(fem,Whom)}.





/************** 

?- phrase(discourse, [luckyLuke,shoots,calamityJane]).

?- phrase(discourse, [he,shoots,maDalton]).

?- phrase(discourse, [luckyLuke,shoots,calamityJane, he,shoots,maDalton]).

?- phrase(discourse, [luckyLuke,shoots,jackDalton, he,shoots,maDalton]).

******************/