1:-include(library('ec_planner/ec_test_incl')). 2:-expects_dialect(pfc). 3 % loading(always,'examples/Mueller2006/Chapter10/TwoScreens.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%; @phdthesis{Cassimatis:2002,
15%; author = "Nicholas L. Cassimatis",
16%; year = "2002",
17%; title = "Polyscheme: A Cognitive Architecture for Integrating Multiple Representation and Inference Schemes",
18%; address = "Cambridge, MA",
19%; school = "Program in Media Arts and Sciences, School of Architecture and Planning, Massachusetts Institute of Technology",
20%; }
21%;
22%; @book{Mueller:2006,
23%; author = "Erik T. Mueller",
24%; year = "2006",
25%; title = "Commonsense Reasoning",
26%; address = "San Francisco",
27%; publisher = "Morgan Kaufmann/Elsevier",
28%; }
29%;
30
31% load foundations/Root.e
32
33% load foundations/EC.e
34
35% sort object
36==> sort(object).
37
38% sort location
39==> sort(location).
40
41% object O1, O2
42==> t(object,o1).
43==> t(object,o2).
44
45% location L1, L2, L3, L4, L5
46==> t(location,l1).
47==> t(location,l2).
48==> t(location,l3).
49==> t(location,l4).
50==> t(location,l5).
51
52% predicate Adjacent(location,location)
53 % predicate(adjacent(location,location)).
54==> mpred_prop(adjacent(location,location),predicate).
55==> meta_argtypes(adjacent(location,location)).
56
57% predicate Equal(object,object)
58 % predicate(equal(object,object)).
59==> mpred_prop(equal(object,object),predicate).
60==> meta_argtypes(equal(object,object)).
61
62% fluent At(object,location)
63 % fluent(at(object,location)).
64==> mpred_prop(at(object,location),fluent).
65==> meta_argtypes(at(object,location)).
66
67% event Move(object,location,location)
68 % event(move(object,location,location)).
69==> mpred_prop(move(object,location,location),event).
70==> meta_argtypes(move(object,location,location)).
71
72
81axiom(initiates(move(Object, Location1, Location2), at(Object, Location2), Time),
82
83 [ holds_at(at(Object, Location1), Time),
84 adjacent(Location1, Location2)
85 ]).
86
87
94axiom(terminates(move(Object, Location1, Location2), at(Object, Location1), Time),
95
96 [ holds_at(at(Object, Location1), Time),
97 adjacent(Location1, Location2)
98 ]).
99
100
109axiom(Location1=Location2,
110
111 [ holds_at(at(Object, Location1), Time),
112 holds_at(at(Object, Location2), Time)
113 ]).
114
115
120
121 124
125 128axiom(holds_at(at(At_Param, Location4), Time5),
129 [some(Location4, '$kolem_Fn_2'(At_Param, Time5))]).
130
131 134axiom(not(some(Location7, '$kolem_Fn_2'(Fn_2_Param, Time8))),
135 [not(holds_at(at(Fn_2_Param, Location7), Time8))]).
136
137
144axiom(equal(Object1, Object2),
145
146 [ holds_at(at(Object1, Location), Time),
147 holds_at(at(Object2, Location), Time)
148 ]).
149
150
155
156 160axiom(adjacent(Location1, Location2),
161 [adjacent(Location2, Location1)]).
162axiom(adjacent(Location2, Location1),
163 [adjacent(Location1, Location2)]).
164
165
170
171 175axiom(equal(Object1, Object2),
176 [equal(Object2, Object1)]).
177axiom(equal(Object2, Object1),
178 [equal(Object1, Object2)]).
179
180
194
195 215axiom(adjacent(Location1, Location2),
216 [equals(Location1, l1), equals(Location2, l2)]).
217axiom(adjacent(Location1, Location2),
218 [equals(Location1, l2), equals(Location2, l1)]).
219axiom(adjacent(Location1, Location2),
220 [equals(Location1, l2), equals(Location2, l3)]).
221axiom(adjacent(Location1, Location2),
222 [equals(Location1, l3), equals(Location2, l2)]).
223axiom(adjacent(Location1, Location2),
224 [equals(Location1, l3), equals(Location2, l4)]).
225axiom(adjacent(Location1, Location2),
226 [equals(Location1, l4), equals(Location2, l3)]).
227axiom(adjacent(Location1, Location2),
228 [equals(Location1, l4), equals(Location2, l5)]).
229axiom(adjacent(Location1, Location2),
230 [equals(Location1, l5), equals(Location2, l4)]).
231
232 235todo_later(if(adjacent(Location1, Location2), (Location1=l1, Location2=l2;Location1=l2, Location2=l1;Location1=l2, Location2=l3;Location1=l3, Location2=l2;Location1=l3, Location2=l4;Location1=l4, Location2=l3;Location1=l4, Location2=l5;Location1=l5, Location2=l4)), [(not(adjacent(Adjacent_Param, Equals_Param)):-(not(equals(Adjacent_Param, l1));not(equals(Equals_Param, l2))), (not(equals(Adjacent_Param, l2));not(equals(Equals_Param, l1))), (not(equals(Adjacent_Param, l2));not(equals(Equals_Param, l3))), (not(equals(Adjacent_Param, l3));not(equals(Equals_Param, l2))), (not(equals(Adjacent_Param, l3));not(equals(Equals_Param, l4))), (not(equals(Adjacent_Param, l4));not(equals(Equals_Param, l3))), (not(equals(Adjacent_Param, l4));not(equals(Equals_Param, l5))), (not(equals(Adjacent_Param, l5));not(equals(Equals_Param, l4)))), (equals(Equals_Param4, l1):-((not(equals(Equals_Param4, l2));not(equals(Equals_Param5, l1))), (not(equals(Equals_Param4, l2));not(equals(Equals_Param5, l3))), (not(equals(Equals_Param4, l3));not(equals(Equals_Param5, l2))), (not(equals(Equals_Param4, l3));not(equals(Equals_Param5, l4))), (not(equals(Equals_Param4, l4));not(equals(Equals_Param5, l3))), (not(equals(Equals_Param4, l4));not(equals(Equals_Param5, l5))), (not(equals(Equals_Param4, l5));not(equals(Equals_Param5, l4)))), adjacent(Equals_Param4, Equals_Param5)), (equals(Equals_Param6, l2):-((not(equals(Equals_Param7, l2));not(equals(Equals_Param6, l1))), (not(equals(Equals_Param7, l2));not(equals(Equals_Param6, l3))), (not(equals(Equals_Param7, l3));not(equals(Equals_Param6, l2))), (not(equals(Equals_Param7, l3));not(equals(Equals_Param6, l4))), (not(equals(Equals_Param7, l4));not(equals(Equals_Param6, l3))), (not(equals(Equals_Param7, l4));not(equals(Equals_Param6, l5))), (not(equals(Equals_Param7, l5));not(equals(Equals_Param6, l4)))), adjacent(Equals_Param7, Equals_Param6)), (equals(Equals_Param8, l2):-((not(equals(Equals_Param8, l2));not(equals(Equals_Param9, l3))), (not(equals(Equals_Param8, l3));not(equals(Equals_Param9, l2))), (not(equals(Equals_Param8, l3));not(equals(Equals_Param9, l4))), (not(equals(Equals_Param8, l4));not(equals(Equals_Param9, l3))), (not(equals(Equals_Param8, l4));not(equals(Equals_Param9, l5))), (not(equals(Equals_Param8, l5));not(equals(Equals_Param9, l4)))), (not(equals(Equals_Param8, l1));not(equals(Equals_Param9, l2))), adjacent(Equals_Param8, Equals_Param9)), (equals(Equals_Param10, l1):-((not(equals(Equals_Param11, l2));not(equals(Equals_Param10, l3))), (not(equals(Equals_Param11, l3));not(equals(Equals_Param10, l2))), (not(equals(Equals_Param11, l3));not(equals(Equals_Param10, l4))), (not(equals(Equals_Param11, l4));not(equals(Equals_Param10, l3))), (not(equals(Equals_Param11, l4));not(equals(Equals_Param10, l5))), (not(equals(Equals_Param11, l5));not(equals(Equals_Param10, l4)))), (not(equals(Equals_Param11, l1));not(equals(Equals_Param10, l2))), adjacent(Equals_Param11, Equals_Param10)), (equals(Equals_Param12, l2):-((not(equals(Equals_Param12, l3));not(equals(Equals_Param13, l2))), (not(equals(Equals_Param12, l3));not(equals(Equals_Param13, l4))), (not(equals(Equals_Param12, l4));not(equals(Equals_Param13, l3))), (not(equals(Equals_Param12, l4));not(equals(Equals_Param13, l5))), (not(equals(Equals_Param12, l5));not(equals(Equals_Param13, l4)))), (not(equals(Equals_Param12, l2));not(equals(Equals_Param13, l1))), (not(equals(Equals_Param12, l1));not(equals(Equals_Param13, l2))), adjacent(Equals_Param12, Equals_Param13)), (equals(Equals_Param14, l3):-((not(equals(Equals_Param15, l3));not(equals(Equals_Param14, l2))), (not(equals(Equals_Param15, l3));not(equals(Equals_Param14, l4))), (not(equals(Equals_Param15, l4));not(equals(Equals_Param14, l3))), (not(equals(Equals_Param15, l4));not(equals(Equals_Param14, l5))), (not(equals(Equals_Param15, l5));not(equals(Equals_Param14, l4)))), (not(equals(Equals_Param15, l2));not(equals(Equals_Param14, l1))), (not(equals(Equals_Param15, l1));not(equals(Equals_Param14, l2))), adjacent(Equals_Param15, Equals_Param14)), (equals(Equals_Param16, l3):-((not(equals(Equals_Param16, l3));not(equals(Equals_Param17, l4))), (not(equals(Equals_Param16, l4));not(equals(Equals_Param17, l3))), (not(equals(Equals_Param16, l4));not(equals(Equals_Param17, l5))), (not(equals(Equals_Param16, l5));not(equals(Equals_Param17, l4)))), (not(equals(Equals_Param16, l2));not(equals(Equals_Param17, l3))), (not(equals(Equals_Param16, l2));not(equals(Equals_Param17, l1))), (not(equals(Equals_Param16, l1));not(equals(Equals_Param17, l2))), adjacent(Equals_Param16, Equals_Param17)), (equals(Equals_Param18, l2):-((not(equals(Equals_Param19, l3));not(equals(Equals_Param18, l4))), (not(equals(Equals_Param19, l4));not(equals(Equals_Param18, l3))), (not(equals(Equals_Param19, l4));not(equals(Equals_Param18, l5))), (not(equals(Equals_Param19, l5));not(equals(Equals_Param18, l4)))), (not(equals(Equals_Param19, l2));not(equals(Equals_Param18, l3))), (not(equals(Equals_Param19, l2));not(equals(Equals_Param18, l1))), (not(equals(Equals_Param19, l1));not(equals(Equals_Param18, l2))), adjacent(Equals_Param19, Equals_Param18)), (equals(Equals_Param20, l3):-((not(equals(Equals_Param20, l4));not(equals(Equals_Param21, l3))), (not(equals(Equals_Param20, l4));not(equals(Equals_Param21, l5))), (not(equals(Equals_Param20, l5));not(equals(Equals_Param21, l4)))), (not(equals(Equals_Param20, l3));not(equals(Equals_Param21, l2))), (not(equals(Equals_Param20, l2));not(equals(Equals_Param21, l3))), (not(equals(Equals_Param20, l2));not(equals(Equals_Param21, l1))), (not(equals(Equals_Param20, l1));not(equals(Equals_Param21, l2))), adjacent(Equals_Param20, Equals_Param21)), (equals(Equals_Param22, l4):-((not(equals(Equals_Param23, l4));not(equals(Equals_Param22, l3))), (not(equals(Equals_Param23, l4));not(equals(Equals_Param22, l5))), (not(equals(Equals_Param23, l5));not(equals(Equals_Param22, l4)))), (not(equals(Equals_Param23, l3));not(equals(Equals_Param22, l2))), (not(equals(Equals_Param23, l2));not(equals(Equals_Param22, l3))), (not(equals(Equals_Param23, l2));not(equals(Equals_Param22, l1))), (not(equals(Equals_Param23, l1));not(equals(Equals_Param22, l2))), adjacent(Equals_Param23, Equals_Param22)), (equals(Equals_Param24, l4):-((not(equals(Equals_Param24, l4));not(equals(Equals_Param25, l5))), (not(equals(Equals_Param24, l5));not(equals(Equals_Param25, l4)))), (not(equals(Equals_Param24, l3));not(equals(Equals_Param25, l4))), (not(equals(Equals_Param24, l3));not(equals(Equals_Param25, l2))), (not(equals(Equals_Param24, l2));not(equals(Equals_Param25, l3))), (not(equals(Equals_Param24, l2));not(equals(Equals_Param25, l1))), (not(equals(Equals_Param24, l1));not(equals(Equals_Param25, l2))), adjacent(Equals_Param24, Equals_Param25)), (equals(Equals_Param26, l3):-((not(equals(Equals_Param27, l4));not(equals(Equals_Param26, l5))), (not(equals(Equals_Param27, l5));not(equals(Equals_Param26, l4)))), (not(equals(Equals_Param27, l3));not(equals(Equals_Param26, l4))), (not(equals(Equals_Param27, l3));not(equals(Equals_Param26, l2))), (not(equals(Equals_Param27, l2));not(equals(Equals_Param26, l3))), (not(equals(Equals_Param27, l2));not(equals(Equals_Param26, l1))), (not(equals(Equals_Param27, l1));not(equals(Equals_Param26, l2))), adjacent(Equals_Param27, Equals_Param26)), (equals(Equals_Param28, l4):-(not(equals(Equals_Param28, l5));not(equals(Equals_Param29, l4))), (not(equals(Equals_Param28, l4));not(equals(Equals_Param29, l3))), (not(equals(Equals_Param28, l3));not(equals(Equals_Param29, l4))), (not(equals(Equals_Param28, l3));not(equals(Equals_Param29, l2))), (not(equals(Equals_Param28, l2));not(equals(Equals_Param29, l3))), (not(equals(Equals_Param28, l2));not(equals(Equals_Param29, l1))), (not(equals(Equals_Param28, l1));not(equals(Equals_Param29, l2))), adjacent(Equals_Param28, Equals_Param29)), (equals(Equals_Param30, l5):-(not(equals(Equals_Param31, l5));not(equals(Equals_Param30, l4))), (not(equals(Equals_Param31, l4));not(equals(Equals_Param30, l3))), (not(equals(Equals_Param31, l3));not(equals(Equals_Param30, l4))), (not(equals(Equals_Param31, l3));not(equals(Equals_Param30, l2))), (not(equals(Equals_Param31, l2));not(equals(Equals_Param30, l3))), (not(equals(Equals_Param31, l2));not(equals(Equals_Param30, l1))), (not(equals(Equals_Param31, l1));not(equals(Equals_Param30, l2))), adjacent(Equals_Param31, Equals_Param30)), (equals(Equals_Param32, l5):-(not(equals(Equals_Param32, l4));not(equals(Equals_Param33, l5))), (not(equals(Equals_Param32, l4));not(equals(Equals_Param33, l3))), (not(equals(Equals_Param32, l3));not(equals(Equals_Param33, l4))), (not(equals(Equals_Param32, l3));not(equals(Equals_Param33, l2))), (not(equals(Equals_Param32, l2));not(equals(Equals_Param33, l3))), (not(equals(Equals_Param32, l2));not(equals(Equals_Param33, l1))), (not(equals(Equals_Param32, l1));not(equals(Equals_Param33, l2))), adjacent(Equals_Param32, Equals_Param33)), (equals(Equals_Param34, l4):-(not(equals(Equals_Param35, l4));not(equals(Equals_Param34, l5))), (not(equals(Equals_Param35, l4));not(equals(Equals_Param34, l3))), (not(equals(Equals_Param35, l3));not(equals(Equals_Param34, l4))), (not(equals(Equals_Param35, l3));not(equals(Equals_Param34, l2))), (not(equals(Equals_Param35, l2));not(equals(Equals_Param34, l3))), (not(equals(Equals_Param35, l2));not(equals(Equals_Param34, l1))), (not(equals(Equals_Param35, l1));not(equals(Equals_Param34, l2))), adjacent(Equals_Param35, Equals_Param34))], 17==17).
236
237
240axiom(initially(at(o1, l1)),
241 []).
242
243
246 247 248axiom(not(initially(at(At_Param, l5))),
249 []).
250
251
254holds_at(at(o2,l5),4).
255
256
259 260 261axiom(not(holds_at(at(At_Param, l1), t4)),
262 [b(t, t4), ignore(t+4=t4)]).
263
264
267 268 269axiom(not(holds_at(at(At_Param, l3), Time2)),
270 []).
271
272
280axiom(requires(move(Object, Location1, Location2), Time),
281
282 [ holds_at(at(Object, Location1), Time),
283 adjacent(Location1, Location2)
284 ]).
285
286
293axiom(happens(move(Object2, Location1, Location2), Time),
294
295 [ equal(Object1, Object2),
296 happens(move(Object1, Location1, Location2), Time)
297 ]).
298
299
300% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Chapter10/TwoScreens.e:109
301%; entailed: !Equal(O1,O2).
302
303% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Chapter10/TwoScreens.e:111
304% range time 0 4
305% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Chapter10/TwoScreens.e:112
306==> range(time,0,4).
307
308% range offset 1 1
309% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Mueller2006/Chapter10/TwoScreens.e:113
310==> range(offset,1,1).