#| Acts (atrans ?Actant ?Object ?To ?From ?Mode ?Pov) (cause ?Ante ?Conseq ?_ ?_ ?Mode ?Pov) (grasp ?Actant ?Object ?_ ?_ ?Mode ?Pov) (ingest ?Actant ?Object ?_ ?_ ?Mode ?Pov) (mbuild ?Actant ?Object ?_ ?_ ?Mode ?Pov) (mtrans ?Actant ?Object (cp (part ?To)) ?From ?Mode ?Pov) (plan ?Actant ?Object ?_ ?_ ?Mode ?Pov) (ptrans ?Actant ?Object ?To ?From ?Mode ?Pov) (wants ?Actant ?Goal ?_ ?_ ?Mode ?Pov) |# #| Attributes (has ?Actant ?Object ?Mode ?Pov) (is-at ?Actant ?Location ?Mode ?Pov) (mloc (cp (part ?Actant)) ?Concept ?Mode ?Pov) (likes ?Actant ?Object ?Mode ?Pov) (deceives ?Actant ?Object ?Mode ?Pov) (dominate ?Actant ?Object ?Mode ?Pov) (knows ?Actant ?Object ?Mode ?Pov) (home ?Actant ?Object ?Mode ?Pov) (food ?Actant ?Object ?Mode ?Pov) (goal ?Actant ?Action ?Mode ?Pov) |# #| Initial facts |# (define-actant world :facts ;;; world knowledge about joe (is-at joe cave yes) (is-a joe bear yes) (home joe cave yes) ;;; world knowledge about bears (food bear honey yes) (food bear berries yes) (food bear fish yes) ;;; world knowledge about irving (is-at irving oak-tree yes) (is-a irving bird yes) (home irving oak-tree yes) ;;; world knowledge about birds (food bird worm yes) ;;; world knowledge about personae (is-a joe persona yes) (is-a irving persona yes) ;;; world knowledge about goals (is-a hungry goal yes world) (is-a thirsty goal yes world) ;;; world knowledge about miscellaneous actants (is-at water river yes) (is-at honey elm-tree yes) (is-at worm ground yes) (is-at fish river yes) ;;; world knowledge about locations (is-a cave location yes) (is-a oak-tree location yes) (is-a elm-tree location yes) (is-a ground location yes) (is-a river location yes) ;;; world knowledge about objects (-> (is-a ?LocationName location yes world) (is-a ?LocationName object yes world) yes world) (is-a honey object yes world) (is-a berries object yes world) (is-a fish object yes world) (is-a worm object yes world) (is-a water object yes world) ; world knowledge about plans #| The success of asking something depends upon whether the other person is honest and likes you. |# (<- (ask ?Actant1 ?Actant2 (?ActName ?Arg1 ?Arg2 ?Arg3 yes world) yes world) (and (not (deceives ?Actant2 ?Actant1 yes ?Actant2)) (likes ?Actant2 ?Actant1 yes ?Actant2) (tell ?Actant1 ?Actant2 (?ActName ?Arg1 ?Arg2 ?Arg3 question world) yes world) (store (?ActName ?Arg1 ?Arg2 ?Arg3 yes world)) (store (?ActName ?Arg1 ?Arg2 ?Arg3 yes ?Actant1))) yes world) (<- (ask ?Actant1 ?Actant2 (?ActName ?Arg1 ?Arg2 ?Arg3 yes world) yes world) (and (not (deceives ?Actant2 ?Actant1 yes ?Actant2)) (likes ?Actant2 ?Actant1 yes ?Actant2) (tell ?Actant1 ?Actant2 (?ActName ?Arg1 ?Arg2 ?Arg3 question world) yes world) (store (?ActName ?Arg1 ?Arg2 ?Arg3 yes world)) (store (?ActName ?Arg1 ?Arg2 ?Arg3 yes ?Actant1))) yes world) #| The success of bargaining with someone by giving them food depends on whether the other person is honest, you don't already have the goal of getting the food you're going to bargain with, and you can get the food to the other person. |# (<- (bargain ?Actant1 ?Actant2 (?ActName ?Arg1 ?Arg2 ?Arg3 yes world) yes world) (and (not (deceives ?Actant2 ?Actant1 yes ?Actant1)) (food ?Actant2 ?Food yes world) (not (has ?Actant2 ?Food yes world)) (not (goal ?Actant2 (has ?Actant2 ?Food yes world) yes world)) (store (mbuild ?Actant1 (cause (atrans ?Actant1 ?Food ?Actant2 ?Actant1 yes world) (?ActName ?Arg1 ?Arg2 ?Arg3 maybe world) ?_ ?_ yes world) ?_ ?_ yes world)) (tell ?Actant1 ?Actant2 (cause (atrans ?Actant1 ?Food ?Actant2 ?Actant1 yes world) (?ActName ?Arg1 ?Arg2 ?Arg3 yes world) ?_ ?_ question world) yes world) (dcont ?Actant1 ?Food yes world) (dprox ?Actant1 ?Actant1 ?Actant2 yes world) (store (atrans ?Actant1 ?Food ?Actant2 ?Actant1 yes world)) (store (?ActName ?Arg1 ?Arg2 ?Arg3 yes world)) (store (?ActName ?Arg1 ?Arg2 ?Arg3 yes ?Actant1))) yes world) #| The success of threatening depends upon whether you dominate the other person. |# (<- (threaten ?Actant1 ?Actant2 (?ActName ?Arg1 ?Arg2 ?Arg3 yes world) yes world) (and (not (dominate ?Actant2 ?Actant1 yes world)) (tell ?Actant1 ?Actant2 (cause (?ActName ?Arg1 ?Arg2 ?Arg3 no world) (propel ?Actant1 hand ?Actant2 ?_ yes world) ?_ ?_ yes world) yes world) (or (?ActName ?Arg1 ?Arg2 ?Arg3 yes world) (store (propel ?Actant1 hand ?Actant2 ?_ yes world)))) yes world) ; joe's knowledge about other actants and objects (is-at joe cave yes joe) (is-at irving oak-tree yes joe) (is-at water river yes joe) (is-at worm ground yes joe) ; irving's knowledge about other actants and objects (is-at irving oak-tree yes irving) (is-at honey elm-tree yes irving) (is-at joe cave yes irving) (is-at fish river yes irving)