1:-include(library('ec_planner/ec_test_incl')).    2:-expects_dialect(pfc).    3 %  loading(always,'examples/Mueller2006/Exercises/SnoozeAlarm.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%; Example: Alarm Clock with snooze alarm added
   15%;
   16%; @book{Mueller:2006,
   17%;   author = "Erik T. Mueller",
   18%;   year = "2006",
   19%;   title = "Commonsense Reasoning",
   20%;   address = "San Francisco",
   21%;   publisher = "Morgan Kaufmann/Elsevier",
   22%; }
   23%;
   24
   25% load foundations/Root.e
   26
   27% load foundations/EC.e
   28
   29% sort agent
   30==> sort(agent).
   31
   32% sort clock
   33==> sort(clock).
   34
   35% fluent Beeping(clock)
   36 %  fluent(beeping(clock)).
   37==> mpred_prop(beeping(clock),fluent).
   38==> meta_argtypes(beeping(clock)).
   39
   40% fluent AlarmTime(clock,time)
   41 %  fluent(alarmTime(clock,time)).
   42==> mpred_prop(alarmTime(clock,time),fluent).
   43==> meta_argtypes(alarmTime(clock,time)).
   44
   45% fluent AlarmOn(clock)
   46 %  fluent(alarmOn(clock)).
   47==> mpred_prop(alarmOn(clock),fluent).
   48==> meta_argtypes(alarmOn(clock)).
   49
   50% event SetAlarmTime(agent,clock,time)
   51 %  event(setAlarmTime(agent,clock,time)).
   52==> mpred_prop(setAlarmTime(agent,clock,time),event).
   53==> meta_argtypes(setAlarmTime(agent,clock,time)).
   54
   55% event StartBeeping(clock)
   56 %  event(startBeeping(clock)).
   57==> mpred_prop(startBeeping(clock),event).
   58==> meta_argtypes(startBeeping(clock)).
   59
   60% event TurnOnAlarm(agent,clock)
   61 %  event(turnOnAlarm(agent,clock)).
   62==> mpred_prop(turnOnAlarm(agent,clock),event).
   63==> meta_argtypes(turnOnAlarm(agent,clock)).
   64
   65% event TurnOffAlarm(agent,clock)
   66 %  event(turnOffAlarm(agent,clock)).
   67==> mpred_prop(turnOffAlarm(agent,clock),event).
   68==> meta_argtypes(turnOffAlarm(agent,clock)).
   69
   70% event PressSnooze(agent,clock)
   71 %  event(pressSnooze(agent,clock)).
   72==> mpred_prop(pressSnooze(agent,clock),event).
   73==> meta_argtypes(pressSnooze(agent,clock)).
   74
   75% agent Nathan
   76==> t(agent,nathan).
   77
   78% clock Clock
   79==> t(clock,clock).
   80%; Sigma
   81% [agent,clock,time1,time2,time]
   82% HoldsAt(AlarmTime(clock,time1),time) &
   83% time1!=time2 ->
   84% Initiates(SetAlarmTime(agent,clock,time2),AlarmTime(clock,time2),time).
   85axiom(initiates(setAlarmTime(Agent, Clock, Time2), alarmTime(Clock, Time2), Time),
   86   
   87    [ holds_at(alarmTime(Clock, Time1), Time),
   88      { dif(Time1, Time2)
   89      }
   90    ]).
   91
   92
   93% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:48
   94% [agent,clock,time1,time2,time]
   95% HoldsAt(AlarmTime(clock,time1),time) &
   96% time1!=time2 ->
   97% Terminates(SetAlarmTime(agent,clock,time2),AlarmTime(clock,time1),time).
   98% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:51
   99axiom(terminates(setAlarmTime(Agent, Clock, Time2), alarmTime(Clock, Time1), Time),
  100   
  101    [ holds_at(alarmTime(Clock, Time1), Time),
  102      { dif(Time1, Time2)
  103      }
  104    ]).
  105
  106
  107% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:53
  108% [agent,clock,time]
  109% Initiates(TurnOnAlarm(agent,clock),AlarmOn(clock),time).
  110% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:54
  111axiom(initiates(turnOnAlarm(Agent, Clock), alarmOn(Clock), Time),
  112    []).
  113
  114
  115% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:56
  116% [agent,clock,time]
  117% Terminates(TurnOffAlarm(agent,clock),AlarmOn(clock),time).
  118% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:57
  119axiom(terminates(turnOffAlarm(Agent, Clock), alarmOn(Clock), Time),
  120    []).
  121
  122
  123% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:59
  124% [clock,time]
  125% Initiates(StartBeeping(clock),Beeping(clock),time).
  126% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:60
  127axiom(initiates(startBeeping(Clock), beeping(Clock), Time),
  128    []).
  129
  130
  131% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:62
  132% [agent,clock,time]
  133% Terminates(TurnOffAlarm(agent,clock),Beeping(clock),time).
  134% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:63
  135axiom(terminates(turnOffAlarm(Agent, Clock), beeping(Clock), Time),
  136    []).
  137
  138
  139% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:65
  140%; added axioms:
  141% [agent,clock,time2,time]
  142% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:68
  143% HoldsAt(Beeping(clock),time) &
  144% time2 = time+9 ->
  145% Initiates(PressSnooze(agent,clock),AlarmTime(clock,time2),time).
  146% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:70
  147axiom(initiates(pressSnooze(Agent, Clock), alarmTime(Clock, Time2), Time),
  148   
  149    [ holds_at(beeping(Clock), Time),
  150      equals(Time2, Time+9)
  151    ]).
  152
  153
  154% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:72
  155% [agent,clock,time1,time2,time]
  156% HoldsAt(Beeping(clock),time) &
  157% HoldsAt(AlarmTime(clock,time1),time) &
  158% time2 = time+9 &
  159% time1 != time2 ->
  160% Terminates(PressSnooze(agent,clock),AlarmTime(clock,time1),time).
  161% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:77
  162axiom(terminates(pressSnooze(Agent, Clock), alarmTime(Clock, Time1), Time),
  163   
  164    [ holds_at(beeping(Clock), Time),
  165      holds_at(alarmTime(Clock, Time1), Time),
  166      equals(Time2, Time+9),
  167      { dif(Time1, Time2)
  168      }
  169    ]).
  170
  171
  172% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:79
  173% [agent,clock,time]
  174% Terminates(PressSnooze(agent,clock),Beeping(clock),time).
  175% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:80
  176axiom(terminates(pressSnooze(Agent, Clock), beeping(Clock), Time),
  177    []).
  178
  179
  180% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:82
  181%; Delta
  182% [clock,time]
  183% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:85
  184% HoldsAt(AlarmTime(clock,time),time) &
  185% HoldsAt(AlarmOn(clock),time) ->
  186% Happens(StartBeeping(clock),time).
  187% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:87
  188axiom(happens(startBeeping(Clock), Time),
  189   
  190    [ holds_at(alarmTime(Clock, Time), Time),
  191      holds_at(alarmOn(Clock), Time)
  192    ]).
  193
  194
  195% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:89
  196% Happens(SetAlarmTime(Nathan,Clock,2),0).
  197axiom(happens(setAlarmTime(nathan, clock, 2), t),
  198    [is_time(0)]).
  199
  200
  201% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:90
  202% Happens(TurnOnAlarm(Nathan,Clock),1).
  203axiom(happens(turnOnAlarm(nathan, clock), start),
  204    [is_time(1), b(t, start), ignore(t+1=start)]).
  205
  206
  207% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:91
  208% Happens(PressSnooze(Nathan,Clock),4).
  209axiom(happens(pressSnooze(nathan, clock), t4),
  210    [is_time(4), b(t, t4), ignore(t+4=t4)]).
  211
  212
  213% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:93
  214%; Psi
  215% [clock,time1,time2,time]
  216% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:96
  217% HoldsAt(AlarmTime(clock,time1),time) &
  218% HoldsAt(AlarmTime(clock,time2),time) ->
  219% time1=time2.
  220% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:98
  221axiom(Time1=Time2,
  222   
  223    [ holds_at(alarmTime(Clock, Time1), Time),
  224      holds_at(alarmTime(Clock, Time2), Time)
  225    ]).
  226
  227
  228% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:100
  229%; Gamma
  230
  231
  232% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:102
  233% !HoldsAt(AlarmOn(Clock),0).
  234 %  not(initially(alarmOn(clock))).
  235axiom(not(initially(alarmOn(clock))),
  236    []).
  237
  238
  239% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:103
  240% !HoldsAt(Beeping(Clock),0).
  241 %  not(initially(beeping(clock))).
  242axiom(not(initially(beeping(clock))),
  243    []).
  244
  245
  246% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:104
  247% HoldsAt(AlarmTime(Clock,3),0).
  248axiom(initially(alarmTime(clock, 3)),
  249    []).
  250
  251% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:106
  252% completion Happens
  253% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:107
  254==> completion(happens).
  255
  256% range time 0 15
  257% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:109
  258==> range(time,0,15).
  259
  260% range offset 1 1
  261% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Exercises/SnoozeAlarm.e:110
  262==> range(offset,1,1).
  263%; End of file.