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.