% Pednault's Briefcase example
% from
% Edwin Pednault. Synthesizing plans that contain actions with
% context-dependent effects. Computational Intelligence, 4(4):356-372, 1988.

include "../library-ontology"
include "../library"

sorts
  Item;

inclusions
  Item << Thing;

module BRIEFCASE_ED;

  objects
    Ed : Person;
    Paycheck, Dictionary : Item;
    Briefcase : Carrier;
    Home, Office : Place;

  actions
    PutIn(Item);
    PickUp(Thing); PutDown(Thing);
    Walk(Place);

  variables
    i : Item;
    x : Thing;
    p : Place;

  import CARRIER;
    Load(x,Ed) is PickUp(x);
    Unload(x) is PutDown(x);
    Move(Ed,p) is Walk(p);

  import CARRIER;
    Load(i,Briefcase) is PutIn(i);
    Unload(x) is false;
    Move(x,p) is false;

  import NOCONCURRENCY;

  axioms
    TooSmallToSupport(Briefcase,Ed);

    nonexecutable PutDown(x) if -Holds(Ed,x);
