Acciones (movs.):
Descricción: edo(PosHorizMono, PosVertMono, PosCaja, TienePlátano).
Representar cambios de estado con 3 argumentos:
mov(estado1, accion, estado2).
tomar platano:
mov(edo(centro,sobre_caja,centro,no),toma,
edo(centro,sobre_caja,centro,si)).
subir:
mov(edo(X, piso, X, Y), sube, edo(X, sobre_caja, X, Y)).
empuja:
mov(edo(X, piso, X, Y), empuja(X,Z), edo(Z, piso, Z, Y)).
camina:
mov(edo(X, piso, Y, Z), camina(X,W), edo(W, piso, Y, Z)).
Para ver si puede comer: (hacer trace de: ?- come(edo(puerta,piso,ventana,no)).
come(edo(_,_,_,si)). come(Edo1) :- mov(Edo1, Acc, Edo2), come(Edo2).
El orden de los movimientos, implica una preferencia de acciones. Cambiando el orden podriamos inclusive nunca llegar a la solución (e.g., si ponemos el último movimiento al principio, se la pasaría caminando!).