1% Simple illustration of the use of Aleph on
2%       Michalski's trains problem
3% To run do the following:
6%       c. sat(1).
7%       d. reduce.
8%       or
11%       c. induce

?- induce(Program). */

16:- use_module(library(aleph)).   17:- if(current_predicate(use_rendering/1)).   18:- use_rendering(prolog).   19:- endif.   20:- aleph.   21:-style_check(-discontiguous).   22:- aleph_set(i,2).   23
24:- modeh(1,eastbound(+train)).   25:- modeb(1,short(+car)).   26:- modeb(1,closed(+car)).   27:- modeb(1,long(+car)).   28:- modeb(1,open_car(+car)).   29:- modeb(1,double(+car)).   30:- modeb(1,jagged(+car)).   31:- modeb(1,shape(+car,#shape)).
33:- modeb(1,wheels(+car,#int)).
34:- modeb(*,has_car(+train,-car)).   35
36:- determination(eastbound/1,short/1).   37:- determination(eastbound/1,closed/1).   38:- determination(eastbound/1,long/1).   39:- determination(eastbound/1,open_car/1).   40:- determination(eastbound/1,double/1).   41:- determination(eastbound/1,jagged/1).   42:- determination(eastbound/1,shape/2).   43:- determination(eastbound/1,wheels/2).   44:- determination(eastbound/1,has_car/2).   45:- determination(eastbound/1,load/3).   46:-begin_bg.   47% type definitions
48car(car_11).  car(car_12).  car(car_13).  car(car_14).
49car(car_21).  car(car_22).  car(car_23).
50car(car_31).  car(car_32).  car(car_33).
51car(car_41).  car(car_42).  car(car_43).  car(car_44).
52car(car_51).  car(car_52).  car(car_53).
53car(car_61).  car(car_62).
54car(car_71).  car(car_72).  car(car_73).
55car(car_81).  car(car_82).
56car(car_91).  car(car_92).  car(car_93).  car(car_94).
57car(car_101).  car(car_102).
58
59shape(elipse).  shape(hexagon).  shape(rectangle).  shape(u_shaped).
60shape(triangle). shape(circle). shape(nil).
61
62train(east1).  train(east2).  train(east3).  train(east4).  train(east5).
63train(west6).  train(west7).  train(west8).  train(west9).  train(west10).
64
65
66% eastbound train 1
67short(car_12).		% 0
68closed(car_12).		% 1
69long(car_11).		% 2
70long(car_13).
71short(car_14).
72open_car(car_11).		% 3
73open_car(car_13).
74open_car(car_14).
75shape(car_11,rectangle). % 4,5
76shape(car_12,rectangle).
77shape(car_13,rectangle).
78shape(car_14,rectangle).
83wheels(car_11,2).	  % 9,10
84wheels(car_12,2).
85wheels(car_13,3).
86wheels(car_14,2).
87has_car(east1,car_11). % 11,12
88has_car(east1,car_12).
89has_car(east1,car_13).
90has_car(east1,car_14).
91
92% eastbound train 2
93has_car(east2,car_21).
94has_car(east2,car_22).
95has_car(east2,car_23).
96short(car_21).
97short(car_22).
98short(car_23).
99shape(car_21,u_shaped).
100shape(car_22,u_shaped).
101shape(car_23,rectangle).
102open_car(car_21).
103open_car(car_22).
104closed(car_23).
108wheels(car_21,2).
109wheels(car_22,2).
110wheels(car_23,2).
111
112% eastbound train 3
113has_car(east3,car_31).
114has_car(east3,car_32).
115has_car(east3,car_33).
116short(car_31).
117short(car_32).
118long(car_33).
119shape(car_31,rectangle).
120shape(car_32,hexagon).
121shape(car_33,rectangle).
122open_car(car_31).
123closed(car_32).
124closed(car_33).
128wheels(car_31,2).
129wheels(car_32,2).
130wheels(car_33,3).
131
132% eastbound train 4
133has_car(east4,car_41).
134has_car(east4,car_42).
135has_car(east4,car_43).
136has_car(east4,car_44).
137short(car_41).
138short(car_42).
139short(car_43).
140short(car_44).
141shape(car_41,u_shaped).
142shape(car_42,rectangle).
143shape(car_43,elipse).
144shape(car_44,rectangle).
145double(car_42).
146open_car(car_41).
147open_car(car_42).
148closed(car_43).
149open_car(car_44).
154wheels(car_41,2).
155wheels(car_42,2).
156wheels(car_43,2).
157wheels(car_44,2).
158
159% eastbound train 5
160has_car(east5,car_51).
161has_car(east5,car_52).
162has_car(east5,car_53).
163short(car_51).
164short(car_52).
165short(car_53).
166shape(car_51,rectangle).
167shape(car_52,rectangle).
168shape(car_53,rectangle).
169double(car_51).
170open_car(car_51).
171closed(car_52).
172closed(car_53).
176wheels(car_51,2).
177wheels(car_52,3).
178wheels(car_53,2).
179
180% westbound train 6
181has_car(west6,car_61).
182has_car(west6,car_62).
183long(car_61).
184short(car_62).
185shape(car_61,rectangle).
186shape(car_62,rectangle).
187closed(car_61).
188open_car(car_62).
191wheels(car_61,2).
192wheels(car_62,2).
193
194% westbound train 7
195has_car(west7,car_71).
196has_car(west7,car_72).
197has_car(west7,car_73).
198short(car_71).
199short(car_72).
200long(car_73).
201shape(car_71,rectangle).
202shape(car_72,u_shaped).
203shape(car_73,rectangle).
204double(car_71).
205open_car(car_71).
206open_car(car_72).
207jagged(car_73).
211wheels(car_71,2).
212wheels(car_72,2).
213wheels(car_73,2).
214
215% westbound train 8
216has_car(west8,car_81).
217has_car(west8,car_82).
218long(car_81).
219short(car_82).
220shape(car_81,rectangle).
221shape(car_82,u_shaped).
222closed(car_81).
223open_car(car_82).
226wheels(car_81,3).
227wheels(car_82,2).
228
229% westbound train 9
230has_car(west9,car_91).
231has_car(west9,car_92).
232has_car(west9,car_93).
233has_car(west9,car_94).
234short(car_91).
235long(car_92).
236short(car_93).
237short(car_94).
238shape(car_91,u_shaped).
239shape(car_92,rectangle).
240shape(car_93,rectangle).
241shape(car_94,u_shaped).
242open_car(car_91).
243jagged(car_92).
244open_car(car_93).
245open_car(car_94).
250wheels(car_91,2).
251wheels(car_92,2).
252wheels(car_93,2).
253wheels(car_94,2).
254
255% westbound train 10
256has_car(west10,car_101).
257has_car(west10,car_102).
258short(car_101).
259long(car_102).
260shape(car_101,u_shaped).
261shape(car_102,rectangle).
262open_car(car_101).
263open_car(car_102).