1:-include(library('ec_planner/ec_test_incl')).    2:-expects_dialect(pfc).    3 %  loading(always,'examples/Shanahan1999/Happy.e').
    4%;
    5%; Copyright (c) 2005 IBM Corporation and others.
    6%; All rights reserved. This program and the accompanying materials
    7%; are made available under the terms of the Common Public License v1.0
    8%; which accompanies this distribution, and is available at
    9%; http://www.eclipse.org/legal/cpl-v10.html
   10%;
   11%; Contributors:
   12%; IBM - Initial implementation
   13%;
   14%; @incollection{Shanahan:1999,
   15%;   author = "Shanahan, Murray",
   16%;   year = "1999",
   17%;   title = "The Event Calculus explained",
   18%;   editor = "Michael J. Wooldridge and Manuela M. Veloso",
   19%;   booktitle = "Artificial Intelligence Today: Recent Trends and Developments",
   20%;   series = "Lecture Notes in Computer Science",
   21%;   volume = "1600",
   22%;   pages = "409--430",
   23%;   address = "Berlin",
   24%;   publisher = "Springer",
   25%; }
   26%;
   27%; deduction
   28%;
   29%; modifications from Shanahan's formulation:
   30%; InitiallyN -> !HoldsAt
   31%; InitiallyP -> HoldsAt
   32%; timestamps
   33%;
   34
   35% load foundations/Root.e
   36
   37% load foundations/EC.e
   38
   39% sort person
   40==> sort(person).
   41
   42% event Feed(person)
   43 %  event(feed(person)).
   44==> mpred_prop(feed(person),event).
   45==> meta_argtypes(feed(person)).
   46
   47% event Clothe(person)
   48 %  event(clothe(person)).
   49==> mpred_prop(clothe(person),event).
   50==> meta_argtypes(clothe(person)).
   51
   52% fluent Happy(person)
   53 %  fluent(happy(person)).
   54==> mpred_prop(happy(person),fluent).
   55==> meta_argtypes(happy(person)).
   56
   57% fluent Hungry(person)
   58 %  fluent(hungry(person)).
   59==> mpred_prop(hungry(person),fluent).
   60==> meta_argtypes(hungry(person)).
   61
   62% fluent Cold(person)
   63 %  fluent(cold(person)).
   64==> mpred_prop(cold(person),fluent).
   65==> meta_argtypes(cold(person)).
   66
   67% noninertial Happy
   68==> noninertial(happy).
   69
   70
   71% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:42
   72% [person,time]
   73% HoldsAt(Happy(person),time) <->
   74% !HoldsAt(Hungry(person),time) &
   75% !HoldsAt(Cold(person),time).
   76
   77 /*  holds_at(happy(Person), Time) <->
   78       not(holds_at(hungry(Person), Time)),
   79       not(holds_at(cold(Person), Time)).
   80 */
   81% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:45
   82axiom(holds_at(happy(Person), Time),
   83   
   84    [ not(holds_at(hungry(Person), Time)),
   85      not(holds_at(cold(Person), Time))
   86    ]).
   87
   88 /*   if(holds_at(happy(Person), Time),
   89          (not(holds_at(hungry(Person), Time)), not(holds_at(cold(Person), Time)))).
   90 */
   91
   92 /*  not(holds_at(happy(Happy_Ret), Time2)) :-
   93       (   holds_at(hungry(Happy_Ret), Time2)
   94       ;   holds_at(cold(Happy_Ret), Time2)
   95       ).
   96 */
   97axiom(not(holds_at(happy(Happy_Ret), Time2)),
   98    [holds_at(hungry(Happy_Ret), Time2)]).
   99axiom(not(holds_at(happy(Happy_Ret), Time2)),
  100    [holds_at(cold(Happy_Ret), Time2)]).
  101
  102 /*  not(holds_at(hungry(Hungry_Ret), Time4)) :-
  103       holds_at(happy(Hungry_Ret), Time4).
  104 */
  105axiom(not(holds_at(hungry(Hungry_Ret), Time4)),
  106    [holds_at(happy(Hungry_Ret), Time4)]).
  107
  108 /*  not(holds_at(cold(Cold_Ret), Time6)) :-
  109       holds_at(happy(Cold_Ret), Time6).
  110 */
  111axiom(not(holds_at(cold(Cold_Ret), Time6)),
  112    [holds_at(happy(Cold_Ret), Time6)]).
  113
  114
  115% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:47
  116% [person,time]
  117% Terminates(Feed(person),Hungry(person),time).
  118% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:48
  119axiom(terminates(feed(Person), hungry(Person), Time),
  120    []).
  121
  122
  123% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:50
  124% [person,time]
  125% Terminates(Clothe(person),Cold(person),time).
  126% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:51
  127axiom(terminates(clothe(Person), cold(Person), Time),
  128    []).
  129
  130% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:53
  131% person Fred
  132% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:54
  133==> t(person,fred).
  134
  135
  136% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:55
  137% HoldsAt(Hungry(Fred),0).
  138axiom(initially(hungry(fred)),
  139    []).
  140
  141
  142% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:56
  143% !HoldsAt(Cold(Fred),0).
  144 %  not(initially(cold(fred))).
  145axiom(not(initially(cold(fred))),
  146    []).
  147
  148
  149% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:57
  150% Happens(Feed(Fred),1).
  151axiom(happens(feed(fred), start),
  152    [is_time(1), b(t, start), ignore(t+1=start)]).
  153
  154% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:59
  155% completion Happens
  156% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:60
  157==> completion(happens).
  158
  159% range time 0 2
  160% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:62
  161==> range(time,0,2).
  162
  163% range offset 1 1
  164% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Shanahan1999/Happy.e:63
  165==> range(offset,1,1).
  166%; End of file.