accao(nome : calcarSap(Pe),
 condicoes : [meia(Pe)],
   efeitos : [sapato(Pe)],
restricoes : []).
 
accao(nome : calcarMeia(Pe),
 condicoes : [],
   efeitos : [meia(Pe)],
restricoes : []).
 
inicial([]).
 
objectivos([sapato(esq),sapato(dir)]).
 
/* Calculo dos planos:
| ?- plano(L).
L = [calcarMeia(dir),calcarSap(dir),calcarMeia(esq),calcarSap(esq)];
L = [calcarMeia(dir),calcarMeia(esq),calcarSap(dir),calcarSap(esq)];
L = [calcarMeia(esq),calcarMeia(dir),calcarSap(dir),calcarSap(esq)];
L = [calcarMeia(dir),calcarMeia(esq),calcarSap(esq),calcarSap(dir)];
L = [calcarMeia(esq),calcarMeia(dir),calcarSap(esq),calcarSap(dir)];
L = [calcarMeia(esq),calcarSap(esq),calcarMeia(dir),calcarSap(dir)];
no
| ?-
 
Pode usar qualquer destes planos para testar a execução consistente de planos.
 
 
O resultado da execução do 1º plano acima, deverá ser:
 
Initial Situation: []
Action performed: calcarMeia(dir)
Situation: [meia(dir)]
Action performed: calcarSap(dir)
Situation: [sapato(dir),meia(dir)]
Action performed: calcarMeia(esq)
Situation: [meia(esq),sapato(dir),meia(dir)]
Action performed: calcarSap(esq)
Situation: [sapato(esq),meia(esq),sapato(dir),meia(dir)]
Goal [sapato(esq),sapato(dir)] satisfied
 
*/