accao(nome : agarrar(O),
 condicoes : [onde(S), livre, existe(O,S)], 
   efeitos : [-livre, -existe(O,S), ocupado(O)], 
restricoes : [S\==O] ).

accao(nome : largar(O),
 condicoes : [onde(S), ocupado(O)], 
   efeitos : [-ocupado(O), livre, existe(O,S)], 
restricoes : [S\==O] ).

accao(nome : deslocar(A, B), 
 condicoes : [onde(A), porta(A,B)], 
   efeitos : [-onde(A), onde(B)], 
restricoes : [A\==B] ).


inicial([onde(s1), livre, existe(b1,s1), existe(b2,s2), existe(b3,s3), porta(s1,s2), porta(s2,s3), porta(s3,s2), porta(s2,s1)]).
objectivos([existe(b1,s3), existe(b2,s3), existe(b3,s3)]).



% Plano = [agarrar(b1), deslocar(s1,s2), deslocar(s2,s3), largar(b1), deslocar(s3,s2), agarrar(b2), deslocar(s2,s3), largar(b2)]

































