CardWorld Next Steps

Prof. James A. Mason, York University, Toronto -- 2012 August

What follows is the current plan for extending the implementation of CardWorld.  Of course it will be revised as the development progresses, but it should give an idea of the richness of the CardWorld domain as a testbed for exploring natural language understanding.

Even before proceeding beyond CardWorld2, it is already clear that we must sooner or later distinguish between two different types of Card Agents: (1) omniscient agents, which know all about the cards and piles on the table, regardless of which sides of cards are turned up and how cards are stacked, and (2) agents with limited knowledge , which only know about the cards whose faces they can "see".  It will be interesting to model agents of both of those types.  Omniscient agents can also be given unrestricted powers of operation on cards and piles, such as turning over a card in the middle of a stacked pile and reporting the exact number of cards in a specified collection, whether the cards are individually visible or not.  Being both omniscient and (potentially) omnipotent, they will be defined as instances of a CardGod subclass of CardAgent.  Agents with limited knowledge and abilities for action will be defined as instances of a CardPlayer subclass of CardAgent.  Interestingly, CardPlayers will be more difficult to model than CardGods, because we will have to keep track of which individual cards and card faces a CardPlayer can "see", and we will have to model a CardPlayer's potentially incorrect memories and beliefs about identities and quantities of cards that the CardPlayer has seen but can no longer observe directly.

The extensions proposed below are only provisional, for purposes of discussion.  Each additional level listed is probably overly ambitious with regard to implementation.  The actual implementation of CardWorld3, for instance, will likely involve only a proper subset of the extensions proposed for it.
    Giving CardAgent knowledge of complementarity ("the other card(s)/pile(s)")
    Giving CardAgent knowledge of membership in collections ("the cards in/of that pile/those pile(s)"; "that pile's cards")
    Giving CardAgent knowledge of exact quantities (of cards and piles)
    * allowing indefinite quantifiers and random selection (e.g. "stack some of the hearts here", "turn over five (of the) cards", "shuffle one of the piles")
    * knowledge of standard deck(s) and their contents for various games (with 0, 1, or 2 jokers; Euchre deck, pinochle deck, etc.)
    * knowledge of comparison and sorting orders for cards (lower, higher; ascending, descending) and ability to change them

    Giving the two card agents (including user) points of view: i.e., private and restricted ability to observe faces of cards
    ("turn over the visible card" [in a stack], "stack all the visible hearts here")
    * non-omniscient agents (How much memory should a non-omniscient agent have for cards observed and manipulated individually?)
    * shared piles versus private hands ("ownership" of cards and piles)
    * memory for cards manipulated individually and turned face down
    * modeling capabilities and knowledge of the other agent and of self
    * cooperative agents
    * explicit knowledge and bootstrapping -- e.g. learning new definitions of kinds of piles and collections

    Introducing games with goals for each agent;
    * allowing each agent to take initiatives, including manipulating cards and asking questions
    cooperative versus competitive games
    * competitive agents
    * honest versus dishonest agents?  

    Giving CardAgent knowledge of inexact and comparative quantities
    * quantities of cards
    * degrees of spreading of piles

    Permitting more than two agents, including human user(s)

link to CardWorld home page