Ejemplos de DLVK




Ejemplo de blocksworld_Domain


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



  • fluents:
  • on(B,L) requires block(B), location(L).
    occupied(B) requires location(B).
    supported(B) requires block(B).

  • FLUENTES:
  • en (bloque B debe estar en la posición L) para ello se necesita que exista el bloque (B) y exista una localidad (L).
    Para que el bloque (B) sea ocupado requiere que el bloque (B) este en un lugar.
    Mantener el bloque (B) requiere que exista un bloque (B).


  • actions:
  • move(B,L) requires block(B), location(L).

  • ACCIONES:
  • mover el bloque (B) a la posición (L) requiere que el bloque (B), se encuentre en una posición (L).


  • always:
  • executable move(B,L) if not occupied(B), not occupied(L), B <> L.

  • SIEMPRE:
  • para que el movimiento del bloque (B) sea ejecutado necesita de una posición (L) si no hay evidencia de que el bloque (B) este ocupado, no hay evidencia de que la posición (L) este ocupada y el bloque (B) sea diferente de la posición (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.


  • Inercia
  • en el bloque (B) estando en la posición (L).
    causa que el bloque (B) este ocupado si en el bloque 1 (B1) esta sobre el bloque (B), y exista el bloque (B).

    causa en (bloque(B), estando en la posición (L)) después de mover (el bloque B a la posición L).

    causa negación en (bloque(B) en la posición (L1)) después de mover (el bloque (B) a la posición (L)), en (bloque(B) posición (L1)) y L debe ser diferente de L1.


  • noConcurrency.
  • No hay concurrencia.


  • initially:
  • caused false if on(B,L), on(B,L1), L<>L1.
    caused false if on(B1,B), on(B2,B), block(B), B1<>B2.
    caused supported(B) if on(B,table).
    caused supported(B) if on(B,B1), supported(B1).
    caused false if not supported(B).


  • INICIALMENTE:
  • causa falso si en el bloque (B) esta en la posición (L), en bloque (B) se encuentra en la posición (L1), y la posición (L) es diferente de (L1).

    causa falso si en el bloque (B1) se encuentra el bloque (B), en el bloque (B2) hay un bloque (B), exista un bloque (B) y B1 sea diferente de B2.
    causa mantener el bloque (B) si en (se encuentra sobre la mesa el bloque (B)).
    causa mantener el bloque (B) si en (bloque(B) se encuentra (B1)) y soporta (B1).
    causa falso si no hay evidencia de que el bloque (B) es apoyado.


    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