;;; -*- Mode: LISP; Syntax: Zetalisp; Package: sipe; Base: 10; -*- ;;; This is a travel agent planner, used as an example of some ;;; powerful features of SIPE. ;;; In this formulation, actions are viewed as entities just as ;;; objects are entities. Thus, actions can appear in the type ;;; hierarchy. For example, a GROUND-TRANSPORT action is a subclass of ;;; all TRANSPORT actions. Operators are defined as certain action ;;; types by including in their list of arguments the action class to ;;; which they belong. Thus, for example, the operator OTRAVELGROUND ;;; includes an argument GROUND-TRANSPORT1. Goals may also specify the ;;; action type that is desired in their achieval. This is done by ;;; including an argument in the argument list that specifies the ;;; required action type. Thus we may set up a ;;; goal to travel to San Francisco, but require that we achieve this ;;; goal by using ground transport (see problem 3). ;;; In most planners, the effects and purposes of actions are taken to ;;; be states of the world that are achieved by performing the action. ;;; Thus, for example, a transport action may achieve (AT HAROLD SANFRAN). ;;; In this view, it is difficult to see how one could define actions ;;; such as "standing still" or "running around a race track 3 times". ;;; We therefore allow predications not only over states of the world, ;;; but over events (i.e., sequences of states, or "world histories"). Thus, ;;; just as (AT HAROLD SANFRAN) is true of just those states of the ;;; world in which Harold is at San Francisco, so (MOVE HAROLD BOSTON SANFRAN) ;;; is true of just those events or sequences of states in which ;;; Harold moves from Boston to San Fransisco. In this way it is ;;; possible to have goals that a certain event occur, as well as goals ;;; that a certain state of the world be attained. All the things that ;;; SIPE can do for state-predicates, it can also do for ;;; event-predicates. Thus, with the appropriate axioms, SIPE could ;;; infer that while it was impossible to stand still in parallel with ;;; moving, it is quite ok to stand still while juggling. ;;; The example is not intended to represent the optimal ontology for travel ;;; planning, but rather a demonstration of various features of SIPE. ;;; It thus uses a variety of representations: e.g., UNITED-FLY ;;; and TWA-FLY are represented as separate actions, whereas for ;;; BUS and TRAIN travel we use a paramaterized operator with the ;;; carrier as first argument. ;;; Most operators, event predicates and object predicates are clear ;;; from their names. NEVERRETURN simply makes sure that, in planning a ;;; (one-way) trip, we never return to previoulsy visited cities or ;;; their neighbourhoods. ;;; ------------------------------------------------------------ ; The action hierarchy is defined (in-package :sipe) (DEFINE.DOMAIN) CLASS: ACTION SUBCLASSES: TRANSPORT, ACCOMODATION, STAY; END CLASS CLASS: STAY PARENT-CLASS: ACTION END CLASS CLASS: ACCOMODATION PARENT-CLASS: ACTION SUBCLASSES: HOTEL-ACCOM, MOTEL-ACCOM, CAMP-ACCOM; END CLASS CLASS: HOTEL-ACCOM PARENT-CLASS: ACCOMODATION INSTANCES: HOTEL-A, HOTEL-B, HOTEL-C; END CLASS OBJECT: HOTEL-A PARENT-CLASS: HOTEL-ACCOM PROPERTIES: PRICE = HIGH, QUALITY = HIGH; END OBJECT OBJECT: HOTEL-B PARENT-CLASS: HOTEL-ACCOM PROPERTIES: PRICE = MEDIUM, QUALITY = MEDIUM; END OBJECT OBJECT: HOTEL-C PARENT-CLASS: HOTEL-ACCOM PROPERTIES: PRICE = LOW, QUALITY = LOW; END OBJECT CLASS: CAMP-ACCOM PARENT-CLASS: ACCOMODATION INSTANCES: CAMP-A, CAMP-B; END CLASS OBJECT: CAMP-A PARENT-CLASS: CAMP-ACCOM PROPERTIES: PRICE = LOW, QUALITY = MEDIUM; END OBJECT OBJECT: CAMP-B PARENT-CLASS: CAMP-ACCOM PROPERTIES: PRICE = LOW, QUALITY = LOW; END OBJECT CLASS: TRANSPORT PARENT-CLASS: ACTION SUBCLASSES: GROUND-TRANSPORT, AIR-TRANSPORT, SEA-TRANSPORT; END CLASS CLASS: GROUND-TRANSPORT PARENT-CLASS: TRANSPORT SUBCLASSES: DRIVE, BUSRIDE, TRAINRIDE; END CLASS CLASS: DRIVE PARENT-CLASS: GROUND-TRANSPORT INSTANCES: DRIVE-OWN, DRIVE-HIRE; END CLASS OBJECT: DRIVE-OWN PARENT-CLASS: DRIVE END OBJECT CLASS: DRIVE-HIRE PARENT-CLASS: DRIVE SUBCLASSES: DRIVE-AVIS, DRIVE-HERTZ; END CLASS OBJECT: DRIVE-AVIS PARENT-CLASS: DRIVE-HIRE END OBJECT OBJECT: DRIVE-HERTZ PARENT-CLASS: DRIVE-HIRE END OBJECT CLASS: BUSRIDE PARENT-CLASS: GROUND-TRANSPORT INSTANCES: SAMTRANS, GREY; END CLASS OBJECT: SAMTRANS PARENT-CLASS: BUSRIDE END OBJECT OBJECT: GREY PARENT-CLASS: BUSRIDE END OBJECT CLASS: TRAINRIDE PARENT-CLASS: GROUND-TRANSPORT SUBCLASSES: LOCAL-TRAIN, NATIONAL-TRAIN; END CLASS CLASS: LOCAL-TRAIN PARENT-CLASS: TRAINRIDE INSTANCES: SP, BOSTONT; END CLASS OBJECT: SP PARENT-CLASS: LOCAL-TRAIN END OBJECT OBJECT: BOSTONT PARENT-CLASS: LOCAL-TRAIN END OBJECT CLASS: NATIONAL-TRAIN PARENT-CLASS: TRAINRIDE INSTANCES: NATTRAIN; END CLASS OBJECT: NAT PARENT-CLASS: NATIONAL-TRAIN END OBJECT CLASS: AIR-TRANSPORT PARENT-CLASS: TRANSPORT SUBCLASSES: COMM-FLIGHT, CHARTER-FLIGHT, SELF-FLIGHT; END CLASS CLASS: COMM-FLIGHT PARENT-CLASS: AIR-TRANSPORT INSTANCES: UNITED-FLIGHT, TWA-FLIGHT; END CLASS OBJECT: UNITED-FLIGHT PARENT-CLASS: COMM-FLIGHT END OBJECT OBJECT: TWA-FLIGHT PARENT-CLASS: COMM-FLIGHT END OBJECT STOP ; The objects in the domain are defined (DEFINE.DOMAIN) CLASS: OBJECT SUBCLASSES: PERSON, AUTO, CARRIER; END CLASS CLASS: PERSON PARENT-CLASS: OBJECT INSTANCES: BRUCE, SUE, HAROLD, PAMELA, DAVID; END CLASS OBJECT: BRUCE PARENT-CLASS: PERSON PROPERTIES: CANDRIVE = YES, SPEND = HIGH, DESIRE = HIGH; END OBJECT OBJECT: DAVID PARENT-CLASS: PERSON PROPERTIES: CANDRIVE = YES, SPEND = HIGH, DESIRE = HIGH; END OBJECT OBJECT: PAMELA PARENT-CLASS: PERSON PROPERTIES: CANDRIVE = YES, CANRIDE = YES, SPEND = HIGH, DESIRE = HIGH; END OBJECT OBJECT: SUE PARENT-CLASS: PERSON PROPERTIES: CANDRIVE = YES, SPEND = MEDIUM, DESIRE = MEDIUM; END OBJECT OBJECT: HAROLD PARENT-CLASS: PERSON PROPERTIES: CANDRIVE = YES, SPEND = MEDIUM, DESIRE = MEDIUM; END OBJECT CLASS: AUTO PARENT-CLASS: OBJECT SUBCLASSES: PRIVATE-AUTO, HIRE-AUTO; END CLASS CLASS: PRIVATE-AUTO PARENT-CLASS: AUTO INSTANCES: HOLDEN,FIAT; END CLASS CLASS: HORSE PARENT-CLASS: OBJECT INSTANCES: ROAN; END CLASS CLASS: HIRE-AUTO PARENT-CLASS: AUTO SUBCLASSES: AVISCAR, HERTZCAR; END CLASS CLASS: AVISCAR PARENT-CLASS: HIRE-AUTO INSTANCES: AC1, AC2, AC3, AC4, AC5, AC6, AC7; END CLASS CLASS: HERTZCAR PARENT-CLASS: HIRE-AUTO INSTANCES: HC1, HC2, HC3, HC4, HC5, HC6, HC7; END CLASS CLASS: CARRIER PARENT-CLASS: OBJECT SUBCLASSES: AIRCARRIER, BUSCARRIER, TRAINCARRIER, SEACARRIER; END CLASS CLASS: BUSCARRIER PARENT-CLASS: CARRIER INSTANCES: GREYC, SAMTRANSC; END CLASS CLASS: TRAINCARRIER PARENT-CLASS: CARRIER INSTANCES: SPC, BOSTONTC, NATC; END CLASS CLASS: AIRCARRIER PARENT-CLASS: CARRIER INSTANCES: TWAC, UNITEDC; END CLASS CLASS: LOCATION SUBCLASSES: NON-CAR-HIRE-LOCN, CAR-HIRE-LOCN; END CLASS CLASS: NON-CAR-HIRE-LOCN PARENT-CLASS: LOCATION INSTANCES: SANFRAN,IDYLLWILD,KENT; END CLASS CLASS: CAR-HIRE-LOCN PARENT-CLASS: LOCATION SUBCLASSES: AVIS-LOCN, HERTZ-LOCN; END CLASS CLASS: AVIS-LOCN PARENT-CLASS: CAR-HIRE-LOCN SUBCLASSES: AVIS-NON-DROPOFF, AVIS-DROPOFF; END CLASS CLASS: AVIS-NON-DROPOFF PARENT-CLASS: AVIS-LOCN INSTANCES: LOSANGELES; END CLASS CLASS: AVIS-DROPOFF PARENT-CLASS: AVIS-LOCN INSTANCES: SFO, CAMBRIDGE, LAX, WASHINGTON, WDC, BOS; END CLASS CLASS: HERTZ-LOCN PARENT-CLASS: CAR-HIRE-LOCN SUBCLASSES: HERTZ-NON-DROPOFF, HERTZ-DROPOFF; END CLASS CLASS: HERTZ-NON-DROPOFF PARENT-CLASS: HERTZ-LOCN INSTANCES: PA, WDC, WASHINGTON, LOSANGELES, SEATTLE; END CLASS CLASS: HERTZ-DROPOFF PARENT-CLASS: HERTZ-LOCN INSTANCES: SFO, BOS, BOSTON, LAX, SEA-TAC; END CLASS CLASS: AREAS INSTANCES: BOSAREA, WDCAREA, SFOAREA, LAXAREA, SEAAREA; END CLASS CLASS: CAR-AGENT INSTANCES: HERTZ, AVIS; END CLASS OBJECT: HERTZ PARENT-CLASS: CAR-AGENT END OBJECT OBJECT: AVIS PARENT-CLASS: CAR-AGENT END OBJECT STOP ; Axioms defining the domain are specified (DEFINE.DOMAIN) NO-CHANGE-PREDICATES: (SHORTDIST MEDIUMDIST LONGDIST IN ROADROUTE BUSROUTE HORSEROUTE UNITEDROUTE TWAROUTE TRAINROUTE AIRROUTE) PREDICATES: (SHORTDIST SFO PA), (SHORTDIST SFO SANFRAN),(SHORTDIST SFO IDYLLWILD),(SHORTDIST KENT SEA-TAC), (SHORTDIST SEATTLE SEA-TAC), (SHORTDIST LOSANGELES LAX), (SHORTDIST WASHINGTON WDC), (SHORTDIST BOSTON BOS), (SHORTDIST CAMBRIDGE BOS), (SHORTDIST CAMBRIDGE BOSTON), (SHORTDIST PA SANFRAN), (MEDIUMDIST SANFRAN LAX),(MEDIUMDIST SANFRAN SEA-TAC), (MEDIUMDIST WASHINGTON BOSTON), (LONGDIST SFO BOS), (IN SFO SFOAREA),(IN IDYLLWILD SFOAREA),(IN SEA-TAC SEAAREA),(IN SEATTLE SEAAREA), (IN KENT SEAAREA), (IN SANFRAN SFOAREA), (IN PA SFOAREA), (IN BOS BOSAREA), (IN BOSTON BOSAREA), (IN CAMBRIDGE BOSAREA), (IN WDC WDCAREA), (IN WASHINGTON WDCAREA), (IN LAX LAXAREA), (IN LOSANGELES LAXAREA), (ROADROUTE LAX LOSANGELES),(ROADROUTE SEA-TAC KENT),(ROADROUTE SEA-TAC SEATTLE), (ROADROUTE SFO IDYLLWILD),(ROADROUTE SANFRAN IDYLLWILD), (ROADROUTE SANFRAN SFO), (ROADROUTE PA SFO), (ROADROUTE SANFRAN PA), (ROADROUTE WDC WASHINGTON), (ROADROUTE BOSTON BOS), (ROADROUTE CAMBRIDGE WASHINGTON), (ROADROUTE CAMBRIDGE WDC), (ROADROUTE CAMBRIDGE BOSTON), (BUSROUTE GREYC LAX LOSANGELES), (BUSROUTE GREYC WASHINGTON SFO), (BUSROUTE SAMTRANSC PA SANFRAN), (BUSROUTE SAMTRANSC SFO SANFRAN),(BUSROUTE SAMTRANSC SFO IDYLLWILD), (BUSROUTE SAMTRANSC PA SFO), (TRAINROUTE SPC SANFRAN PA), (TRAINROUTE NATC LOSANGELES BOSTON), (TRAINROUTE BOSTONTC BOS CAMBRIDGE), (TRAINROUTE BOSTONTC BOSTON CAMBRIDGE), (UNITEDROUTE SFO BOS),(UNITEDROUTE SFO SEA-TAC), (UNITEDROUTE SFO WDC), (UNITEDROUTE WDC LAX), (UNITEDROUTE SFO LAX), (TWAROUTE WDC SFO), (TWAROUTE BOS LAX), (TWAROUTE WDC LAX), (HORSEROUTE KENT SEA-TAC), (AT BRUCE PA),(AT PAMELA KENT),(AT DAVID IDYLLWILD), (AT SUE LOSANGELES), (AT HAROLD CAMBRIDGE),(HAVE PAMELA ROAN), (HAVE BRUCE HOLDEN),(HAVE PAMELA FIAT),(AT FIAT KENT),(AT ROAN KENT), (AT HOLDEN PA); END PREDICATES STOP ; Deductive operators defining the domain are defined (DEFINE.DOMAIN) INIT.OPERATOR: LONGDISTCOMMUTE ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1; TRIGGER: (LONGDIST LOCATION1 LOCATION2); EFFECTS: (LONGDIST LOCATION2 LOCATION1); END INIT.OPERATOR INIT.OPERATOR: MEDIUMDISTCOMMUTE ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1; TRIGGER: (MEDIUMDIST LOCATION1 LOCATION2); EFFECTS: (MEDIUMDIST LOCATION2 LOCATION1); END INIT.OPERATOR INIT.OPERATOR: SHORTDISTCOMMUTE ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1; TRIGGER: (SHORTDIST LOCATION1 LOCATION2); EFFECTS: (SHORTDIST LOCATION2 LOCATION1); END INIT.OPERATOR INIT.OPERATOR: ROADROUTECOMMUTE ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1; TRIGGER: (ROADROUTE LOCATION1 LOCATION2); EFFECTS: (ROADROUTE LOCATION2 LOCATION1); END INIT.OPERATOR INIT.OPERATOR: BUSROUTECOMMUTE ARGUMENTS: BUSCARRIER1, LOCATION1, LOCATION2 IS NOT LOCATION1; TRIGGER: (BUSROUTE BUSCARRIER1 LOCATION1 LOCATION2); EFFECTS: (BUSROUTE BUSCARRIER1 LOCATION2 LOCATION1); END INIT.OPERATOR INIT.OPERATOR: TRAINROUTECOMMUTE ARGUMENTS: TRAINCARRIER1, LOCATION1, LOCATION2 IS NOT LOCATION1; TRIGGER: (TRAINROUTE TRAINCARRIER1 LOCATION1 LOCATION2); EFFECTS: (TRAINROUTE TRAINCARRIER1 LOCATION2 LOCATION1); END INIT.OPERATOR INIT.OPERATOR: UNITEDROUTECOMMUTE ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1; TRIGGER: (UNITEDROUTE LOCATION1 LOCATION2); EFFECTS: (UNITEDROUTE LOCATION2 LOCATION1); END INIT.OPERATOR INIT.OPERATOR: TWAROUTECOMMUTE ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1; TRIGGER: (TWAROUTE LOCATION1 LOCATION2); EFFECTS: (TWAROUTE LOCATION2 LOCATION1); END INIT.OPERATOR INIT.OPERATOR: LONGDISTTRANS1 ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1, LOCATION3 IS NOT LOCATION1; TRIGGER: (LONGDIST LOCATION1 LOCATION2); PRECONDITION: (OR (SHORTDIST LOCATION2 LOCATION3) (MEDIUMDIST LOCATION2 LOCATION3)); EFFECTS: (LONGDIST LOCATION1 LOCATION3); END INIT.OPERATOR INIT.OPERATOR: LONGDISTTRANS2 ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1, LOCATION3 IS NOT LOCATION1; TRIGGER: (MEDIUMDIST LOCATION1 LOCATION2); PRECONDITION: (LONGDIST LOCATION2 LOCATION3); EFFECTS: (LONGDIST LOCATION1 LOCATION3); END INIT.OPERATOR INIT.OPERATOR: LONGDISTTRANS3 ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1, LOCATION3 IS NOT LOCATION1; TRIGGER: (SHORTDIST LOCATION1 LOCATION2); PRECONDITION: (LONGDIST LOCATION2 LOCATION3); EFFECTS: (LONGDIST LOCATION1 LOCATION3); END INIT.OPERATOR INIT.OPERATOR: MEDIUMDISTTRANS1 ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1, LOCATION3 IS NOT LOCATION1; TRIGGER: (MEDIUMDIST LOCATION1 LOCATION2); PRECONDITION: (SHORTDIST LOCATION2 LOCATION3); EFFECTS: (MEDIUMDIST LOCATION1 LOCATION3); END INIT.OPERATOR INIT.OPERATOR: MEDIUMDISTTRANS2 ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1, LOCATION3 IS NOT LOCATION1; TRIGGER: (SHORTDIST LOCATION1 LOCATION2); PRECONDITION: (MEDIUMDIST LOCATION2 LOCATION3); EFFECTS: (MEDIUMDIST LOCATION1 LOCATION3); END INIT.OPERATOR INIT.OPERATOR: AIRROUTES ARGUMENTS: LOCATION1, LOCATION2 IS NOT LOCATION1; TRIGGER: (OR (UNITEDROUTE LOCATION1 LOCATION2)(TWAROUTE LOCATION1 LOCATION2)); EFFECTS: (AIRROUTE LOCATION1 LOCATION2); END INIT.OPERATOR CAUSAL-RULE: ONELOCATION ARGUMENTS: OBJECT1, LOCATION1, LOCATION2; TRIGGER: (AT OBJECT1 LOCATION1); PRECONDITION: (AT OBJECT1 LOCATION2); EFFECTS: (NOT (AT OBJECT1 LOCATION2)); END CAUSAL-RULE CAUSAL-RULE: MOVING ARGUMENTS: OBJECT1, LOCATION1, LOCATION2; TRIGGER: (MOVE OBJECT1 LOCATION1 LOCATION2); PRECONDITION: (AT OBJECT1 LOCATION1); EFFECTS: (AT OBJECT1 LOCATION2),(NOT (AT OBJECT1 LOCATION1)); END CAUSAL-RULE CAUSAL-RULE: NORETURNTOAREA ARGUMENTS: OBJECT1, LOCATION1, LOCATION2 IS NOT LOCATION1, AREA1; TRIGGER: (MOVE OBJECT1 LOCATION1 LOCATION2); PRECONDITION: (IN LOCATION1 AREA1); EFFECTS: (NEVERRETURN AREA1); END CAUSAL-RULE ;locations do not change areas so this could as easily be a state rule STATE-RULE: NORETURN ARGUMENTS: OBJECT1, LOCATION1, LOCATION2 IS NOT LOCATION1; TRIGGER: (MOVE OBJECT1 LOCATION1 LOCATION2); EFFECTS: (NEVERRETURN LOCATION1); END STATE-RULE STOP ; Operators (actions) are defined (DEFINE.DOMAIN) OPERATOR: ORIDEHORSE ARGUMENTS: PERSON1 WITH CANRIDE YES, LOCATION1, LOCATION2 IS NOT LOCATION1, DRIVE-OWN, HORSE1; PURPOSE: (MOVE PERSON1 LOCATION1 LOCATION2); PRECONDITION: (AT PERSON1 LOCATION1), (AT HORSE1 LOCATION1), (HAVE PERSON1 HORSE1), (HORSEROUTE LOCATION1 LOCATION2); PLOT: PROCESS: ACTION: RIDE-HORSE.PRIM; ARGUMENTS: PERSON1, HORSE1, LOCATION1, LOCATION2; EFFECTS: (AT PERSON1 LOCATION2), (AT HORSE1 LOCATION2); END PLOT END OPERATOR OPERATOR: ODRIVE-OWN ARGUMENTS: PERSON1 WITH CANDRIVE YES, LOCATION1, LOCATION2 IS NOT LOCATION1, DRIVE-OWN, AUTO1; PURPOSE: (MOVE PERSON1 LOCATION1 LOCATION2); PRECONDITION: (AT PERSON1 LOCATION1), (AT AUTO1 LOCATION1), (HAVE PERSON1 AUTO1), (ROADROUTE LOCATION1 LOCATION2); PLOT: PROCESS: ACTION: DRIVE-CAR.PRIM; ARGUMENTS: PERSON1, AUTO1, LOCATION1, LOCATION2; EFFECTS: (AT PERSON1 LOCATION2), (AT AUTO1 LOCATION2); END PLOT END OPERATOR OPERATOR: ODRIVE-AVIS ARGUMENTS: PERSON1 WITH CANDRIVE YES, AVIS-LOCN1, AVIS-DROPOFF2 IS NOT AVIS-LOCN1, DRIVE-AVIS; PURPOSE: (MOVE PERSON1 AVIS-LOCN1 AVIS-DROPOFF2); PRECONDITION: (AT PERSON1 AVIS-LOCN1), (ROADROUTE AVIS-LOCN1 AVIS-DROPOFF2); PLOT: PROCESS: ACTION: HIRE-AVIS.PRIM; ARGUMENTS: PERSON1, AVISCAR1; EFFECTS: (HAVE PERSON1 AVISCAR1); PURPOSE: (AT PERSON1 AVIS-DROPOFF2); PROCESS: ACTION: DRIVE-CAR.PRIM; ARGUMENTS: PERSON1, AVISCAR1, AVIS-LOCN1, AVIS-DROPOFF2; EFFECTS: (MOVE PERSON1 AVIS-LOCN1 AVIS-DROPOFF2), (AT AVISCAR1 AVIS-DROPOFF2); PROCESS: ACTION: DROP-CAR.PRIM; ARGUMENTS: PERSON1, AVISCAR1, AVIS-DROPOFF2; EFFECTS: (NOT (HAVE PERSON1 AVISCAR1)); END PLOT END OPERATOR OPERATOR: ODRIVE-HERTZ ARGUMENTS: PERSON1 WITH CANDRIVE YES, HERTZ-LOCN1, HERTZ-DROPOFF2 IS NOT HERTZ-LOCN1, DRIVE-HERTZ; PURPOSE: (MOVE PERSON1 HERTZ-LOCN1 HERTZ-DROPOFF2); PRECONDITION: (AT PERSON1 HERTZ-LOCN1), (ROADROUTE HERTZ-LOCN1 HERTZ-DROPOFF2); PLOT: PROCESS: ACTION: HIRE-HERTZ.PRIM; ARGUMENTS: PERSON1, HERTZCAR1; EFFECTS: (HAVE PERSON1 HERTZCAR1); PURPOSE: (AT PERSON1 HERTZ-DROPOFF2); PROCESS: ACTION: DRIVE-CAR.PRIM; ARGUMENTS: PERSON1, HERTZCAR1, HERTZ-LOCN1, HERTZ-DROPOFF2; EFFECTS: (MOVE PERSON1 HERTZ-LOCN1 HERTZ-DROPOFF2), (AT HERTZCAR1 HERTZ-DROPOFF2); PROCESS: ACTION: DROP-CAR.PRIM; ARGUMENTS: PERSON1, HERTZCAR1, HERTZ-DROPOFF2; EFFECTS: (NOT (HAVE PERSON1 HERTZCAR1)); END PLOT END OPERATOR OPERATOR: OTRAINRIDE ARGUMENTS: PERSON1, LOCATION1, LOCATION2 IS NOT LOCATION1, TRAINRIDE1, TRAINCARRIER1; PURPOSE: (MOVE PERSON1 LOCATION1 LOCATION2); PRECONDITION: (AT PERSON1 LOCATION1), (TRAINROUTE TRAINCARRIER1 LOCATION1 LOCATION2); PLOT: PROCESS ACTION: TRAIN-TRAVEL.PRIM; ARGUMENTS: PERSON1, TRAINCARRIER1, LOCATION1, LOCATION2; EFFECTS: (AT PERSON1 LOCATION2); END PLOT END OPERATOR OPERATOR: OBUSRIDE ARGUMENTS: PERSON1, LOCATION1, LOCATION2 IS NOT LOCATION1, BUSRIDE1, BUSCARRIER1; PURPOSE: (MOVE PERSON1 LOCATION1 LOCATION2); PRECONDITION: (AT PERSON1 LOCATION1), (BUSROUTE BUSCARRIER1 LOCATION1 LOCATION2); PLOT: PROCESS ACTION: BUS-TRAVEL.PRIM; ARGUMENTS: PERSON1, BUSCARRIER1, LOCATION1, LOCATION2; EFFECTS: (AT PERSON1 LOCATION2); END PLOT END OPERATOR OPERATOR: OUNITED-FLIGHT ARGUMENTS: PERSON1, LOCATION1, LOCATION2 IS NOT LOCATION1, UNITED-FLIGHT; PURPOSE: (MOVE PERSON1 LOCATION1 LOCATION2); PRECONDITION: (AT PERSON1 LOCATION1),(UNITEDROUTE LOCATION1 LOCATION2); PLOT: PROCESS ACTION: UNITED-FLY.PRIM; ARGUMENTS: PERSON1, LOCATION1, LOCATION2; EFFECTS: (AT PERSON1 LOCATION2); END PLOT END OPERATOR OPERATOR: OTWA-FLIGHT ARGUMENTS: PERSON1, LOCATION1, LOCATION2 IS NOT LOCATION1, TWA-FLIGHT; PURPOSE: (MOVE PERSON1 LOCATION1 LOCATION2); PRECONDITION: (AT PERSON1 LOCATION1),(TWAROUTE LOCATION1 LOCATION2); PLOT: PROCESS ACTION: TWA-FLY.PRIM; ARGUMENTS: PERSON1, LOCATION1, LOCATION2; EFFECTS: (AT PERSON1 LOCATION2); END PLOT END OPERATOR OPERATOR: OTRAVELAIR ARGUMENTS: PERSON1, LOCATION1, LOCATION2 IS NOT LOCATION1, AIR-TRANSPORT1, LOCATION3 IS NOT LOCATION1 IS NOT LOCATION2, LOCATION4 IS NOT LOCATION1 IS NOT LOCATION2 IS NOT LOCATION3; PURPOSE: (MOVE PERSON1 LOCATION1 LOCATION2); PRECONDITION: (AT PERSON1 LOCATION1),(NOT (NEVERRETURN LOCATION2)), (OR (LONGDIST LOCATION1 LOCATION2)(MEDIUMDIST LOCATION1 LOCATION2)), (SHORTDIST LOCATION1 LOCATION3), (SHORTDIST LOCATION4 LOCATION2), (AIRROUTE LOCATION3 LOCATION4); PLOT: GOAL: GOALS: (MOVE PERSON1 LOCATION1 LOCATION3); ARGUMENTS: PERSON1, LOCATION1, LOCATION3, GROUND-TRANSPORT1; PURPOSE: (MOVE PERSON1 LOCATION3 LOCATION4); GOAL: GOALS: (MOVE PERSON1 LOCATION3 LOCATION4); ARGUMENTS: PERSON1, LOCATION3, LOCATION4, COMM-FLIGHT1; GOAL: GOALS: (MOVE PERSON1 LOCATION4 LOCATION2); ARGUMENTS: PERSON1, LOCATION4, LOCATION2, GROUND-TRANSPORT2; END PLOT END OPERATOR OPERATOR: OTRAVELGROUNDLOCAL ARGUMENTS: PERSON1, LOCATION1, LOCATION3 IS NOT LOCATION1, GROUND-TRANSPORT1, LOCATION2 IS NOT LOCATION1 IS NOT LOCATION3; PURPOSE: (MOVE PERSON1 LOCATION1 LOCATION3); PRECONDITION: (AT PERSON1 LOCATION1), (NOT (NEVERRETURN LOCATION2)), (SHORTDIST LOCATION1 LOCATION3), (SHORTDIST LOCATION1 LOCATION2); PLOT: GOAL: GOALS: (MOVE PERSON1 LOCATION1 LOCATION2); ARGUMENTS: PERSON1, LOCATION1, LOCATION2, GROUND-TRANSPORT2; GOAL: GOALS: (MOVE PERSON1 LOCATION2 LOCATION3); ARGUMENTS: PERSON1, LOCATION2, LOCATION3, GROUND-TRANSPORT3; END PLOT END OPERATOR OPERATOR: OTRAVELGROUNDFAR ARGUMENTS: PERSON1, LOCATION1, LOCATION3 IS NOT LOCATION1, GROUND-TRANSPORT1, LOCATION2 IS NOT LOCATION1 IS NOT LOCATION3, AREA2; PURPOSE: (MOVE PERSON1 LOCATION1 LOCATION3); PRECONDITION: (AT PERSON1 LOCATION1), (NOT (NEVERRETURN LOCATION2)), (IN LOCATION2 AREA2), (NOT (NEVERRETURN AREA2)), (NOT (SHORTDIST LOCATION1 LOCATION3)); PLOT: GOAL: GOALS: (MOVE PERSON1 LOCATION1 LOCATION2); ARGUMENTS: PERSON1, LOCATION1, LOCATION2, GROUND-TRANSPORT2; GOAL: GOALS: (MOVE PERSON1 LOCATION2 LOCATION3); ARGUMENTS: PERSON1, LOCATION2, LOCATION3, GROUND-TRANSPORT3; END PLOT END OPERATOR OPERATOR: OANYMOVE ARGUMENTS: PERSON1, LOCATION2, TRANSPORT1, LOCATION1 IS NOT LOCATION2; PURPOSE: (AT PERSON1 LOCATION2); PRECONDITION: (AT PERSON1 LOCATION1); PLOT: GOAL: GOALS: (MOVE PERSON1 LOCATION1 LOCATION2); ARGUMENTS: PERSON1, LOCATION1, LOCATION2, TRANSPORT1; END PLOT END OPERATOR OPERATOR: OTRIP ARGUMENTS: PERSON1, LOCATION1, TRANSPORT1; PURPOSE: (VISIT PERSON1 LOCATION1); PLOT: GOAL: GOALS: (AT PERSON1 LOCATION1); ARGUMENTS: PERSON1, LOCATION1, TRANSPORT1; GOALS: (STAYAT PERSON1 LOCATION1); END PLOT END OPERATOR OPERATOR: OVISIT ARGUMENTS: PERSON1, PERSON2, LOCATION1; PURPOSE: (VISIT PERSON1 PERSON2); PRECONDITION: (AT PERSON2 LOCATION1); PLOT: GOALS: (AT PERSON1 LOCATION1); GOALS: (STAYAT PERSON1 LOCATION1); END PLOT END OPERATOR OPERATOR: OHOTEL-A ARGUMENTS: PERSON1 WITH SPEND HIGH, LOCATION1; PURPOSE: (STAYAT PERSON1 LOCATION1); PLOT: GOALS: (AT PERSON1 LOCATION1); PROCESS: ACTION: EXPENSIVE-HOTEL.PRIM; ARGUMENTS: PERSON1, LOCATION1; END PLOT END OPERATOR OPERATOR: OHOTEL-B ARGUMENTS: PERSON1 WITH SPEND MEDIUM WITH DESIRE MEDIUM, LOCATION1; PURPOSE: (STAYAT PERSON1 LOCATION1); PLOT: GOALS: (AT PERSON1 LOCATION1); PROCESS: ACTION: MEDIUM-HOTEL.PRIM; ARGUMENTS: PERSON1, LOCATION1; END PLOT END OPERATOR OPERATOR: OCAMP-B ARGUMENTS: PERSON1 WITH SPEND LOW WITH DESIRE LOW, LOCATION1; PURPOSE: (STAYAT PERSON1 LOCATION1); PLOT: GOALS: (AT PERSON1 LOCATION1); PROCESS: ACTION: ROUGH-CAMP.PRIM; ARGUMENTS: PERSON1, LOCATION1; END PLOT END OPERATOR STOP (INIT.DEDUCE) (DEFINE.PROBLEM) PROBLEM: PROB1 GOAL: ARGUMENTS: BRUCE, BOSTON; GOALS: (VISIT BRUCE BOSTON); END PROBLEM PROBLEM: PROB2 GOAL: ARGUMENTS: SUE, CAMBRIDGE; GOALS: (VISIT SUE CAMBRIDGE); END PROBLEM PROBLEM: PROB3 GOAL: ARGUMENTS: HAROLD, SANFRAN, GROUND-TRANSPORT1; GOALS: (VISIT HAROLD SANFRAN); END PROBLEM PROBLEM: PROB4 GOAL: ARGUMENTS: HAROLD, SFO, GROUND-TRANSPORT1; GOALS: (VISIT HAROLD SFO); END PROBLEM PROBLEM: PROB5 GOALS: (VISIT PAMELA DAVID); END PROBLEM STOP