1:- include('../ec_test_incl').    2/*
    3
    4   Formulae for the mail delivery domain.
    5
    6   Example queries:
    7
    8
    9*/
   10
   11do_test(mail1)   :- abdemo_special(loops,[holds_at(in(p1,r2),t)],R).
   12do_test(mail2)   :- abdemo_special(loops,[holds_at(in(p1,r3),t)],R).
   13
   14/* Compound actions */
   15
   16
   17axiom(happens(shift_pack(P,R1,R2,R3),T1,T6),
   18     [happens(go_to_room(R1,R2),T1,T2),
   19     b(T2,T3), not(clipped(T2,in(R2),T3)), not(clipped(T1,in(P,R2),T3)),
   20     happens(pick_up(P),T3), b(T3,T4), happens(go_to_room(R2,R3),T4,T5),
   21     b(T5,T6), not(clipped(T3,got(P),T6)), not(clipped(T5,in(R3),T6)),
   22     happens(put_down(P),T6)]).
   23
   24axiom(initiates(shift_pack(P,R1,R2,R3),in(P,R3),T),
   25     [holds_at(in(R1),T), holds_at(in(P,R2),T)]).
   26
   27
   28axiom(happens(go_to_room(R,R),T,T),[]).
   29
   30axiom(happens(go_to_room(R1,R3),T1,T3),
   31     [connects(D,R1,R2), towards(R2,R3,R1),
   32     happens(go_to_room(R2,R3),T2,T3), b(T1,T2), happens(go_through(D),T1),
   33     not(clipped(T1,in(R2),T2))]).
   34
   35axiom(happens(go_to_room(R1,R3),T1,T3),
   36     [connects(D,R1,R2), happens(go_through(D),T1),
   37     happens(go_to_room(R2,R3),T2,T3), b(T1,T2),
   38     not(clipped(T1,in(R2),T2))]).
   39
   40axiom(initiates(go_to_room(R1,R2),in(R2),T),[holds_at(in(R1),T)]).
   41
   42
   43
   44/* Primitive actions */
   45
   46
   47axiom(initiates(pick_up(P),got(P),T),
   48     [diff(P,robot), holds_at(in(P,R),T), holds_at(in(R),T)]).
   49
   50axiom(releases(pick_up(P),in(P,R),T),
   51     [diff(P,robot), holds_at(in(P,R),T), holds_at(in(R),T)]).
   52
   53
   54axiom(initiates(put_down(P),in(P,R),T),
   55     [diff(P,robot), holds_at(got(P),T), holds_at(in(R),T)]).
   56
   57axiom(terminates(put_down(P),got(P),T),[]).
   58
   59
   60axiom(initiates(go_through(D),in(R1),T),
   61     [connects(D,R2,R1), holds_at(in(R2),T)]).
   62
   63axiom(terminates(go_through(D),in(R),T),[holds_at(in(R),T)]).
   64
   65
   66
   67/* Narrative */
   68
   69
   70axiom(initially(in(r3)),[]).
   71
   72axiom(initially(neg(in(r1))),[]).
   73
   74axiom(initially(neg(in(r2))),[]).
   75
   76axiom(initially(in(p1,r1)),[]).
   77
   78axiom(initially(neg(in(p1,r2))),[]).
   79
   80axiom(initially(neg(in(p1,r3))),[]).
   81
   82
   83
   84/* Room connectivity */
   85
   86
   87axiom(connects(d1,r1,r2),[]).
   88
   89axiom(connects(d1,r2,r1),[]).
   90
   91axiom(connects(d2,r2,r3),[]).
   92
   93axiom(connects(d2,r3,r2),[]).
   94
   95
   96/* towards(R1,R2,R3) means that room R1 is towards room R2 from room R3. */
   97
   98axiom(towards(R1,R1,R2),[]).
   99
  100axiom(towards(r2,r1,r3),[]).
  101
  102axiom(towards(r2,r3,r1),[]).
  103
  104
  105
  106/* Abduction policy */
  107
  108
  109abducible(dummy).
  110
  111
  112executable(pick_up(P)).
  113
  114executable(put_down(P)).
  115
  116executable(go_through(D))