1:-include(library('ec_planner/ec_test_incl')). 2:-expects_dialect(pfc). 3 % loading(always,'examples/GiunchigliaEtAl2004/MonkeyBananas.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%; @article{Giunchiglia:2004, 15%; author = "Enrico Giunchiglia and Joohyung Lee and Vladimir Lifschitz and Norman C. McCain and Hudson Turner", 16%; year = "2004", 17%; title = "Nonmonotonic causal theories", 18%; journal = "Artificial Intelligence", 19%; volume = "153", 20%; pages = "49--104", 21%; } 22%; 23 24% sort object 25==> sort(object). 26 27% sort location 28==> sort(location). 29 30% object Monkey, Bananas, Box 31==> t(object,monkey). 32==> t(object,bananas). 33==> t(object,box). 34 35% location L1, L2, L3 36==> t(location,l1). 37==> t(location,l2). 38==> t(location,l3). 39 40% fluent At(object,location) 41 % fluent(at(object,location)). 42==> mpred_prop(at(object,location),fluent). 43==> meta_argtypes(at(object,location)). 44 45% fluent OnBox() 46 % fluent(onBox()). 47==> mpred_prop(onBox(),fluent). 48==> meta_argtypes(onBox()). 49 50% fluent HasBananas() 51 % fluent(hasBananas()). 52==> mpred_prop(hasBananas(),fluent). 53==> meta_argtypes(hasBananas()). 54 55% event Walk(location) 56 % event(walk(location)). 57==> mpred_prop(walk(location),event). 58==> meta_argtypes(walk(location)). 59 60% event PushBox(location) 61 % event(pushBox(location)). 62==> mpred_prop(pushBox(location),event). 63==> meta_argtypes(pushBox(location)). 64 65% event ClimbOn() 66 % event(climbOn()). 67==> mpred_prop(climbOn(),event). 68==> meta_argtypes(climbOn()). 69 70% event ClimbOff() 71 % event(climbOff()). 72==> mpred_prop(climbOff(),event). 73==> meta_argtypes(climbOff()). 74 75% event GraspBananas() 76 % event(graspBananas()). 77==> mpred_prop(graspBananas(),event). 78==> meta_argtypes(graspBananas()). 79 80 81% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:36 82% [object,location1,location2,time] 83% HoldsAt(At(object,location1),time) & 84% HoldsAt(At(object,location2),time) -> 85% location1=location2. 86% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:39 87axiom(Location1=Location2, 88 89 [ holds_at(at(Object, Location1), Time), 90 holds_at(at(Object, Location2), Time) 91 ]). 92 93 94% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:41 95% [object,location,time] 96% object=% Monkey -> 97% Initiates(Walk(location),At(object,location),time). 98% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:43 99axiom(initiates(walk(Location), at(Object, Location), Time), 100 [equals(Object, monkey)]). 101 102 103% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:45 104% [object,location1,location2,time] 105% object=% Monkey & 106% HoldsAt(At(object,location1),time) -> 107% Terminates(Walk(location2),At(object,location1),time). 108% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:48 109axiom(terminates(walk(Location2), at(Object, Location1), Time), 110 111 [ equals(Object, monkey), 112 holds_at(at(Object, Location1), Time) 113 ]). 114 115 116% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:50 117% [location,time] 118% Happens(Walk(location),time) -> 119% !HoldsAt(At(Monkey,location),time) & 120% !HoldsAt(OnBox(),time). 121% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:53 122axiom(requires(walk(Location), Time), 123 124 [ not(holds_at(at(monkey, Location), Time)), 125 not(holds_at(onBox(), Time)) 126 ]). 127 128 129% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:55 130% [location,time] 131% HoldsAt(HasBananas(),time) & 132% HoldsAt(At(Monkey,location),time) -> 133% HoldsAt(At(Bananas,location),time). 134% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:58 135axiom(holds_at(at(bananas, Location), Time), 136 137 [ holds_at(hasBananas(), Time), 138 holds_at(at(monkey, Location), Time) 139 ]). 140 141 142% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:60 143% [object,location,time] 144% object=% Box | object=Monkey -> 145% Initiates(PushBox(location),At(object,location),time). 146% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:62 147axiom(initiates(pushBox(Location), at(Object, Location), Time), 148 [equals(Object, box)]). 149axiom(initiates(pushBox(Location), at(Object, Location), Time), 150 [equals(Object, monkey)]). 151 152 153% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:64 154% [object,location1,location2,time] 155% (object=Box | object=Monkey) & 156% HoldsAt(At(object,location1),time) -> 157% Terminates(PushBox(location2),At(object,location1),time). 158% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:67 159axiom(terminates(pushBox(Location2), at(Object, Location1), Time), 160 161 [ equals(Object, box), 162 holds_at(at(Object, Location1), Time) 163 ]). 164axiom(terminates(pushBox(Location2), at(Object, Location1), Time), 165 166 [ equals(Object, monkey), 167 holds_at(at(Object, Location1), Time) 168 ]). 169 170 171% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:69 172% [location,time] 173% Happens(PushBox(location),time) -> 174% ({location1} 175% HoldsAt(At(Box,location1),time) & 176% HoldsAt(At(Monkey,location1),time)) & 177% !HoldsAt(At(Monkey,location),time) & 178% !HoldsAt(OnBox(),time). 179% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:75 180axiom(requires(pushBox(Location), Time), 181 182 [ holds_at(at(box, Location1), Time), 183 holds_at(at(monkey, Location1), Time), 184 not(holds_at(at(monkey, Location), Time)), 185 not(holds_at(onBox(), Time)) 186 ]). 187 188 189% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:77 190% [time] 191 % Initiates(ClimbOn(),OnBox(),time). 192axiom(initiates(climbOn(), onBox(), Time), 193 []). 194 195 196% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:79 197% [time] 198% Happens(ClimbOn(),time) -> 199% !HoldsAt(OnBox(),time). 200% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:81 201axiom(requires(climbOn(), Time), 202 [not(holds_at(onBox(), Time))]). 203 204 205% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:83 206% [time] 207 % Terminates(ClimbOff(),OnBox(),time). 208axiom(terminates(climbOff(), onBox(), Time), 209 []). 210 211 212% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:85 213% [time] 214% Happens(ClimbOff(),time) -> 215% HoldsAt(OnBox(),time). 216% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:87 217axiom(requires(climbOff(), Time), 218 [holds_at(onBox(), Time)]). 219 220 221% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:89 222% [time] 223 % Initiates(GraspBananas(),HasBananas(),time). 224axiom(initiates(graspBananas(), hasBananas(), Time), 225 []). 226 227 228% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:91 229% [object,location,time] 230% object=% Bananas -> 231% Releases(GraspBananas(),At(object,location),time). 232% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:93 233axiom(releases(graspBananas(), at(Object, Location), Time), 234 [equals(Object, bananas)]). 235 236 237% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:95 238% [time] 239% Happens(GraspBananas(),time) -> 240% ({location1} 241% HoldsAt(At(Bananas,location1),time) & 242% HoldsAt(At(Monkey,location1),time)) & 243% HoldsAt(OnBox(),time). 244% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:100 245axiom(requires(graspBananas(), Time), 246 247 [ holds_at(at(bananas, Location1), Time), 248 holds_at(at(monkey, Location1), Time), 249 holds_at(onBox(), Time) 250 ]). 251 252 253% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:102 254% [time] 255% HoldsAt(OnBox(),time) -> 256% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:104 257% {location1}% HoldsAt(At(Box,location1),time) & 258% HoldsAt(At(Monkey,location1),time). 259 260 /* exists([Location1], 261 if(holds_at(onBox(), Time), 262 (holds_at(at(box, Location1), Time), holds_at(at(monkey, Location1), Time)))). 263 */ 264 265 /* not(some(Location, '$kolem_Fn_122'(Time3))) :- 266 holds_at(onBox(), Time3), 267 ( not(holds_at(at(box, Location), Time3)) 268 ; not(holds_at(at(monkey, Location), Time3)) 269 ). 270 */ 271% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:105 272axiom(not(some(Location, '$kolem_Fn_122'(Time3))), 273 274 [ not(holds_at(at(box, Location), Time3)), 275 holds_at(onBox(), Time3) 276 ]). 277axiom(not(some(Location, '$kolem_Fn_122'(Time3))), 278 279 [ not(holds_at(at(monkey, Location), Time3)), 280 holds_at(onBox(), Time3) 281 ]). 282 283 /* not(holds_at(onBox(), Time5)) :- 284 ( not(holds_at(at(box, Location6), Time5)) 285 ; not(holds_at(at(monkey, Location6), Time5)) 286 ), 287 some(Location6, '$kolem_Fn_122'(Time5)). 288 */ 289axiom(not(holds_at(onBox(), Time5)), 290 291 [ not(holds_at(at(box, Location6), Time5)), 292 some(Location6, '$kolem_Fn_122'(Time5)) 293 ]). 294axiom(not(holds_at(onBox(), Time5)), 295 296 [ not(holds_at(at(monkey, Location6), Time5)), 297 some(Location6, '$kolem_Fn_122'(Time5)) 298 ]). 299 300 /* holds_at(at(box, Location7), Time8) :- 301 holds_at(onBox(), Time8), 302 some(Location7, '$kolem_Fn_122'(Time8)). 303 */ 304axiom(holds_at(at(box, Location7), Time8), 305 306 [ holds_at(onBox(), Time8), 307 some(Location7, '$kolem_Fn_122'(Time8)) 308 ]). 309 310 /* holds_at(at(monkey, Location9), Time10) :- 311 holds_at(onBox(), Time10), 312 some(Location9, '$kolem_Fn_122'(Time10)). 313 */ 314axiom(holds_at(at(monkey, Location9), Time10), 315 316 [ holds_at(onBox(), Time10), 317 some(Location9, '$kolem_Fn_122'(Time10)) 318 ]). 319 320 321% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/GiunchigliaEtAl2004/MonkeyBananas.e:107 322%; End of file.