1:-use_module(library(slipcover)). 2
3:- if(current_predicate(use_rendering/1)). 4:- use_rendering(c3). 5:- use_rendering(lpad). 6:- endif. 7
8:-sc. 9
10:- set_sc(megaex_bottom,2). 11:- set_sc(max_iter,3). 12:- set_sc(max_iter_structure,10). 13:- set_sc(maxdepth_var,4). 14:- set_sc(verbosity,3). 15:- set_sc(seed,rand(192,3412,1230)). 16
17
18:- begin_bg. 19car(car_11). car(car_12). car(car_13). car(car_14).
20car(car_21). car(car_22). car(car_23).
21car(car_31). car(car_32). car(car_33).
22car(car_41). car(car_42). car(car_43). car(car_44).
23car(car_51). car(car_52). car(car_53).
24car(car_61). car(car_62).
25car(car_71). car(car_72). car(car_73).
26car(car_81). car(car_82).
27car(car_91). car(car_92). car(car_93). car(car_94).
28car(car_101). car(car_102).
29
30shape(elipse). shape(hexagon). shape(rectangle). shape(u_shaped).
31shape(triangle). shape(circle). shape(nil).
32
33train(east1). train(east2). train(east3). train(east4). train(east5).
34train(west6). train(west7). train(west8). train(west9). train(west10).
35
37short(car_12). 38closed(car_12). 39long(car_11). 40long(car_13).
41short(car_14).
42open_car(car_11). 43open_car(car_13).
44open_car(car_14).
45shape(car_11,rectangle). 46shape(car_12,rectangle).
47shape(car_13,rectangle).
48shape(car_14,rectangle).
49load(car_11,rectangle,3). 50load(car_12,triangle,1).
51load(car_13,hexagon,1).
52load(car_14,circle,1).
53wheels(car_11,2). 54wheels(car_12,2).
55wheels(car_13,3).
56wheels(car_14,2).
57
59short(car_21).
60short(car_22).
61short(car_23).
62shape(car_21,u_shaped).
63shape(car_22,u_shaped).
64shape(car_23,rectangle).
65open_car(car_21).
66open_car(car_22).
67closed(car_23).
68load(car_21,triangle,1).
69load(car_22,rectangle,1).
70load(car_23,circle,2).
71wheels(car_21,2).
72wheels(car_22,2).
73wheels(car_23,2).
74
76short(car_31).
77short(car_32).
78long(car_33).
79shape(car_31,rectangle).
80shape(car_32,hexagon).
81shape(car_33,rectangle).
82open_car(car_31).
83closed(car_32).
84closed(car_33).
85load(car_31,circle,1).
86load(car_32,triangle,1).
87load(car_33,triangle,1).
88wheels(car_31,2).
89wheels(car_32,2).
90wheels(car_33,3).
91
93short(car_41).
94short(car_42).
95short(car_43).
96short(car_44).
97shape(car_41,u_shaped).
98shape(car_42,rectangle).
99shape(car_43,elipse).
100shape(car_44,rectangle).
101double(car_42).
102open_car(car_41).
103open_car(car_42).
104closed(car_43).
105open_car(car_44).
106load(car_41,triangle,1).
107load(car_42,triangle,1).
108load(car_43,rectangle,1).
109load(car_44,rectangle,1).
110wheels(car_41,2).
111wheels(car_42,2).
112wheels(car_43,2).
113wheels(car_44,2).
114
116short(car_51).
117short(car_52).
118short(car_53).
119shape(car_51,rectangle).
120shape(car_52,rectangle).
121shape(car_53,rectangle).
122double(car_51).
123open_car(car_51).
124closed(car_52).
125closed(car_53).
126load(car_51,triangle,1).
127load(car_52,rectangle,1).
128load(car_53,circle,1).
129wheels(car_51,2).
130wheels(car_52,3).
131wheels(car_53,2).
132
134long(car_61).
135short(car_62).
136shape(car_61,rectangle).
137shape(car_62,rectangle).
138closed(car_61).
139open_car(car_62).
140load(car_61,circle,3).
141load(car_62,triangle,1).
142wheels(car_61,2).
143wheels(car_62,2).
144
146short(car_71).
147short(car_72).
148long(car_73).
149shape(car_71,rectangle).
150shape(car_72,u_shaped).
151shape(car_73,rectangle).
152double(car_71).
153open_car(car_71).
154open_car(car_72).
155jagged(car_73).
156load(car_71,circle,1).
157load(car_72,triangle,1).
158load(car_73,nil,0).
159wheels(car_71,2).
160wheels(car_72,2).
161wheels(car_73,2).
162
164long(car_81).
165short(car_82).
166shape(car_81,rectangle).
167shape(car_82,u_shaped).
168closed(car_81).
169open_car(car_82).
170load(car_81,rectangle,1).
171load(car_82,circle,1).
172wheels(car_81,3).
173wheels(car_82,2).
174
176short(car_91).
177long(car_92).
178short(car_93).
179short(car_94).
180shape(car_91,u_shaped).
181shape(car_92,rectangle).
182shape(car_93,rectangle).
183shape(car_94,u_shaped).
184open_car(car_91).
185jagged(car_92).
186open_car(car_93).
187open_car(car_94).
188load(car_91,circle,1).
189load(car_92,rectangle,1).
190load(car_93,rectangle,1).
191load(car_93,circle,1).
192wheels(car_91,2).
193wheels(car_92,2).
194wheels(car_93,2).
195wheels(car_94,2).
196
198short(car_101).
199long(car_102).
200shape(car_101,u_shaped).
201shape(car_102,rectangle).
202open_car(car_101).
203open_car(car_102).
204load(car_101,rectangle,1).
205load(car_102,rectangle,2).
206wheels(car_101,2).
207wheels(car_102,2).
208:- end_bg. 209
210in([]).
211
212fold(train,[east1, east2, east3, east4, east5, west6, west7, west8, west9, west10]).
213
214output(eastbound/0). 215
216input_cw(short/1).
217input_cw(long/1).
218input_cw(closed/1).
219input_cw(open_car/1).
220input_cw(double/1).
221input_cw(jagged/1).
222input_cw(shape/2).
223input_cw(load/3).
224input_cw(wheels/2).
225input_cw(has_car/1). 226
227modeh(1,eastbound).
228modeb(*,has_car(-car)).
229modeb(1,short(+car)).
230modeb(1,closed(+car)).
231modeb(1,long(+car)).
232modeb(1,open_car(+car)).
233modeb(1,double(+car)).
234modeb(1,jagged(+car)).
235modeb(1,shape(+car,#shape)).
236modeb(1,load(+car,#shape,#int)).
237modeb(1,wheels(+car,#int)).
238
239determination(eastbound/0,short/1).
240determination(eastbound/0,closed/1).
241determination(eastbound/0,long/1).
242determination(eastbound/0,open_car/1).
243determination(eastbound/0,double/1).
244determination(eastbound/0,jagged/1).
245determination(eastbound/0,shape/2).
246determination(eastbound/0,wheels/2).
247determination(eastbound/0,has_car/1).
248determination(eastbound/0,load/3).
249
253
255has_car(east1,car_11). 256has_car(east1,car_12).
257has_car(east1,car_13).
258has_car(east1,car_14).
259
261has_car(east2,car_21).
262has_car(east2,car_22).
263has_car(east2,car_23).
264
266has_car(east3,car_31).
267has_car(east3,car_32).
268has_car(east3,car_33).
269
271has_car(east4,car_41).
272has_car(east4,car_42).
273has_car(east4,car_43).
274has_car(east4,car_44).
275
277has_car(east5,car_51).
278has_car(east5,car_52).
279has_car(east5,car_53).
280
282has_car(west6,car_61).
283has_car(west6,car_62).
284
286has_car(west7,car_71).
287has_car(west7,car_72).
288has_car(west7,car_73).
289
291has_car(west8,car_81).
292has_car(west8,car_82).
293
295has_car(west9,car_91).
296has_car(west9,car_92).
297has_car(west9,car_93).
298has_car(west9,car_94).
299
301has_car(west10,car_101).
302has_car(west10,car_102).
303
304eastbound(east1).
305eastbound(east2).
306eastbound(east3).
307eastbound(east4).
308eastbound(east5).
309neg(eastbound(west6)).
310neg(eastbound(west7)).
311neg(eastbound(west8)).
312neg(eastbound(west9)).
313neg(eastbound(west10))