Sample PRODIGY Operators



;;;
;;; If a secure and usable airport exists at a location, an airunit can be
;;; deployed there.
;;;
(OPERATOR DEPLOY
  (params <air-unit> <loc>)
  (preconds
   ((<air-unit> AIRCRAFT)
    (<loc> LOCATION) ;Was of type airport
    (<airport> AIRPORT))
   (and
    (loc-at <airport> <loc>)
    (is-usable <airport>) 
    (airport-secure-at <loc>))
   )
  (effects
   ()
  ((add  (is-deployed <air-unit> <loc>))))
  )



;;;
;;; An air base is secure if two troop forces are deployed there to guard
;;; against external threats and if one police force is deployed there to 
;;; guard against threats inside the base (e.g., saboteurs on the flight 
;;; line). 
;;;
(OPERATOR SECURE
  (params <airport>
	  <loc>)
  (preconds
   ((<loc> LOCATION)
    (<airport> LOCATION)
    (<internal-security-force> POLICE-FORCE-MODULE)
    (<external-security-force1> (and ANTI-AIR-FORCE-MODULE
				     (diff <internal-security-force>
					   <external-security-force1>)))
    (<external-security-force2> (and TROOPS 
				    (diff <internal-security-force>
					  <external-security-force2>)
				    (diff <external-security-force1>
					  <external-security-force2>)))
    )
   (and (loc-at <airport> <loc>) ;Not state 4 subgoal, used to bind <country>
	(is-deployed  <internal-security-force> <loc>)
	(is-deployed  <external-security-force1> <loc>)
	(is-deployed  <external-security-force2> <loc>))
   )
  (effects
   ()
   ((add (airport-secure-at <loc>))))
  )



;;;
;;; Deploy an air unit to support an air interdiction mission. 
;;;
(OPERATOR SUPPORT
  (params <mission> <air-unit> <loc>)
  (preconds 
   ((<air-unit> AIR-FORCE-MODULE)
    (<mission> MISSION-NAME)
    (<loc> LOCATION)
    )
   (and (is-deployed <air-unit> <loc>)
	(mission-of <air-unit> <mission>))
   )
  (effects
   ()
   ((add (is-interdicted <loc>)))) ;Is this the right goal state?
  )



;;;
;;; Suppress enemy threat using ground forces.
;;;
(OPERATOR SUPPRESS
  (params <object-suppressed>
	  <loc>)
  (preconds 
   (
    (<loc> LOCATION)
    (<external-security-force1> INFANTRY)
    (<external-security-force2> (and SPECIAL-FORCE-MODULE
				     (diff <external-security-force1>
					   <external-security-force2>)))
    (<internal-security-force> (and POLICE-FORCE-MODULE 
				    (diff <external-security-force1>
					  <internal-security-force>)
				    (diff <external-security-force2>
					  <internal-security-force>)))
    )
   (and 
	(is-deployed  <external-security-force1> <loc>)
	(is-deployed  <external-security-force2> <loc>)
	(is-deployed  <internal-security-force> <loc>)
	))
  (effects
   (
    (<object-suppressed> (and TERRORISM 
			      (gen-from-pred 
			       (threat-at <object-suppressed> korea))))
    )
   ((add (is-suppressed <object-suppressed> <loc>))))
  )




Correspondence: mcox+@cs.cmu.edu

Last Edited: July 25, 1996