If it protects subgoals, it will choose a subgoal to achieve first, say sitting_at(rob,o109), solve it trivially, and try to solve sitting_at(parcel,lab2) (while protecting the achieved subgoal). It will find quickly that it cannot solve this subgoal without undoing the protected subgoal. So then it will choose another subgoal to achieve first, and try to achieve sitting_at(parcel,lab2), then protect this subgoal and try to achieve sitting_at(rob,o109), and find a solution.