Robot y Mcluskey en habitaciones Sistema de produccin: Condiciones: Hay cuatro habitaciones en las cuales se ubican 3 elementos y hay una habitacin vacia: 1) Robot 2) Mcluskey 3) Pistola Ademas, hay 3 puertas que comunican las habitaciones. El objetivo del robot es encontrar el arma y proceder a buscar a Mcluskey para matarlo, en caso de que el robot se encuentre a Mcluskey sin tener el arma, el robot es eliminado.
Habitacion 1 (H1)
Habitacion 2 (H2)
Habitacion 3 (H3)
Habitacion 4 (H4)
BASE DE HECHOS Esta_en (Robot, H4) Esta_en (McCluskey, H1) Esta_en (Pistola, H3) Hay_puerta (P1, H1, H2) Hay_puerta (P2, H2, H4) Hay_puerta (P3, H3, H4) tiene(robot,pistola) NOT tiene (robot, pistola)
REGLAS Regla1: IF Esta_en (Robot, ? Habitacion1) Hay_puerta(?P, ?Habitacion1, ?Habitacion2) THEN Quitar (esta_en(robot, ?habitacion1)) Insertar (esta_en(robot, ?habitacion2)) Regla2: IF Esta_en (robot, ?habitacion1) AND Esta_en(pistola, ?habitacion2) THEN Quitar (esta_en(pistola, ?habitacion1)) Insertar (tiene(robot, pistola)) Regla3: IF Esta_en(robot, ?habitacin) AND Tiene (robot,pistola) AND Esta_en(McCluskey, ?habitacin) THEN Quitar (esta_en(McCluskey, ?habitacin)) Regla4: IF Esta_en(robot, ?habitacin) AND NOT tiene (robot, pistola) AND Esta_en(McCluskey, ?habitacin) THEN Quitar (esta_en(robot, ?habitacin))
Primer caso de ejecucin de las reglas Se dispara la regla 1: el robot usa la puerta entre la habitacin H4 y la habitacin H3, posteriormente se ubica en la habitacin H3. Se dispara la regla 2: El robot se encuentra en la habitacin H3 y la pistola se encuentra en la habitacin H3, entonces el robot toma la pistola y quitamos pistola de la habitacin H3. Se dispara regla 1: el robot usa la puerta entre la habitacin H3 y la habitacin H4, posteriormente se ubica en la habitacin H4. Se dispara la regla 1: El robot se encuentra en la habitacin H4 y usa la puerta entre la habitacin H4 y la habitacin H2, posteriormente se ubica en la habitacin H2 la cual se encuentra vaca. Se dispara la regla 1: El robot se encuentra en la habitacin H2 y usa la puerta entre la habitacin H2 y la habitacin H1, posteriormente se ubica en la habitacin H1. Se dispara regla 3: el robot se encuentra en la habitacin H1 con la pistola y McCluskey se encuentra tambin en la habitacin H1. El robot procede a matar a McCloskey y se retira a McCloskey de la habitacin H1 Segundo caso de ejecucin de las reglas: Se dispara la regla 1: el robot usa la puerta entre la habitacin H4 y la habitacin H2, posteriormente se ubica en la habitacin H2 la cual se encuentra vaca. Se dispara la regla 1: el robot se encuentra en la habitacin H2 y usa la puerta entre la habitacin H2 y la habitacin H1, posteriormente se ubica en la habitacin H1. Se dispara la regla 4: el robot se encuentra en la habitacin H1 sin la pistola y McCluskey se encuentra tambin en la habitacin H1. McCluskey procede a matar al robot y se retira el robot de la habitacin H1.
BASE DE HECHOS C=Casilla Esta_en (?fichanegra, C1) Esta_en (?fichanegra, C2) Esta_en (?fichanegra, C3) Esta_en (?fichanegra, C4) Esta_en (?fichanegra, C5) Esta_en (?fichanegra, C6) Esta_en (?fichanegra, C7) Esta_en (?fichanegra, C8) Esta_en (?fichanegra, C9) Esta_en (?fichanegra, C10) Esta_en (?fichanegra, C11) Esta_en (?fichanegra, C12) Es_diagonal_a(?Cb, ?Ca) Esta_vacia(?Cb) mueve_adelante(?fichanegra, ?Cb) Esta_vacia(?Cc) Es_diagonal_a(?Cc,?Cb) mueve_adelante(?fichanegra, ?Cc) Es_diagonal_a(?Cfinal,?Ca) Esta_vacia(?Cfinal) Se_convierte(?fichanegra,?reinanegra) Esta_en (?reinanegra,?Ca) Es_diagonal_a(?Cc, ?Ca) Mueve_adelante(?reinanegra, ?Cb) Mueve_atras(?reinanegra, ?Cc) Esta_en (?fichablanca,?Ca) Mueve_adelante(?fichablanca, ?Cb) Esta_en(?fichanegra, ?Cb) Mueve_adelante(?fichablanca,?Cc) Es_diagonal_a(?Cfinal2,?Ca) Esta_vacia(?Cfinal2) Se_convierte(?fichablanca,?reinablanca) Mueve_adelante(?reinablanca, ?Cb) Mueve_atras(?reinablanca, ?Cc) Esta_en (?fichablanca, C21) Esta_en (?fichablanca, C22) Esta_en (?fichablanca, C23) Esta_en (?fichablanca, C24) Esta_en (?fichablanca, C25) Esta_en (?fichablanca, C26) Esta_en (?fichablanca, C27) Esta_en (?fichablanca, C28) Esta_en (?fichablanca, C29) Esta_en (?fichablanca, C30) Esta_en (?fichablanca, C31) Esta_en (?fichablanca, C32)
REGLAS Regla1: (Mover las fichas negras) IF Esta_en (?fichanegra,?Ca) AND Es_diagonal_a(?Cb, ?Ca) AND Esta_vacia(?Cb) THEN Quitar (esta_vacia(?Cb)) Insertar (mueve_adelante(?fichanegra, ?Cb)) Regla2: (Comer ficha negra a blanca) IF Esta_en(?fichanegra, ?Ca) AND Esta_en(?fichablanca, ?Cb) AND Es_diagonal_a(?Cb,?Ca) AND Esta_vacia(?Cc) AND Es_diagonal_a(?Cc,?Cb) THEN Quitar (esta_en(?fichablanca, ?Cb)) Insertar (mueve_adelante(?fichanegra,?Cc)) Regla3: (Convertir ficha negra en reina) IF Esta_en(?fichanegra,?Ca) AND Es_diagonal_a(?Cfinal,?Ca) AND Esta_vacia(?Cfinal) THEN Quitar (esta_vacia(?Cfinal)) Insertar (se_convierte(?fichanegra,?reinanegra)) Regla4: (Mover ficha negra convertida a reina) IF Esta_en (?reinanegra,?Ca) AND Es_diagonal_a(?Cb, ?Ca) OR Es_diagonal_a(?Cc, ?Ca) AND Esta_vacia(?Cb) OR Esta_vacia(?Cc) THEN Quitar (esta_vacia(?Cb)) OR Quitar (esta_vacia(?Cc)) Insertar (mueve_adelante(?reinanegra, ?Cb)) OR Insertar (mueve_atras(?reinanegra, ?Cc))
Regla5: (Comer reina negra a ficha o reina blanca) IF Esta_en(?reinanegra, ?Ca) AND Esta_en(?fichablanca, ?Cb) OR Esta_en(?reinablanca, ?Cb) AND Es_diagonal_a(?Cb,?Ca) AND Esta_vacia(?Cc) AND Es_diagonal_a(?Cc,?Cb) THEN Quitar (esta_en(?fichablanca, ?Cb)) OR Quitar (esta_en(?reinablanca, ?Cb)) Insertar (mueve_adelante(?reinanegra,?Cc)) Insertar (mueve_atras(?reinanegra,?Cc)) Regla6: (Mover las fichas blancas) IF Esta_en (?fichablanca,?Ca) AND Es_diagonal_a(?Cb, ?Ca) AND Esta_vacia(?Cb) THEN Quitar (esta_vacia(?Cb)) Insertar (mueve_adelante(?fichablanca, ?Cb))
Regla7: (Comer ficha blanca a negra) IF Esta_en(?fichablanca, ?Ca) AND Esta_en(?fichanegra, ?Cb) AND Es_diagonal_a(?Cb,?Ca) AND Esta_vacia(?Cc) AND Es_diagonal_a(?Cc,?Ca) THEN Quitar (esta_en(?fichanegra, ?Cb)) Insertar (mueve_adelante(?fichablanca,?Cc)) Regla8: (Convertir ficha blanca en reina) IF Esta_en(?fichablanca,?Ca) AND Es_diagonal_a(?Cfinal2,?Ca) AND Esta_vacia(?Cfinal2) THEN Quitar (esta_vacia(?Cfinal2)) Insertar (se_convierte(?fichablanca,?reinablanca))
Regla9: (Mover ficha blanca convertida a reina) IF Esta_en (?reinablanca,?Ca) AND Es_diagonal_a(?Cb, ?Ca) OR Es_diagonal_a(?Cc, ?Ca) AND Esta_vacia(?Cb) OR Esta_vacia(?Cc) THEN Quitar (esta_vacia(?Cb)) OR Quitar (esta_vacia(?Cc)) Insertar (mueve_adelante(?reinablanca, ?Cb)) OR Insertar (mueve_atras(?reinablanca, ?Cc)) Regla10: (Comer reina blanca a ficha o reina negra) IF Esta_en(?reinablanca, ?Ca) AND Esta_en(?fichanegra, ?Cb) OR Esta_en(?reinanegra, ?Cb) AND Es_diagonal_a(?Cb,?Ca) AND Esta_vacia(?Cc) AND Es_diagonal_a(?Cc,?Cb) THEN Quitar (esta_en(?fichanegra, ?Cb)) OR Quitar (esta_en(?reinanegra, ?Cb)) Insertar (mueve_adelante(?reinablanca,?Cc)) Insertar (mueve_atras(?reinablanca,?Cc))