TWEAK solving the Sussman anomaly ON(A,B) ON(B,C) ON(C,A) ONTABLE(A) ONTABLE(B) CLEAR(C) CLEAR(B) ARMEMPTY STACK(A,B) STACK(B,C) Two step additions to satisfy the two goals Also, simple establishment achieves highlighted propositions. ON(A,B) CLEAR(A) ~CLEAR(B) ARMEMPTY ON(B,C) CLEAR(B) ~CLEAR(C) ARMEMPTY ONTABLE(A) CLEAR(A) CLEAR(B) HOLDING(A) ONTABLE(B) CLEAR(B) CLEAR(C) HOLDING(B) Start state Goal state
ON(A,B) ON(B,C) STACK(A,B) STACK(B,C) Two more step additions to satisfy the two HOLDING preconditions ON(A,B) CLEAR(A) ~CLEAR(B) ARMEMPTY ON(B,C) CLEAR(B) ~CLEAR(C) ARMEMPTY ~ONTABLE(A) HOLDING(A) CLEAR(B) PICKUP(A) PICKUP(B) ONTABLE(A) CLEAR(A) ARMEMPTY ONTABLE(B) CLEAR(B) ARMEMPTY ON(C,A) ONTABLE(A) ONTABLE(B) CLEAR(C) CLEAR(B) ARMEMPTY Start state Goal state ~ONTABLE(B) HOLDING(B) CLEAR(C) Normally, when steps are added to the plan, two states should be created: a precondition and a result (effect). This is because other steps might be inserted inbetween. In these diagrams, I have omitted some of these states so that the diagrams can fit on the slides.
Promotion (or is it Declobbering??) establishes CLEAR(B) IN STATE A State A ON(A,B) ON(B,C) STACK(A,B) STACK(B,C) ON(A,B) CLEAR(A) ~CLEAR(B) ARMEMPTY ON(B,C) CLEAR(B) ~CLEAR(C) ARMEMPTY ~ONTABLE(A) HOLDING(A) CLEAR(B) ~ARMEMPTY PICKUP(A) PICKUP(B) ONTABLE(A) CLEAR(A) ARMEMPTY ONTABLE(B) CLEAR(B) ARMEMPTY ON(C,A) ONTABLE(A) ONTABLE(B) CLEAR(C) CLEAR(B) ARMEMPTY Start state Goal state ~ONTABLE(B) HOLDING(B) CLEAR(C) ~ARMEMPTY
Step Addition achieves CLEAR(A) in State B State B ON(A,B) ON(B,C) STACK(A,B) STACK(B,C) ON(A,B) CLEAR(A) ~CLEAR(B) ARMEMPTY ON(B,C) CLEAR(B) ~CLEAR(C) ARMEMPTY ~ONTABLE(A) HOLDING(A) CLEAR(B) ~ARMEMPTY PICKUP(A) PICKUP(B) ONTABLE(A) CLEAR(A) ARMEMPTY ONTABLE(B) CLEAR(B) ARMEMPTY ON(C,A) ONTABLE(A) ONTABLE(B) CLEAR(C) CLEAR(B) ARMEMPTY Start state Goal state ~ONTABLE(B) HOLDING(B) CLEAR(C) ~ARMEMPTY UNSTACK(C,A) CLEAR(C) ON(C,A) ARMEMPTY HOLDING(C) ~ON(C,A) ~ARMEMPTY
ON(A,B) ON(B,C) STACK(A,B) STACK(B,C) Step Addition achieves ARMEMPTY in State C ON(A,B) CLEAR(A) ~CLEAR(B) ARMEMPTY ON(B,C) CLEAR(B) ~CLEAR(C) ARMEMPTY CLEAR(B) HOLDING(A) ~ARMEMPTY PICKUP(A) PICKUP(B) ~ONTABLE(A) HOLDING(A) ~ARMEMPTY CLEAR(C) HOLDING(B) ~ARMEMPTY ~ONTABLE(B) HOLDING(B) ~ARMEMPTY ONTABLE(A) CLEAR(A) ARMEMPTY ONTABLE(B) CLEAR(B) ARMEMPTY ON(C,A) ONTABLE(A) ONTABLE(B) CLEAR(C) CLEAR(B) ARMEMPTY UNSTACK(C,A) HOLDING(C) CLEAR(A) ~ARMEMPTY ARMEMPTY ON(C,A) CLEAR(C) Start state Goal state State C PUTDOWN(C)
ON(A,B) ON(B,C) STACK(A,B) STACK(B,C) ON(A,B) CLEAR(A) ~CLEAR(B) ARMEMPTY ON(B,C) CLEAR(B) ~CLEAR(C) CLEAR(A) ARMEMPTY CLEAR(B) HOLDING(A) ~ARMEMPTY PICKUP(A) PICKUP(B) ~ONTABLE(A) HOLDING(A) ~ARMEMPTY CLEAR(C) HOLDING(B) ~ARMEMPTY ~ONTABLE(B) HOLDING(B) ~ARMEMPTY ONTABLE(A) CLEAR(A) ARMEMPTY ONTABLE(B) CLEAR(B) ARMEMPTY ON(C,A) ONTABLE(A) ONTABLE(B) CLEAR(C) CLEAR(B) ARMEMPTY UNSTACK(C,A) HOLDING(C) CLEAR(A) ~ARMEMPTY ARMEMPTY ON(C,A) CLEAR(C) Start state Goal state State D PUTDOWN(C) Promotion (or is it Declobbering??) establishes ARMEMPTY IN STATE D