CODIGO
fluents: on(B,L) requires block(B), location(L).
occupied(B) requires location(B).
actions: move(B,L) requires block(B), location(L).
always: executable move(B,L) if not occupied(B), not occupied(L), B <> L.
inertial on(B,L). caused occupied(B) if on(B1,B), block(B). caused on(B,L) after move(B,L). caused -on(B,L1) after move(B,L), on(B,L1), L <> L1.
noConcurrency.
background
block(B) :- #int(B). location(table). location(B) :- block(B).
DESCRIPCION DETALLADA
BACKGROUND
block(B) :- #int(B). location(table). location(B) :- block(B).
EJEMPLO 2
EJEMPLO |
DESCRIPCION DEL EJEMPLO |
fluents: atR(R,P) requires rocket(R), place(P). atC(C,P) requires cargo(C), place(P). in(C,R) requires rocket(R), cargo(C). hasFuel(R) requires rocket(R). |
atR( coheteR en lugarP) requiere de coheteR en lugarP atC(cargaC en lugarP) requiere de una cargaC en lugarP inC(cargaC en coeheteR) requiere coheteR con carga C lleno(coheteR)requiere de coheteR. |
actions: move(R,P) requires rocket(R), place(P). load(C,R) requires rocket(R), cargo(C). unload(C,R) requires rocket(R), cargo(C). |
Mover( cohete R a lugarP) requiere de coheteR y lugarP Cargar(cargaC en coheteR)requiere de coheteR y cargaC Descargar(cargaC de coheteR)requiere de coeheteR y el cargaC |
always: caused atR(R,P) after move(R,P). |
Despues de mover el coheteR al lugarP causa que coheteR este en el lugarP |
caused -atR(R,P) after move(R,P1), atR(R,P). |
Despues de mover el coheteR al lugarP1 de la posición P causa que coheteR este en el lugarP |
caused -hasFuel(R) after move(R,P). |
Después de moverle coheteR a el LugarP causara q el cohete este lleno |
executable move(R,P) if hasFuel(R), not atR(R,P). |
Ejecutar mover(coheteRal LugarP)si hay evidencia de Cohetelleno y no existe evidencia de q el cohete este en el lugarP |
caused in(C,R) after load(C,R). caused -atC(C,P) after load(C,R), atC(C,P). executable load(C,R) if atC(C,P), atR(R,P). |
Después de descargar la cargaC en el coheteR causa que la cargaC este el coheteR |
caused atC(C,P) after unload(C,R), atR(R,P). caused -in(C,R) after unload(C,R). executable unload(C,R) if in(C,R). |
Después de descargar la cargaC en el coheteR y que el coheteR este en el lugarP causa que la cargaC este en el lugarP Después de descrgar la cargaC en el coheteR causa que la cargaC no este en el coheteR Ejecutar descargar(cargaC encoheteR) si cargaC existe en CoheteR |
nonexecutable move(R,P) if load(C,R). nonexecutable move(R,P) if unload(C,R). nonexecutable move(R,P) if move(R,P1), P<>P1. nonexecutable load(C,R) if load(C,R1), R<>R1. |
Noejecutar mover(coheteR a lugarP) si cargar (cargaC en CoheteR) noejecutar mover(coheteR a lugarP) si descargar (cargaC en CoheteR) Noejecutar mover(coheteR a lugarP) si mover(coheteR a lugarP1) Noejecutar cargar(cargaC en CoheteR) si cargar(cargac en coheteR1) |
inertial atC(C,L). inertial atR(R,L). inertial in(C,R). inertial hasFuel(R). |
Por inercia la cargaC esta en un lugarL Por inercia el coheteR esta en un lugarL Por inercia lacargaC esta en unCoheteR Por inernerci el coheteR esta lleno |
initially: atR(R,earth). atC(C,earth). hasFuel(R). |
Estados iniciales atR(coheteR en el lugar_tierra) atC(cargaC en el lugar_tierra ) lleno |
goal: atC(car,moon), atC(food,mir),atC(tools,mir)?(3) |
Meta Llevar herramientas y comida , que estan en una carga a la luna |