given(start,on(e,floor)). given(start,on(c,e)). given(start,clear(c)). given(start,on(a,floor)). given(start,clear(a)). given(start,on(d,floor)). given(start,on(b,d)). given(start,clear(b)). given(state1,on(x,floor)). given(state1,on(y,floor)). given(state1,clear(x)). given(state1,clear(y)). given(state2,on(p,floor)). given(state2,on(q,floor)). given(state2,on(r,p)). given(state2,clear(q)). given(state2,clear(r)). add(on(U,W), move(U,V,W)). add(clear(V), move(_,V,_)). del(on(U,Z), move(U,_,_)). del(clear(W), move(_,_,W)). can(move(U,V,floor), on(U,V)¬_equal(V,floor)&clear(U)). can(move(U,V,W), clear(W)&on(U,V)¬_equal(U,W)&clear(U)). imposs(on(X,Y)&clear(Y)). imposs(on(X,Y)&on(X,Z)¬_equal(Y,Z)). imposs(on(X,X)).