
| (define (operator pickup)                                                                           |                                                            |
|-----------------------------------------------------------------------------------------------------|------------------------------------------------------------|
| : parameters    (?al ?x)                                                                            |                                                            |
| :precondition (and (inroom ?al ?rl) (inroom ?x ?rl)                                                 |                                                            |
| (handempty ?al) (onfloor ?x))                                                                       |                                                            |
| :concurrent    (and (not (pickup ?a2 ?x)) (not (= ?a1 ?a2)))                                        |                                                            |
| (and (not (handempty ?al)) (not (onfloor ?x)) (holding ?al ?x)))                                    |                                                            |
| : effect                                                                                            |                                                            |
| (define (operator putdown)                                                                          |                                                            |
| : parameters    (?al ?x)                                                                            |                                                            |
| :precondition   (and (inroom ?al ?rl) (inroom ?x ?rl) (inroom Table ?rl)                            |                                                            |
| (holding ?al ?x))                                                                                   |                                                            |
| : concurr ent                                                                                       | (not (lift ?a2 ?s1))                                       |
| : effect                                                                                            | (and (not (holding ?al ?x)) (ontable ?x) (handempty ?al))) |
| (define (operator totable)                                                                          |                                                            |
| : parameters    (?al ?sl)                                                                           |                                                            |
| :precondition  (and (inroom ?al ?rl) (inroom Table ?rl) (not (at side ?a2 ?sl)))                    |                                                            |
| :concurrent    (and (not (totable ?a2 ?s1)) (not (= ?a1 ?a2)))                                      |                                                            |
| : effect                                                                                            | (at side ?al ?sl))                                         |
|                                                                                                     |                                                            |
| (define (operator movetable)                                                                        |                                                            |
| : parameters    (?al ?r1)                                                                           |                                                            |
| : precondition  (holding ?al Table)                                                                 |                                                            |
| : concurrent    (and (movetable ?a2 ?r1) (not (= ?a1 ?a2)))                                         |                                                            |
| : effect                                                                                            | (and (inroom ?r1 Table) (inroom ?r1 ?a1)                   |
| (when ((ontable ?x) ()) (inroom ?r1 ?x))))                                                          |                                                            |
| (define (operator lower)                                                                            |                                                            |
| : parameters    (?al ?sl)                                                                           |                                                            |
| :precondition  (and (holding ?al ?sl) (up ?sl))                                                     |                                                            |
| :concurrent   (and (not (lift ?a2 ?s2)) (not (= ?a1 ?a2)) (not (= ?s1 ?s2)))                        |                                                            |
| ( and (not (up ?s1))(down ?s1) (not (holding ?a1 ?s1))                                              |                                                            |
| : effect                                                                                            | ( when ((and (ontable ?x) (up ?s2) (not (= ?s1 ?s2))       |
| (and (not (lower ?a2 ?s2)) (not (= ?a2 ?a1))))                                                      |                                                            |
| (and (onfloor ?x) (not (ontable x))))))                                                             |                                                            |
| (define (operator lift)                                                                             |                                                            |
| : parameters    (?al ?sl)                                                                           |                                                            |
| :precondition (and (atside ?s1 ?a1) (down ?s1) (down ?s2) (not (= ?s1 ?s2)))                        |                                                            |
| :concurrent   (and (not (lower ?a2 ?s2)) (not (= ?a1 ?a2)) (not (= ?s1 ?s2)))                       |                                                            |
| : effect                                                                                            | (and (not (down ?s1)) (up ?s1) (holding ?al ?s1)           |
| (www ) (wwww ) (www ) (www ) (www ) (www ) (www ) (www ) (www ) (www ) (www ) (ww ) (ww ) (ww ) (ww |                                                            |
| (and (not (lift ?a2 ?s2))))                                                                         |                                                            |
| (and (onfloor ?x) (not (ontable x))))))                                                             |                                                            |
