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

module AIRPORT_RIDE;

  objects
    Car : Vehicle;

  actions
    Walk(Person, Place);
    Drive(Person, Place);
    Board(Person);
    Disembark(Person);

  fluents
    Walkable(Region) : rigid;
    Drivable(Region) : rigid;

  variables
    p : Place;
    r : Region;
    m, m1 : Person;

  import CARRIER;
    Move(Car,p) is Drive(m,p);
    Load(m,Car) is Board(m);
    Unload(m) is Disembark(m);

  import MOVE_IN_REGION;
    Move(Car,p) is Drive(m,p);
    Movable(r) is Drivable(r);

  import MOVE_IN_REGION;
    Move(m,p) is Walk(m,p);
    Movable(r) is Walkable(r);

  axioms

    nonexecutable Drive(m,p) if Support(m)!=Car;

    nonexecutable Drive(m,p) & Disembark(m1);
    nonexecutable Drive(m,p) & Board(m1);

    nonexecutable Walk(m,p) & Disembark(m);
    nonexecutable Walk(m,p) & Board(m);

module AIRPORT_RIDE_SPECIFIC;

  import AIRPORT_RIDE;

  objects
    John, Pat : Person;
    Desk, Garage, Airport : Place;
    Home, County : Region;

  axioms

    constraint Location(Car)!=Desk;

    % Our "geography":

    At(Desk, Home);
    At(Garage, Home);
    At(Home, County);
    At(Airport, County);

    Walkable(Home);

    Drivable(County);
