;; monkeys and bananas (literalize monkey at on holds ) (literalize object name at weight on ) (literalize goal status type object to ) (p mb1 (goal ^status active ^type holds ^object) (object ^name ^at ^on ceiling) --> (make goal ^status active ^type move ^object ladder ^to
) ) (p mb2 (goal ^status active ^type holds ^object
) (object ^name ^at ^on ceiling) (object ^name ladder ^at
) --> (make goal ^status active ^type on ^object ladder) ) (p mb3 (goal ^status active ^type holds ^object
) (object ^name ^at ^on ceiling) (object ^name ladder ^at
) (monkey ^on ladder) --> (make goal ^status active ^type holds ^object nil) ) (p mb4 (goal ^status active ^type holds ^object
) (object ^name ^at ^on ceiling) (object ^name ladder ^at
) (monkey ^on ladder ^holds nil) --> (write (crlf) grab
) (modify 4 ^holds ) (modify 1 ^status satisfied) ) (p mb5 (goal ^status active ^type holds ^object ) (object ^name ^at ^on floor) --> (make goal ^status active ^type walk-to ^object
) ) (p mb6 (goal ^status active ^type holds ^object
) (object ^name ^at ^on floor) (monkey ^at
) --> (make goal ^status active ^type holds ^object nil) ) (p mb7 (goal ^status active ^type holds ^object
) (object ^name ^at ^on floor) (monkey ^at
^holds nil) --> (write (crlf) grab
) (modify 3 ^holds ) (modify 1 ^status satisfied) ) (p mb8 (goal ^status active ^type move ^object ^to ) (object ^name
^weight light ^at <> ) --> (make goal ^status active ^type holds ^object
) ) (p mb9 (goal ^status active ^type move ^object ^to ) (object ^name
^weight light ^at <> ) (monkey ^holds
) --> (make goal ^status active ^type walk-to ^object ) ) (p mb10 (goal ^status active ^type move ^object
^to ) (object ^name
^weight light ^at ) --> (modify 1 ^status satisfied) ) (p mb11 (goal ^status active ^type walk-to ^object
) --> (make goal ^status active ^type on ^object floor) ) (p mb12 (goal ^status active ^type walk-to ^object
) (monkey ^on floor ^at {
<> } ^holds nil) --> (write (crlf) walk to
) (modify 2 ^at
) (modify 1 ^status satisfied) ) (p mb13 (goal ^status active ^type walk-to ^object
) (monkey ^on floor ^at {
<> } ^holds {
<> nil}) (object ^name ) --> (write (crlf) walk to ) (modify 2 ^at
) (modify 3 ^at
) (modify 1 ^status satisfied) ) (p mb14 (goal ^status active ^type on ^object floor) (monkey ^on {
<> floor}) --> (write (crlf) jump onto the floor) (modify 2 ^on floor) (modify 1 ^status satisfied) ) (p mb15 (goal ^status active ^type on ^object ) (object ^name ^at ) --> (make goal ^status active ^type walk-to ^object
) ) (p mb16 (goal ^status active ^type on ^object
) (object ^name ^at ) (monkey ^at
) --> (make goal ^status active ^type holds ^object nil) ) (p mb17 (goal ^status active ^type on ^object
) (object ^name ^at ) (monkey ^at
^holds nil) --> (write (crlf) climb onto
) (modify 3 ^on ) (modify 1 ^status satisfied) ) (p mb18 (goal ^status active ^type holds ^object nil) (monkey ^holds { <> nil}) --> (write (crlf) drop ) (modify 2 ^holds nil) (modify 1 ^status satisfied) ) (p mb19 (goal ^status active) --> (modify 1 ^status not-processed) ) (p start (start) --> (make monkey ^at 5-7 ^on couch) (make object ^name couch ^at 5-7 ^weight heavy) (make object ^name bananas ^on ceiling ^at 2-2) (make object ^name ladder ^on floor ^at 9-5 ^weight light) (make goal ^status active ^type holds ^object bananas) )