assumptions on_floor/1, has/2. story --> [] ; s, ['.'], story. s --> [a, drops], object(O), {+on_floor(O)}. s --> anotherAgent(A), [pics,up,something], {-on_floor(X), +has(A,X)}. object(keys) --> [keys]. object(money) --> [money]. anotherAgent(b) --> [b]. anotherAgent(c) --> [c]. /********* phrase(story, [a,drops,keys,'.',b,pics,up,something,'.', a,drops,money,'.',c,pics,up,something,'.']). phrase(story, [a,drops,keys,'.',a,drops,money,'.', b,pics,up,something,'.',c,pics,up,something,'.']). **********/