*events*
(
"#<observation: " 
#<observation: p1-10
 state: ((dr-open dr12) (arm-empty) (inroom robot rm1) (inroom b1 rm1)
         (inroom b2 rm1) (connects dr12 rm1 rm2) (connects dr12 rm2 rm1)
         (pushable b1) (pushable b2) (dr-to-rm dr12 rm1) (dr-to-rm dr12 rm2))
 adds: ((next-to robot dr12))
 dels: nil >#
 
#<observation: p1-11
 state: ((dr-open dr12) (arm-empty) (inroom robot rm1) (inroom b1 rm1)
         (inroom b2 rm1) (connects dr12 rm1 rm2) (connects dr12 rm2 rm1)
         (pushable b1) (pushable b2) (dr-to-rm dr12 rm1) (dr-to-rm dr12 rm2)
         (next-to robot dr12))
 adds: ((inroom robot rm2))
 dels: ((inroom robot rm1)) >#
 
 
"#<observation: " 
#<observation: example-8
 state: ((dr-open door12) (dr-open door13) (dr-open door34) (arm-empty)
         (inroom robot room3) (inroom box1 room3) (inroom box2 room3)
         (inroom box3 room4) (dr-closed door24) (unlocked door34)
         (connects door12 room1 room2) (connects door13 room1 room3)
         (connects door34 room3 room4) (connects door24 room2 room4)
         (connects door24 room4 room2) (connects door34 room4 room3)
         (connects door13 room3 room1) (connects door12 room2 room1)
         (pushable box1) (pushable box2) (pushable box3) (locked door24)
         (dr-to-rm door12 room1) (dr-to-rm door12 room2)
         (dr-to-rm door13 room1) (dr-to-rm door13 room3)
         (dr-to-rm door34 room3) (dr-to-rm door34 room4)
         (dr-to-rm door24 room2) (dr-to-rm door24 room4) (next-to robot box3))
 adds: ((next-to robot door34))
 dels: ((next-to robot box3)) >#
 
#<observation: example-9
 state: ((dr-open door12) (dr-open door13) (dr-open door34) (arm-empty)
         (inroom robot room3) (inroom box1 room3) (inroom box2 room3)
         (inroom box3 room4) (dr-closed door24) (unlocked door34)
         (connects door12 room1 room2) (connects door13 room1 room3)
         (connects door34 room3 room4) (connects door24 room2 room4)
         (connects door24 room4 room2) (connects door34 room4 room3)
         (connects door13 room3 room1) (connects door12 room2 room1)
         (pushable box1) (pushable box2) (pushable box3) (locked door24)
         (dr-to-rm door12 room1) (dr-to-rm door12 room2)
         (dr-to-rm door13 room1) (dr-to-rm door13 room3)
         (dr-to-rm door34 room3) (dr-to-rm door34 room4)
         (dr-to-rm door24 room2) (dr-to-rm door24 room4) (next-to robot door34))
 adds: ((dr-closed door34))
 dels: ((dr-open door34)) >#
 
 
"#<observation: " 
#<observation: example-1
 state: ((dr-open door12) (dr-open door13) (locked door24) (arm-empty)
         (inroom robot room1) (inroom box1 room3) (inroom box2 room3)
         (inroom box3 room4) (dr-closed door34) (dr-closed door24)
         (unlocked door34) (connects door12 room1 room2)
         (connects door13 room1 room3) (connects door34 room3 room4)
         (connects door24 room2 room4) (connects door24 room4 room2)
         (connects door34 room4 room3) (connects door13 room3 room1)
         (connects door12 room2 room1) (pushable box1) (pushable box2)
         (pushable box3) (dr-to-rm door12 room1) (dr-to-rm door12 room2)
         (dr-to-rm door13 room1) (dr-to-rm door13 room3)
         (dr-to-rm door34 room3) (dr-to-rm door34 room4)
         (dr-to-rm door24 room2) (dr-to-rm door24 room4))
 adds: ((next-to robot door13))
 dels: nil >#
 
#<observation: example-2
 state: ((dr-open door12) (dr-open door13) (locked door24) (arm-empty)
         (inroom robot room1) (inroom box1 room3) (inroom box2 room3)
         (inroom box3 room4) (dr-closed door34) (dr-closed door24)
         (unlocked door34) (connects door12 room1 room2)
         (connects door13 room1 room3) (connects door34 room3 room4)
         (connects door24 room2 room4) (connects door24 room4 room2)
         (connects door34 room4 room3) (connects door13 room3 room1)
         (connects door12 room2 room1) (pushable box1) (pushable box2)
         (pushable box3) (dr-to-rm door12 room1) (dr-to-rm door12 room2)
         (dr-to-rm door13 room1) (dr-to-rm door13 room3)
         (dr-to-rm door34 room3) (dr-to-rm door34 room4)
         (dr-to-rm door24 room2) (dr-to-rm door24 room4) (next-to robot door13))
 adds: ((inroom robot room3))
 dels: ((inroom robot room1)) >#
 
#<observation: example-3
 state: ((dr-open door12) (dr-open door13) (locked door24) (arm-empty)
         (inroom box1 room3) (inroom box2 room3) (inroom box3 room4)
         (inroom robot room3) (dr-closed door34) (dr-closed door24)
         (unlocked door34) (connects door12 room1 room2)
         (connects door13 room1 room3) (connects door34 room3 room4)
         (connects door24 room2 room4) (connects door24 room4 room2)
         (connects door34 room4 room3) (connects door13 room3 room1)
         (connects door12 room2 room1) (pushable box1) (pushable box2)
         (pushable box3) (dr-to-rm door12 room1) (dr-to-rm door12 room2)
         (dr-to-rm door13 room1) (dr-to-rm door13 room3)
         (dr-to-rm door34 room3) (dr-to-rm door34 room4)
         (dr-to-rm door24 room2) (dr-to-rm door24 room4) (next-to robot door13))
 adds: ((next-to robot door34))
 dels: ((next-to robot door13)) >#
 
#<observation: example-4
 state: ((dr-open door12) (dr-open door13) (locked door24) (arm-empty)
         (inroom box1 room3) (inroom box2 room3) (inroom box3 room4)
         (inroom robot room3) (dr-closed door34) (dr-closed door24)
         (unlocked door34) (connects door12 room1 room2)
         (connects door13 room1 room3) (connects door34 room3 room4)
         (connects door24 room2 room4) (connects door24 room4 room2)
         (connects door34 room4 room3) (connects door13 room3 room1)
         (connects door12 room2 room1) (pushable box1) (pushable box2)
         (pushable box3) (dr-to-rm door12 room1) (dr-to-rm door12 room2)
         (dr-to-rm door13 room1) (dr-to-rm door13 room3)
         (dr-to-rm door34 room3) (dr-to-rm door34 room4)
         (dr-to-rm door24 room2) (dr-to-rm door24 room4) (next-to robot door34))
 adds: ((dr-open door34))
 dels: ((dr-closed door34)) >#
 
#<observation: example-5
 state: ((dr-open door12) (dr-open door13) (dr-open door34) (locked door24)
         (arm-empty) (inroom box1 room3) (inroom box2 room3)
         (inroom box3 room4) (inroom robot room3) (dr-closed door24)
         (unlocked door34) (connects door12 room1 room2)
         (connects door13 room1 room3) (connects door34 room3 room4)
         (connects door24 room2 room4) (connects door24 room4 room2)
         (connects door34 room4 room3) (connects door13 room3 room1)
         (connects door12 room2 room1) (pushable box1) (pushable box2)
         (pushable box3) (dr-to-rm door12 room1) (dr-to-rm door12 room2)
         (dr-to-rm door13 room1) (dr-to-rm door13 room3)
         (dr-to-rm door34 room3) (dr-to-rm door34 room4)
         (dr-to-rm door24 room2) (dr-to-rm door24 room4) (next-to robot door34))
 adds: ((inroom robot room4))
 dels: ((inroom robot room3)) >#
 
#<observation: example-6
 state: ((dr-open door12) (dr-open door13) (dr-open door34) (locked door24)
         (arm-empty) (inroom box1 room3) (inroom box2 room3)
         (inroom box3 room4) (inroom robot room4) (dr-closed door24)
         (unlocked door34) (connects door12 room1 room2)
         (connects door13 room1 room3) (connects door34 room3 room4)
         (connects door24 room2 room4) (connects door24 room4 room2)
         (connects door34 room4 room3) (connects door13 room3 room1)
         (connects door12 room2 room1) (pushable box1) (pushable box2)
         (pushable box3) (dr-to-rm door12 room1) (dr-to-rm door12 room2)
         (dr-to-rm door13 room1) (dr-to-rm door13 room3)
         (dr-to-rm door34 room3) (dr-to-rm door34 room4)
         (dr-to-rm door24 room2) (dr-to-rm door24 room4) (next-to robot door34))
 adds: ((dr-closed door34))
 dels: ((dr-open door34)) >#
 
#<observation: example-7
 state: ((dr-open door12) (dr-open door13) (locked door24) (arm-empty)
         (inroom box1 room3) (inroom box2 room3) (inroom box3 room4)
         (inroom robot room4) (dr-closed door34) (dr-closed door24)
         (unlocked door34) (connects door12 room1 room2)
         (connects door13 room1 room3) (connects door34 room3 room4)
         (connects door24 room2 room4) (connects door24 room4 room2)
         (connects door34 room4 room3) (connects door13 room3 room1)
         (connects door12 room2 room1) (pushable box1) (pushable box2)
         (pushable box3) (dr-to-rm door12 room1) (dr-to-rm door12 room2)
         (dr-to-rm door13 room1) (dr-to-rm door13 room3)
         (dr-to-rm door34 room3) (dr-to-rm door34 room4)
         (dr-to-rm door24 room2) (dr-to-rm door24 room4) (next-to robot door34))
 adds: ((next-to robot box3))
 dels: ((next-to robot door34)) >#
 ) 



goto-dr: 

(new-op operator op-1 (params <v2> <v3> <v1>)
 (preconds ((<v2> room) (<v3> room) (<v1> door))
  (and (arm-empty) 
       (dr-open <v1>)
       (dr-to-rm <v1> <v2>) 
       (dr-to-rm <v1> <v3>)
       (connects <v1> <v2> <v3>) 
       (connects <v1> <v3> <v2>) 
       (inroom robot <v3>)))
 (effects nil ((add (next-to robot <v1>))))




(new-op operator op-3 (params <v16> <v14> <v13>)
 (preconds ((<v16> room) (<v14> door) (<v13> door))
  (and (next-to robot <v14>) 
       (arm-empty) 
       (inroom robot <v16>)))
 (effects nil 
   ((add (next-to robot <v13>)) 
    (del (next-to robot <v14>))))


(new-op operator op-1
 (params <v4> <v6> <v7> <v2> <v3> <v5> <v9> <v11> <v8> <v10> <v1>)
 (preconds
  ((<v4> object) (<v6> object) (<v7> object) (<v2> door) (<v3> room)
   (<v5> room) (<v9> door) (<v11> room) (<v8> room) (<v10> door) (<v1> door))
  (and (arm-empty) 
       (dr-open <v1>) 
       (pushable <v4>)
        (pushable <v6>)
       (pushable <v7>) 
       (dr-to-rm <v2> <v3>) (dr-to-rm <v2> <v11>)
       (dr-to-rm <v1> <v3>) (dr-to-rm <v1> <v5>) (dr-to-rm <v9> <v5>)
       (dr-to-rm <v9> <v8>) (dr-to-rm <v10> <v11>) (dr-to-rm <v10> <v8>)))
 (effects nil ((add (next-to robot <v1>)))))


(new-op operator op-3
 (params <v27> <v26> <v28> <v29> <v32> <v25> <v33> <v30> <v31> <v24> <v23>)
 (preconds
  ((<v27> room) (<v26> object) (<v28> object) (<v29> object) (<v32> room)
   (<v25> door) (<v33> room) (<v30> room) (<v31> door) (<v24> door)
   (<v23> door))
  (and (arm-empty) 
       (next-to robot <v24>)
       (inroom <v29> <v30>)
       (inroom robot <v27>) 
       (dr-closed <v31>) (pushable <v26>) (pushable <v28>)
       (pushable <v29>) (locked <v31>) (dr-to-rm <v25> <v32>)
       (dr-to-rm <v25> <v33>) (dr-to-rm <v31> <v33>) (dr-to-rm <v31> <v30>)))
 (effects nil ((add (next-to robot <v23>)) (del (next-to robot <v24>)))))


diff op-1 op-3:

in op-1: (dr-open <v1>)  

in op-3: (dr-closed <v31>) (next-to robot <v24>) (locked <v31>)

v4--v26
v6--v28
v7--v29

How can I tell that op-1 and op-3 are the same operator??

In the obs-planning phase, when the learner applies op-1, it will
notice unexpected changes in the state, and he should realize then
that this is due to conditional effects.  
How to find out the preconds:  it would be very difficult without a
previous observation of the conditional effect.  So i will suppose i
have the observatin.  
intersect the current state with the preconds of the op according to
the conditional effect.   then try to merge op-1 and op-3.   their
common parts as preconds, (difference preconds(op-3) preconds(op-1))
is the preconds for conditional effects. 

While implementing environment.lisp, while matching the potential op
with real-ops, only map effects that are not conditional.  

This modification does not handle the situation in exp2.   It can only
be solved when the observer  thought some op is applicable, but it is
not. then it backtracks to the generalizations and modify the learned
op.


