1
2%%% The following code has been produced by the CHR compiler
3
4
5:- ( current_module(chr) -> true ; use_module(library(chr)) ).
6
7:- get_flag(variable_names, Val), setval(variable_names_flag, Val), set_flag(variable_names, off).
8:- op(700, xfx, lss).
9:- op(700, xfx, grt).
10:- op(700, xfx, neq).
11:- op(700, xfx, geq).
12:- op(700, xfx, leq).
13geq(_490, _494) :- leq(_494, _490).
14grt(_507, _511) :- lss(_511, _507).
15
16
17
18%%% Callables for minimum / 3
19
20'CHRlabel_with'(minimum(A, B, C), D, E) ?-
21	coca(try_clause(E, minimum(A, B, C), minimum(F, G, H), true)),
22	coca(clause_fired(E)),
23	'CHR='(D, clause_minimum(A, B, C)).
24
25
26
27%%% Callables for maximum / 3
28
29'CHRlabel_with'(maximum(A, B, C), D, E) ?-
30	coca(try_clause(E, maximum(A, B, C), maximum(F, G, H), true)),
31	coca(clause_fired(E)),
32	'CHR='(D, clause_maximum(A, B, C)).
33leq(A, B) :-
34	'CHRgen_num'(C),
35	coca(add_one_constraint(C, leq(A, B))),
36	'CHRleq_2'(leq(A, B), D, E, C).
37
38
39
40%%% Rules handling for leq / 2
41
42'CHRleq_2'(leq(A, B), C, D, E) :-
43	(
44	    'CHRnonvar'(C)
45	;
46	    'CHRalready_in'('CHRleq_2'(leq(A, B), C, D, E)),
47	    coca(already_in)
48	),
49	!.
50'CHRleq_2'(leq(A, B), C, D, E) ?-
51	coca(try_rule(E, leq(A, B), built_in, leq(F, G), replacement, (ground(F), ground(G)), F @=< G)),
52	no_delayed_goals((ground(A), ground(B))),
53	!,
54	'CHRkill'(C),
55	coca(fired_rule(built_in)),
56	A @=< B.
57'CHRleq_2'(leq(A, A), B, C, D) ?-
58	coca(try_rule(D, leq(A, A), reflexivity, leq(E, E), replacement, true, true)),
59	!,
60	'CHRkill'(B),
61	coca(fired_rule(reflexivity)).
62'CHRleq_2'(leq(A, B), C, D, E) ?-
63	'CHRget_delayed_goals'(B, F),
64	'CHRleq_2__1'(F, [B, A], [], G),
65	coca(try_double(E, leq(A, B), G, leq(B, A), leq(H, I), leq(I, H), replacement, true, H = I, antisymmetry)),
66	!,
67	'CHRkill'(C),
68	coca(fired_rule(antisymmetry)),
69	A = B.
70'CHRleq_2'(leq(A, B), C, D, E) ?-
71	'CHRget_delayed_goals'(B, F),
72	'CHRleq_2__2'(F, [B, A], [], G),
73	coca(try_double(E, leq(A, B), G, leq(B, A), leq(H, I), leq(I, H), replacement, true, I = H, antisymmetry)),
74	!,
75	'CHRkill'(C),
76	coca(fired_rule(antisymmetry)),
77	B = A.
78'CHRleq_2'(leq(A, B), C, D, E) ?-
79	'CHRget_delayed_goals'(B, F),
80	'CHRleq_2__3'(F, [B, A], [], G),
81	coca(try_double(E, leq(A, B), G, neq(A, B), leq(H, I), neq(H, I), replacement, true, lss(H, I), simplification)),
82	!,
83	'CHRkill'(C),
84	coca(fired_rule(simplification)),
85	lss(A, B).
86'CHRleq_2'(leq(A, B), C, D, E) ?-
87	'CHRget_delayed_goals'(B, F),
88	'CHRleq_2__4'(F, [B, A], [], G),
89	coca(try_double(E, leq(A, B), G, neq(B, A), leq(H, I), neq(I, H), replacement, true, lss(H, I), simplification)),
90	!,
91	'CHRkill'(C),
92	coca(fired_rule(simplification)),
93	lss(A, B).
94'CHRleq_2'(leq(A, B), C, D, E) ?-
95	'CHRget_delayed_goals'(B, F),
96	'CHRleq_2__5'(F, [B, A], [], G),
97	coca(try_double(E, leq(A, B), G, lss(A, B), leq(H, I), lss(H, I), keep_second, true, true, subsumption)),
98	!,
99	'CHRkill'(C),
100	coca(fired_rule(subsumption)).
101'CHRleq_2'(leq(A, B), C, D, E) :-
102	'CHRleq_2__0'(leq(A, B), C, D, E).
103'CHRleq_2__1'(['CHRleq_2'(leq(A, B), C, D, E)|F], [A, B], [], G) ?-
104	'CHRvar'(C),
105	'CHRkill'(C),
106	'CHR='([], []),
107	'CHR='(E, G).
108'CHRleq_2__1'([A|B], C, D, E) :-
109	'CHRleq_2__1'(B, C, D, E).
110:- set_flag('CHRleq_2__1' / 4, leash, notrace).
111'CHRleq_2__2'(['CHRleq_2'(leq(A, B), C, D, E)|F], [A, B], [], G) ?-
112	'CHRvar'(C),
113	'CHRkill'(C),
114	'CHR='([], []),
115	'CHR='(E, G).
116'CHRleq_2__2'([A|B], C, D, E) :-
117	'CHRleq_2__2'(B, C, D, E).
118:- set_flag('CHRleq_2__2' / 4, leash, notrace).
119'CHRleq_2__3'(['CHRneq_2'(neq(A, B), C, D, E)|F], [B, A], [], G) ?-
120	'CHRvar'(C),
121	'CHRkill'(C),
122	'CHR='([], []),
123	'CHR='(E, G).
124'CHRleq_2__3'([A|B], C, D, E) :-
125	'CHRleq_2__3'(B, C, D, E).
126:- set_flag('CHRleq_2__3' / 4, leash, notrace).
127'CHRleq_2__4'(['CHRneq_2'(neq(A, B), C, D, E)|F], [A, B], [], G) ?-
128	'CHRvar'(C),
129	'CHRkill'(C),
130	'CHR='([], []),
131	'CHR='(E, G).
132'CHRleq_2__4'([A|B], C, D, E) :-
133	'CHRleq_2__4'(B, C, D, E).
134:- set_flag('CHRleq_2__4' / 4, leash, notrace).
135'CHRleq_2__5'(['CHRlss_2'(lss(A, B), C, D, E)|F], [B, A], [], G) ?-
136	'CHRvar'(C),
137	'CHR='([], []),
138	'CHR='(E, G).
139'CHRleq_2__5'([A|B], C, D, E) :-
140	'CHRleq_2__5'(B, C, D, E).
141:- set_flag('CHRleq_2__5' / 4, leash, notrace).
142:- set_flag('CHRleq_2' / 4, leash, notrace).
143:- current_macro('CHRleq_2' / 4, _11018, _11019, _11020) -> true ; define_macro('CHRleq_2' / 4, tr_chr / 2, [write]).
144'CHRleq_2__0'(A, B, C, D) :-
145	'CHRleq_2__6'(A, B, C, D).
146:- set_flag('CHRleq_2__0' / 4, leash, notrace).
147'CHRleq_2__6'(leq(A, B), C, D, E) ?-
148	'CHRvar'(C),
149	!,
150	'CHRget_delayed_goals'(B, F),
151	'CHRleq_2__6__7'(F, C, leq(A, B), D, E).
152'CHRleq_2__6'(leq(A, B), C, D, E) :-
153	'CHRleq_2__6__8'(leq(A, B), C, D, E).
154:- set_flag('CHRleq_2__6' / 4, leash, notrace).
155'CHRleq_2__6__7'(['CHRminimum_3'(minimum(A, B, C), D, E, F)|G], H, leq(B, A), I, J) ?-
156	'CHRvar'(D),
157	coca(try_double(J, leq(B, A), F, minimum(A, B, C), leq(K, L), minimum(L, K, M), keep_first, true, K = M, min_leq)),
158	!,
159	'CHRkill'(D),
160	coca(fired_rule(min_leq)),
161	'CHRleq_2__6__7'(G, H, leq(B, A), I, J),
162	B = C.
163'CHRleq_2__6__7'([A|B], C, D, E, F) :-
164	'CHRleq_2__6__7'(B, C, D, E, F).
165'CHRleq_2__6__7'([], A, B, C, D) :-
166	'CHRleq_2__6__8'(B, A, C, D).
167:- set_flag('CHRleq_2__6__7' / 5, leash, notrace).
168'CHRleq_2__6__8'(leq(A, B), C, D, E) ?-
169	'CHRvar'(C),
170	!,
171	'CHRget_delayed_goals'(B, F),
172	'CHRleq_2__6__8__9'(F, C, leq(A, B), D, E).
173'CHRleq_2__6__8'(leq(A, B), C, D, E) :-
174	'CHRleq_2__6__8__10'(leq(A, B), C, D, E).
175:- set_flag('CHRleq_2__6__8' / 4, leash, notrace).
176'CHRleq_2__6__8__9'(['CHRminimum_3'(minimum(A, B, C), D, E, F)|G], H, leq(A, B), I, J) ?-
177	'CHRvar'(D),
178	coca(try_double(J, leq(A, B), F, minimum(A, B, C), leq(K, L), minimum(K, L, M), keep_first, true, K = M, min_leq)),
179	!,
180	'CHRkill'(D),
181	coca(fired_rule(min_leq)),
182	'CHRleq_2__6__8__9'(G, H, leq(A, B), I, J),
183	A = C.
184'CHRleq_2__6__8__9'([A|B], C, D, E, F) :-
185	'CHRleq_2__6__8__9'(B, C, D, E, F).
186'CHRleq_2__6__8__9'([], A, B, C, D) :-
187	'CHRleq_2__6__8__10'(B, A, C, D).
188:- set_flag('CHRleq_2__6__8__9' / 5, leash, notrace).
189'CHRleq_2__6__8__10'(leq(A, B), C, D, E) ?-
190	'CHRvar'(C),
191	!,
192	'CHRget_delayed_goals'(B, F),
193	'CHRleq_2__6__8__10__11'(F, C, leq(A, B), D, E).
194'CHRleq_2__6__8__10'(leq(A, B), C, D, E) :-
195	'CHRleq_2__6__8__10__12'(leq(A, B), C, D, E).
196:- set_flag('CHRleq_2__6__8__10' / 4, leash, notrace).
197'CHRleq_2__6__8__10__11'(['CHRmaximum_3'(maximum(A, B, C), D, E, F)|G], H, leq(B, A), I, J) ?-
198	'CHRvar'(D),
199	coca(try_double(J, leq(B, A), F, maximum(A, B, C), leq(K, L), maximum(L, K, M), keep_first, true, L = M, max_leq)),
200	!,
201	'CHRkill'(D),
202	coca(fired_rule(max_leq)),
203	'CHRleq_2__6__8__10__11'(G, H, leq(B, A), I, J),
204	A = C.
205'CHRleq_2__6__8__10__11'([A|B], C, D, E, F) :-
206	'CHRleq_2__6__8__10__11'(B, C, D, E, F).
207'CHRleq_2__6__8__10__11'([], A, B, C, D) :-
208	'CHRleq_2__6__8__10__12'(B, A, C, D).
209:- set_flag('CHRleq_2__6__8__10__11' / 5, leash, notrace).
210'CHRleq_2__6__8__10__12'(leq(A, B), C, D, E) ?-
211	'CHRvar'(C),
212	!,
213	'CHRget_delayed_goals'(B, F),
214	'CHRleq_2__6__8__10__12__13'(F, C, leq(A, B), D, E).
215'CHRleq_2__6__8__10__12'(leq(A, B), C, D, E) :-
216	'CHRleq_2__6__8__10__12__14'(leq(A, B), C, D, E).
217:- set_flag('CHRleq_2__6__8__10__12' / 4, leash, notrace).
218'CHRleq_2__6__8__10__12__13'(['CHRmaximum_3'(maximum(A, B, C), D, E, F)|G], H, leq(A, B), I, J) ?-
219	'CHRvar'(D),
220	coca(try_double(J, leq(A, B), F, maximum(A, B, C), leq(K, L), maximum(K, L, M), keep_first, true, L = M, max_leq)),
221	!,
222	'CHRkill'(D),
223	coca(fired_rule(max_leq)),
224	'CHRleq_2__6__8__10__12__13'(G, H, leq(A, B), I, J),
225	B = C.
226'CHRleq_2__6__8__10__12__13'([A|B], C, D, E, F) :-
227	'CHRleq_2__6__8__10__12__13'(B, C, D, E, F).
228'CHRleq_2__6__8__10__12__13'([], A, B, C, D) :-
229	'CHRleq_2__6__8__10__12__14'(B, A, C, D).
230:- set_flag('CHRleq_2__6__8__10__12__13' / 5, leash, notrace).
231'CHRleq_2__6__8__10__12__14'(leq(A, B), C, D, E) ?-
232	'CHRvar'(C),
233	!,
234	'CHRget_delayed_goals'(B, F),
235	'CHRleq_2__6__8__10__12__14__15'(F, C, leq(A, B), D, E).
236'CHRleq_2__6__8__10__12__14'(leq(A, B), C, D, E) :-
237	'CHRleq_2__6__8__10__12__14__16'(leq(A, B), C, D, E).
238:- set_flag('CHRleq_2__6__8__10__12__14' / 4, leash, notrace).
239'CHRleq_2__6__8__10__12__14__15'(['CHRleq_2'(leq(A, B), C, D, E)|F], G, leq(H, A), I, J) ?-
240	'CHRvar'(C),
241	'CHRcheck_and_mark_applied'('12'(transitivity), G, C, I, D),
242	coca(try_double(J, leq(H, A), E, leq(A, B), leq(K, L), leq(L, M), augmentation, (K \== L, L \== M, K \== M), leq(K, M), transitivity)),
243	no_delayed_goals((H \== A, A \== B, H \== B)),
244	!,
245	coca(fired_rule(transitivity)),
246	'CHRleq_2__6__8__10__12__14__15'(F, G, leq(H, A), I, J),
247	leq(H, B).
248'CHRleq_2__6__8__10__12__14__15'([A|B], C, D, E, F) :-
249	'CHRleq_2__6__8__10__12__14__15'(B, C, D, E, F).
250'CHRleq_2__6__8__10__12__14__15'([], A, B, C, D) :-
251	'CHRleq_2__6__8__10__12__14__16'(B, A, C, D).
252:- set_flag('CHRleq_2__6__8__10__12__14__15' / 5, leash, notrace).
253'CHRleq_2__6__8__10__12__14__16'(leq(A, B), C, D, E) ?-
254	'CHRvar'(C),
255	!,
256	'CHRget_delayed_goals'(A, F),
257	'CHRleq_2__6__8__10__12__14__16__17'(F, C, leq(A, B), D, E).
258'CHRleq_2__6__8__10__12__14__16'(leq(A, B), C, D, E) :-
259	'CHRleq_2__6__8__10__12__14__16__18'(leq(A, B), C, D, E).
260:- set_flag('CHRleq_2__6__8__10__12__14__16' / 4, leash, notrace).
261'CHRleq_2__6__8__10__12__14__16__17'(['CHRleq_2'(leq(A, B), C, D, E)|F], G, leq(B, H), I, J) ?-
262	'CHRvar'(C),
263	'CHRcheck_and_mark_applied'('21'(transitivity), G, C, I, D),
264	coca(try_double(J, leq(B, H), E, leq(A, B), leq(K, L), leq(M, K), augmentation, (M \== K, K \== L, M \== L), leq(M, L), transitivity)),
265	no_delayed_goals((A \== B, B \== H, A \== H)),
266	!,
267	coca(fired_rule(transitivity)),
268	'CHRleq_2__6__8__10__12__14__16__17'(F, G, leq(B, H), I, J),
269	leq(A, H).
270'CHRleq_2__6__8__10__12__14__16__17'([A|B], C, D, E, F) :-
271	'CHRleq_2__6__8__10__12__14__16__17'(B, C, D, E, F).
272'CHRleq_2__6__8__10__12__14__16__17'([], A, B, C, D) :-
273	'CHRleq_2__6__8__10__12__14__16__18'(B, A, C, D).
274:- set_flag('CHRleq_2__6__8__10__12__14__16__17' / 5, leash, notrace).
275'CHRleq_2__6__8__10__12__14__16__18'(leq(A, B), C, D, E) ?-
276	'CHRvar'(C),
277	!,
278	'CHRget_delayed_goals'(B, F),
279	'CHRleq_2__6__8__10__12__14__16__18__19'(F, C, leq(A, B), D, E).
280'CHRleq_2__6__8__10__12__14__16__18'(leq(A, B), C, D, E) :-
281	'CHRleq_2__6__8__10__12__14__16__18__20'(leq(A, B), C, D, E).
282:- set_flag('CHRleq_2__6__8__10__12__14__16__18' / 4, leash, notrace).
283'CHRleq_2__6__8__10__12__14__16__18__19'(['CHRlss_2'(lss(A, B), C, D, E)|F], G, leq(H, A), I, J) ?-
284	'CHRvar'(C),
285	'CHRcheck_and_mark_applied'(transitivity, G, C, I, D),
286	coca(try_double(J, leq(H, A), E, lss(A, B), leq(K, L), lss(L, M), augmentation, (K \== L, L \== M), lss(K, M), transitivity)),
287	no_delayed_goals((H \== A, A \== B)),
288	!,
289	coca(fired_rule(transitivity)),
290	'CHRleq_2__6__8__10__12__14__16__18__19'(F, G, leq(H, A), I, J),
291	lss(H, B).
292'CHRleq_2__6__8__10__12__14__16__18__19'([A|B], C, D, E, F) :-
293	'CHRleq_2__6__8__10__12__14__16__18__19'(B, C, D, E, F).
294'CHRleq_2__6__8__10__12__14__16__18__19'([], A, B, C, D) :-
295	'CHRleq_2__6__8__10__12__14__16__18__20'(B, A, C, D).
296:- set_flag('CHRleq_2__6__8__10__12__14__16__18__19' / 5, leash, notrace).
297'CHRleq_2__6__8__10__12__14__16__18__20'(leq(A, B), C, D, E) ?-
298	'CHRvar'(C),
299	!,
300	'CHRget_delayed_goals'(A, F),
301	'CHRleq_2__6__8__10__12__14__16__18__20__21'(F, C, leq(A, B), D, E).
302'CHRleq_2__6__8__10__12__14__16__18__20'(leq(A, B), C, D, E) :-
303	'CHRleq_2__6__8__10__12__14__16__18__20__22'(leq(A, B), C, D, E).
304:- set_flag('CHRleq_2__6__8__10__12__14__16__18__20' / 4, leash, notrace).
305'CHRleq_2__6__8__10__12__14__16__18__20__21'(['CHRlss_2'(lss(A, B), C, D, E)|F], G, leq(B, H), I, J) ?-
306	'CHRvar'(C),
307	'CHRcheck_and_mark_applied'(transitivity, G, C, I, D),
308	coca(try_double(J, leq(B, H), E, lss(A, B), leq(K, L), lss(M, K), augmentation, (M \== K, K \== L), lss(M, L), transitivity)),
309	no_delayed_goals((A \== B, B \== H)),
310	!,
311	coca(fired_rule(transitivity)),
312	'CHRleq_2__6__8__10__12__14__16__18__20__21'(F, G, leq(B, H), I, J),
313	lss(A, H).
314'CHRleq_2__6__8__10__12__14__16__18__20__21'([A|B], C, D, E, F) :-
315	'CHRleq_2__6__8__10__12__14__16__18__20__21'(B, C, D, E, F).
316'CHRleq_2__6__8__10__12__14__16__18__20__21'([], A, B, C, D) :-
317	'CHRleq_2__6__8__10__12__14__16__18__20__22'(B, A, C, D).
318:- set_flag('CHRleq_2__6__8__10__12__14__16__18__20__21' / 5, leash, notrace).
319'CHRleq_2__6__8__10__12__14__16__18__20__22'(leq(A, B), C, D, E) :-
320	(
321	    'CHRvar'(C)
322	->
323	    'CHRdelay'([C, leq(A, B)], 'CHRleq_2'(leq(A, B), C, D, E))
324	;
325	    true
326	).
327:- set_flag('CHRleq_2__6__8__10__12__14__16__18__20__22' / 4, leash, notrace).
328lss(A, B) :-
329	'CHRgen_num'(C),
330	coca(add_one_constraint(C, lss(A, B))),
331	'CHRlss_2'(lss(A, B), D, E, C).
332
333
334
335%%% Rules handling for lss / 2
336
337'CHRlss_2'(lss(A, B), C, D, E) :-
338	(
339	    'CHRnonvar'(C)
340	;
341	    'CHRalready_in'('CHRlss_2'(lss(A, B), C, D, E)),
342	    coca(already_in)
343	),
344	!.
345'CHRlss_2'(lss(A, B), C, D, E) ?-
346	coca(try_rule(E, lss(A, B), built_in, lss(F, G), replacement, (ground(F), ground(G)), F @< G)),
347	no_delayed_goals((ground(A), ground(B))),
348	!,
349	'CHRkill'(C),
350	coca(fired_rule(built_in)),
351	A @< B.
352'CHRlss_2'(lss(A, A), B, C, D) ?-
353	coca(try_rule(D, lss(A, A), irreflexivity, lss(E, E), replacement, true, fail)),
354	!,
355	'CHRkill'(B),
356	coca(fired_rule(irreflexivity)),
357	fail.
358'CHRlss_2'(lss(A, B), C, D, E) :-
359	'CHRlss_2__23'(lss(A, B), C, D, E).
360:- set_flag('CHRlss_2' / 4, leash, notrace).
361:- current_macro('CHRlss_2' / 4, _15495, _15496, _15497) -> true ; define_macro('CHRlss_2' / 4, tr_chr / 2, [write]).
362'CHRlss_2__23'(A, B, C, D) :-
363	'CHRlss_2__24'(A, B, C, D).
364:- set_flag('CHRlss_2__23' / 4, leash, notrace).
365'CHRlss_2__24'(lss(A, B), C, D, E) ?-
366	'CHRvar'(C),
367	!,
368	'CHRget_delayed_goals'(B, F),
369	'CHRlss_2__24__25'(F, C, lss(A, B), D, E).
370'CHRlss_2__24'(lss(A, B), C, D, E) :-
371	'CHRlss_2__24__26'(lss(A, B), C, D, E).
372:- set_flag('CHRlss_2__24' / 4, leash, notrace).
373'CHRlss_2__24__25'(['CHRleq_2'(leq(A, B), C, D, E)|F], G, lss(A, B), H, I) ?-
374	'CHRvar'(C),
375	coca(try_double(I, lss(A, B), E, leq(A, B), lss(J, K), leq(J, K), keep_first, true, true, subsumption)),
376	!,
377	'CHRkill'(C),
378	coca(fired_rule(subsumption)),
379	'CHRlss_2__24__25'(F, G, lss(A, B), H, I).
380'CHRlss_2__24__25'([A|B], C, D, E, F) :-
381	'CHRlss_2__24__25'(B, C, D, E, F).
382'CHRlss_2__24__25'([], A, B, C, D) :-
383	'CHRlss_2__24__26'(B, A, C, D).
384:- set_flag('CHRlss_2__24__25' / 5, leash, notrace).
385'CHRlss_2__24__26'(lss(A, B), C, D, E) ?-
386	'CHRvar'(C),
387	!,
388	'CHRget_delayed_goals'(B, F),
389	'CHRlss_2__24__26__27'(F, C, lss(A, B), D, E).
390'CHRlss_2__24__26'(lss(A, B), C, D, E) :-
391	'CHRlss_2__24__26__28'(lss(A, B), C, D, E).
392:- set_flag('CHRlss_2__24__26' / 4, leash, notrace).
393'CHRlss_2__24__26__27'(['CHRneq_2'(neq(A, B), C, D, E)|F], G, lss(A, B), H, I) ?-
394	'CHRvar'(C),
395	coca(try_double(I, lss(A, B), E, neq(A, B), lss(J, K), neq(J, K), keep_first, true, true, subsumption)),
396	!,
397	'CHRkill'(C),
398	coca(fired_rule(subsumption)),
399	'CHRlss_2__24__26__27'(F, G, lss(A, B), H, I).
400'CHRlss_2__24__26__27'([A|B], C, D, E, F) :-
401	'CHRlss_2__24__26__27'(B, C, D, E, F).
402'CHRlss_2__24__26__27'([], A, B, C, D) :-
403	'CHRlss_2__24__26__28'(B, A, C, D).
404:- set_flag('CHRlss_2__24__26__27' / 5, leash, notrace).
405'CHRlss_2__24__26__28'(lss(A, B), C, D, E) ?-
406	'CHRvar'(C),
407	!,
408	'CHRget_delayed_goals'(B, F),
409	'CHRlss_2__24__26__28__29'(F, C, lss(A, B), D, E).
410'CHRlss_2__24__26__28'(lss(A, B), C, D, E) :-
411	'CHRlss_2__24__26__28__30'(lss(A, B), C, D, E).
412:- set_flag('CHRlss_2__24__26__28' / 4, leash, notrace).
413'CHRlss_2__24__26__28__29'(['CHRneq_2'(neq(A, B), C, D, E)|F], G, lss(B, A), H, I) ?-
414	'CHRvar'(C),
415	coca(try_double(I, lss(B, A), E, neq(A, B), lss(J, K), neq(K, J), keep_first, true, true, subsumption)),
416	!,
417	'CHRkill'(C),
418	coca(fired_rule(subsumption)),
419	'CHRlss_2__24__26__28__29'(F, G, lss(B, A), H, I).
420'CHRlss_2__24__26__28__29'([A|B], C, D, E, F) :-
421	'CHRlss_2__24__26__28__29'(B, C, D, E, F).
422'CHRlss_2__24__26__28__29'([], A, B, C, D) :-
423	'CHRlss_2__24__26__28__30'(B, A, C, D).
424:- set_flag('CHRlss_2__24__26__28__29' / 5, leash, notrace).
425'CHRlss_2__24__26__28__30'(lss(A, B), C, D, E) ?-
426	'CHRvar'(C),
427	!,
428	'CHRget_delayed_goals'(B, F),
429	'CHRlss_2__24__26__28__30__31'(F, C, lss(A, B), D, E).
430'CHRlss_2__24__26__28__30'(lss(A, B), C, D, E) :-
431	'CHRlss_2__24__26__28__30__32'(lss(A, B), C, D, E).
432:- set_flag('CHRlss_2__24__26__28__30' / 4, leash, notrace).
433'CHRlss_2__24__26__28__30__31'(['CHRminimum_3'(minimum(A, B, C), D, E, F)|G], H, lss(C, A), I, J) ?-
434	'CHRvar'(D),
435	coca(try_double(J, lss(C, A), F, minimum(A, B, C), lss(K, L), minimum(L, M, K), keep_first, true, M = K, min_lss)),
436	!,
437	'CHRkill'(D),
438	coca(fired_rule(min_lss)),
439	'CHRlss_2__24__26__28__30__31'(G, H, lss(C, A), I, J),
440	B = C.
441'CHRlss_2__24__26__28__30__31'([A|B], C, D, E, F) :-
442	'CHRlss_2__24__26__28__30__31'(B, C, D, E, F).
443'CHRlss_2__24__26__28__30__31'([], A, B, C, D) :-
444	'CHRlss_2__24__26__28__30__32'(B, A, C, D).
445:- set_flag('CHRlss_2__24__26__28__30__31' / 5, leash, notrace).
446'CHRlss_2__24__26__28__30__32'(lss(A, B), C, D, E) ?-
447	'CHRvar'(C),
448	!,
449	'CHRget_delayed_goals'(B, F),
450	'CHRlss_2__24__26__28__30__32__33'(F, C, lss(A, B), D, E).
451'CHRlss_2__24__26__28__30__32'(lss(A, B), C, D, E) :-
452	'CHRlss_2__24__26__28__30__32__34'(lss(A, B), C, D, E).
453:- set_flag('CHRlss_2__24__26__28__30__32' / 4, leash, notrace).
454'CHRlss_2__24__26__28__30__32__33'(['CHRminimum_3'(minimum(A, B, C), D, E, F)|G], H, lss(C, B), I, J) ?-
455	'CHRvar'(D),
456	coca(try_double(J, lss(C, B), F, minimum(A, B, C), lss(K, L), minimum(M, L, K), keep_first, true, M = K, min_lss)),
457	!,
458	'CHRkill'(D),
459	coca(fired_rule(min_lss)),
460	'CHRlss_2__24__26__28__30__32__33'(G, H, lss(C, B), I, J),
461	A = C.
462'CHRlss_2__24__26__28__30__32__33'([A|B], C, D, E, F) :-
463	'CHRlss_2__24__26__28__30__32__33'(B, C, D, E, F).
464'CHRlss_2__24__26__28__30__32__33'([], A, B, C, D) :-
465	'CHRlss_2__24__26__28__30__32__34'(B, A, C, D).
466:- set_flag('CHRlss_2__24__26__28__30__32__33' / 5, leash, notrace).
467'CHRlss_2__24__26__28__30__32__34'(lss(A, B), C, D, E) ?-
468	'CHRvar'(C),
469	!,
470	'CHRget_delayed_goals'(B, F),
471	'CHRlss_2__24__26__28__30__32__34__35'(F, C, lss(A, B), D, E).
472'CHRlss_2__24__26__28__30__32__34'(lss(A, B), C, D, E) :-
473	'CHRlss_2__24__26__28__30__32__34__36'(lss(A, B), C, D, E).
474:- set_flag('CHRlss_2__24__26__28__30__32__34' / 4, leash, notrace).
475'CHRlss_2__24__26__28__30__32__34__35'(['CHRmaximum_3'(maximum(A, B, C), D, E, F)|G], H, lss(A, C), I, J) ?-
476	'CHRvar'(D),
477	coca(try_double(J, lss(A, C), F, maximum(A, B, C), lss(K, L), maximum(K, M, L), keep_first, true, M = L, max_lss)),
478	!,
479	'CHRkill'(D),
480	coca(fired_rule(max_lss)),
481	'CHRlss_2__24__26__28__30__32__34__35'(G, H, lss(A, C), I, J),
482	B = C.
483'CHRlss_2__24__26__28__30__32__34__35'([A|B], C, D, E, F) :-
484	'CHRlss_2__24__26__28__30__32__34__35'(B, C, D, E, F).
485'CHRlss_2__24__26__28__30__32__34__35'([], A, B, C, D) :-
486	'CHRlss_2__24__26__28__30__32__34__36'(B, A, C, D).
487:- set_flag('CHRlss_2__24__26__28__30__32__34__35' / 5, leash, notrace).
488'CHRlss_2__24__26__28__30__32__34__36'(lss(A, B), C, D, E) ?-
489	'CHRvar'(C),
490	!,
491	'CHRget_delayed_goals'(B, F),
492	'CHRlss_2__24__26__28__30__32__34__36__37'(F, C, lss(A, B), D, E).
493'CHRlss_2__24__26__28__30__32__34__36'(lss(A, B), C, D, E) :-
494	'CHRlss_2__24__26__28__30__32__34__36__38'(lss(A, B), C, D, E).
495:- set_flag('CHRlss_2__24__26__28__30__32__34__36' / 4, leash, notrace).
496'CHRlss_2__24__26__28__30__32__34__36__37'(['CHRmaximum_3'(maximum(A, B, C), D, E, F)|G], H, lss(B, C), I, J) ?-
497	'CHRvar'(D),
498	coca(try_double(J, lss(B, C), F, maximum(A, B, C), lss(K, L), maximum(M, K, L), keep_first, true, M = L, max_lss)),
499	!,
500	'CHRkill'(D),
501	coca(fired_rule(max_lss)),
502	'CHRlss_2__24__26__28__30__32__34__36__37'(G, H, lss(B, C), I, J),
503	A = C.
504'CHRlss_2__24__26__28__30__32__34__36__37'([A|B], C, D, E, F) :-
505	'CHRlss_2__24__26__28__30__32__34__36__37'(B, C, D, E, F).
506'CHRlss_2__24__26__28__30__32__34__36__37'([], A, B, C, D) :-
507	'CHRlss_2__24__26__28__30__32__34__36__38'(B, A, C, D).
508:- set_flag('CHRlss_2__24__26__28__30__32__34__36__37' / 5, leash, notrace).
509'CHRlss_2__24__26__28__30__32__34__36__38'(lss(A, B), C, D, E) ?-
510	'CHRvar'(C),
511	!,
512	'CHRget_delayed_goals'(B, F),
513	'CHRlss_2__24__26__28__30__32__34__36__38__39'(F, C, lss(A, B), D, E).
514'CHRlss_2__24__26__28__30__32__34__36__38'(lss(A, B), C, D, E) :-
515	'CHRlss_2__24__26__28__30__32__34__36__38__40'(lss(A, B), C, D, E).
516:- set_flag('CHRlss_2__24__26__28__30__32__34__36__38' / 4, leash, notrace).
517'CHRlss_2__24__26__28__30__32__34__36__38__39'(['CHRlss_2'(lss(A, B), C, D, E)|F], G, lss(H, A), I, J) ?-
518	'CHRvar'(C),
519	'CHRcheck_and_mark_applied'('12'(transitivity), G, C, I, D),
520	coca(try_double(J, lss(H, A), E, lss(A, B), lss(K, L), lss(L, M), augmentation, (K \== L, L \== M), lss(K, M), transitivity)),
521	no_delayed_goals((H \== A, A \== B)),
522	!,
523	coca(fired_rule(transitivity)),
524	'CHRlss_2__24__26__28__30__32__34__36__38__39'(F, G, lss(H, A), I, J),
525	lss(H, B).
526'CHRlss_2__24__26__28__30__32__34__36__38__39'([A|B], C, D, E, F) :-
527	'CHRlss_2__24__26__28__30__32__34__36__38__39'(B, C, D, E, F).
528'CHRlss_2__24__26__28__30__32__34__36__38__39'([], A, B, C, D) :-
529	'CHRlss_2__24__26__28__30__32__34__36__38__40'(B, A, C, D).
530:- set_flag('CHRlss_2__24__26__28__30__32__34__36__38__39' / 5, leash, notrace).
531'CHRlss_2__24__26__28__30__32__34__36__38__40'(lss(A, B), C, D, E) ?-
532	'CHRvar'(C),
533	!,
534	'CHRget_delayed_goals'(A, F),
535	'CHRlss_2__24__26__28__30__32__34__36__38__40__41'(F, C, lss(A, B), D, E).
536'CHRlss_2__24__26__28__30__32__34__36__38__40'(lss(A, B), C, D, E) :-
537	'CHRlss_2__24__26__28__30__32__34__36__38__40__42'(lss(A, B), C, D, E).
538:- set_flag('CHRlss_2__24__26__28__30__32__34__36__38__40' / 4, leash, notrace).
539'CHRlss_2__24__26__28__30__32__34__36__38__40__41'(['CHRlss_2'(lss(A, B), C, D, E)|F], G, lss(B, H), I, J) ?-
540	'CHRvar'(C),
541	'CHRcheck_and_mark_applied'('21'(transitivity), G, C, I, D),
542	coca(try_double(J, lss(B, H), E, lss(A, B), lss(K, L), lss(M, K), augmentation, (M \== K, K \== L), lss(M, L), transitivity)),
543	no_delayed_goals((A \== B, B \== H)),
544	!,
545	coca(fired_rule(transitivity)),
546	'CHRlss_2__24__26__28__30__32__34__36__38__40__41'(F, G, lss(B, H), I, J),
547	lss(A, H).
548'CHRlss_2__24__26__28__30__32__34__36__38__40__41'([A|B], C, D, E, F) :-
549	'CHRlss_2__24__26__28__30__32__34__36__38__40__41'(B, C, D, E, F).
550'CHRlss_2__24__26__28__30__32__34__36__38__40__41'([], A, B, C, D) :-
551	'CHRlss_2__24__26__28__30__32__34__36__38__40__42'(B, A, C, D).
552:- set_flag('CHRlss_2__24__26__28__30__32__34__36__38__40__41' / 5, leash, notrace).
553'CHRlss_2__24__26__28__30__32__34__36__38__40__42'(lss(A, B), C, D, E) ?-
554	'CHRvar'(C),
555	!,
556	'CHRget_delayed_goals'(A, F),
557	'CHRlss_2__24__26__28__30__32__34__36__38__40__42__43'(F, C, lss(A, B), D, E).
558'CHRlss_2__24__26__28__30__32__34__36__38__40__42'(lss(A, B), C, D, E) :-
559	'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44'(lss(A, B), C, D, E).
560:- set_flag('CHRlss_2__24__26__28__30__32__34__36__38__40__42' / 4, leash, notrace).
561'CHRlss_2__24__26__28__30__32__34__36__38__40__42__43'(['CHRleq_2'(leq(A, B), C, D, E)|F], G, lss(B, H), I, J) ?-
562	'CHRvar'(C),
563	'CHRcheck_and_mark_applied'(transitivity, G, C, I, D),
564	coca(try_double(J, lss(B, H), E, leq(A, B), lss(K, L), leq(M, K), augmentation, (M \== K, K \== L), lss(M, L), transitivity)),
565	no_delayed_goals((A \== B, B \== H)),
566	!,
567	coca(fired_rule(transitivity)),
568	'CHRlss_2__24__26__28__30__32__34__36__38__40__42__43'(F, G, lss(B, H), I, J),
569	lss(A, H).
570'CHRlss_2__24__26__28__30__32__34__36__38__40__42__43'([A|B], C, D, E, F) :-
571	'CHRlss_2__24__26__28__30__32__34__36__38__40__42__43'(B, C, D, E, F).
572'CHRlss_2__24__26__28__30__32__34__36__38__40__42__43'([], A, B, C, D) :-
573	'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44'(B, A, C, D).
574:- set_flag('CHRlss_2__24__26__28__30__32__34__36__38__40__42__43' / 5, leash, notrace).
575'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44'(lss(A, B), C, D, E) ?-
576	'CHRvar'(C),
577	!,
578	'CHRget_delayed_goals'(B, F),
579	'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44__45'(F, C, lss(A, B), D, E).
580'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44'(lss(A, B), C, D, E) :-
581	'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44__46'(lss(A, B), C, D, E).
582:- set_flag('CHRlss_2__24__26__28__30__32__34__36__38__40__42__44' / 4, leash, notrace).
583'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44__45'(['CHRleq_2'(leq(A, B), C, D, E)|F], G, lss(H, A), I, J) ?-
584	'CHRvar'(C),
585	'CHRcheck_and_mark_applied'(transitivity, G, C, I, D),
586	coca(try_double(J, lss(H, A), E, leq(A, B), lss(K, L), leq(L, M), augmentation, (K \== L, L \== M), lss(K, M), transitivity)),
587	no_delayed_goals((H \== A, A \== B)),
588	!,
589	coca(fired_rule(transitivity)),
590	'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44__45'(F, G, lss(H, A), I, J),
591	lss(H, B).
592'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44__45'([A|B], C, D, E, F) :-
593	'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44__45'(B, C, D, E, F).
594'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44__45'([], A, B, C, D) :-
595	'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44__46'(B, A, C, D).
596:- set_flag('CHRlss_2__24__26__28__30__32__34__36__38__40__42__44__45' / 5, leash, notrace).
597'CHRlss_2__24__26__28__30__32__34__36__38__40__42__44__46'(lss(A, B), C, D, E) :-
598	(
599	    'CHRvar'(C)
600	->
601	    'CHRdelay'([C, lss(A, B)], 'CHRlss_2'(lss(A, B), C, D, E))
602	;
603	    true
604	).
605:- set_flag('CHRlss_2__24__26__28__30__32__34__36__38__40__42__44__46' / 4, leash, notrace).
606neq(A, B) :-
607	'CHRgen_num'(C),
608	coca(add_one_constraint(C, neq(A, B))),
609	'CHRneq_2'(neq(A, B), D, E, C).
610
611
612
613%%% Rules handling for neq / 2
614
615'CHRneq_2'(neq(A, B), C, D, E) :-
616	(
617	    'CHRnonvar'(C)
618	;
619	    'CHRalready_in'('CHRneq_2'(neq(A, B), C, D, E)),
620	    coca(already_in)
621	),
622	!.
623'CHRneq_2'(neq(A, B), C, D, E) ?-
624	coca(try_rule(E, neq(A, B), built_in, neq(F, G), replacement, F ~= G, true)),
625	no_delayed_goals(A ~= B),
626	!,
627	'CHRkill'(C),
628	coca(fired_rule(built_in)).
629'CHRneq_2'(neq(A, A), B, C, D) ?-
630	coca(try_rule(D, neq(A, A), irreflexivity, neq(E, E), replacement, true, fail)),
631	!,
632	'CHRkill'(B),
633	coca(fired_rule(irreflexivity)),
634	fail.
635'CHRneq_2'(neq(A, B), C, D, E) ?-
636	'CHRget_delayed_goals'(B, F),
637	'CHRneq_2__48'(F, [B, A], [], G),
638	coca(try_double(E, neq(A, B), G, leq(A, B), neq(H, I), leq(H, I), replacement, true, lss(H, I), simplification)),
639	!,
640	'CHRkill'(C),
641	coca(fired_rule(simplification)),
642	lss(A, B).
643'CHRneq_2'(neq(A, B), C, D, E) ?-
644	'CHRget_delayed_goals'(B, F),
645	'CHRneq_2__49'(F, [B, A], [], G),
646	coca(try_double(E, neq(A, B), G, leq(B, A), neq(H, I), leq(I, H), replacement, true, lss(I, H), simplification)),
647	!,
648	'CHRkill'(C),
649	coca(fired_rule(simplification)),
650	lss(B, A).
651'CHRneq_2'(neq(A, B), C, D, E) ?-
652	'CHRget_delayed_goals'(B, F),
653	'CHRneq_2__50'(F, [B, A], [], G),
654	coca(try_double(E, neq(A, B), G, neq(B, A), neq(H, I), neq(I, H), keep_second, true, true, subsumption)),
655	!,
656	'CHRkill'(C),
657	coca(fired_rule(subsumption)).
658'CHRneq_2'(neq(A, B), C, D, E) ?-
659	'CHRget_delayed_goals'(B, F),
660	'CHRneq_2__51'(F, [B, A], [], G),
661	coca(try_double(E, neq(A, B), G, lss(A, B), neq(H, I), lss(H, I), keep_second, true, true, subsumption)),
662	!,
663	'CHRkill'(C),
664	coca(fired_rule(subsumption)).
665'CHRneq_2'(neq(A, B), C, D, E) ?-
666	'CHRget_delayed_goals'(B, F),
667	'CHRneq_2__52'(F, [B, A], [], G),
668	coca(try_double(E, neq(A, B), G, lss(B, A), neq(H, I), lss(I, H), keep_second, true, true, subsumption)),
669	!,
670	'CHRkill'(C),
671	coca(fired_rule(subsumption)).
672'CHRneq_2'(neq(A, B), C, D, E) :-
673	'CHRneq_2__47'(neq(A, B), C, D, E).
674'CHRneq_2__48'(['CHRleq_2'(leq(A, B), C, D, E)|F], [B, A], [], G) ?-
675	'CHRvar'(C),
676	'CHRkill'(C),
677	'CHR='([], []),
678	'CHR='(E, G).
679'CHRneq_2__48'([A|B], C, D, E) :-
680	'CHRneq_2__48'(B, C, D, E).
681:- set_flag('CHRneq_2__48' / 4, leash, notrace).
682'CHRneq_2__49'(['CHRleq_2'(leq(A, B), C, D, E)|F], [A, B], [], G) ?-
683	'CHRvar'(C),
684	'CHRkill'(C),
685	'CHR='([], []),
686	'CHR='(E, G).
687'CHRneq_2__49'([A|B], C, D, E) :-
688	'CHRneq_2__49'(B, C, D, E).
689:- set_flag('CHRneq_2__49' / 4, leash, notrace).
690'CHRneq_2__50'(['CHRneq_2'(neq(A, B), C, D, E)|F], [A, B], [], G) ?-
691	'CHRvar'(C),
692	'CHR='([], []),
693	'CHR='(E, G).
694'CHRneq_2__50'([A|B], C, D, E) :-
695	'CHRneq_2__50'(B, C, D, E).
696:- set_flag('CHRneq_2__50' / 4, leash, notrace).
697'CHRneq_2__51'(['CHRlss_2'(lss(A, B), C, D, E)|F], [B, A], [], G) ?-
698	'CHRvar'(C),
699	'CHR='([], []),
700	'CHR='(E, G).
701'CHRneq_2__51'([A|B], C, D, E) :-
702	'CHRneq_2__51'(B, C, D, E).
703:- set_flag('CHRneq_2__51' / 4, leash, notrace).
704'CHRneq_2__52'(['CHRlss_2'(lss(A, B), C, D, E)|F], [A, B], [], G) ?-
705	'CHRvar'(C),
706	'CHR='([], []),
707	'CHR='(E, G).
708'CHRneq_2__52'([A|B], C, D, E) :-
709	'CHRneq_2__52'(B, C, D, E).
710:- set_flag('CHRneq_2__52' / 4, leash, notrace).
711:- set_flag('CHRneq_2' / 4, leash, notrace).
712:- current_macro('CHRneq_2' / 4, _23023, _23024, _23025) -> true ; define_macro('CHRneq_2' / 4, tr_chr / 2, [write]).
713'CHRneq_2__47'(A, B, C, D) :-
714	'CHRneq_2__53'(A, B, C, D).
715:- set_flag('CHRneq_2__47' / 4, leash, notrace).
716'CHRneq_2__53'(neq(A, B), C, D, E) ?-
717	'CHRvar'(C),
718	!,
719	'CHRget_delayed_goals'(B, F),
720	'CHRneq_2__53__54'(F, C, neq(A, B), D, E).
721'CHRneq_2__53'(neq(A, B), C, D, E) :-
722	'CHRneq_2__53__55'(neq(A, B), C, D, E).
723:- set_flag('CHRneq_2__53' / 4, leash, notrace).
724'CHRneq_2__53__54'(['CHRneq_2'(neq(A, B), C, D, E)|F], G, neq(B, A), H, I) ?-
725	'CHRvar'(C),
726	coca(try_double(I, neq(B, A), E, neq(A, B), neq(J, K), neq(K, J), keep_first, true, true, subsumption)),
727	!,
728	'CHRkill'(C),
729	coca(fired_rule(subsumption)),
730	'CHRneq_2__53__54'(F, G, neq(B, A), H, I).
731'CHRneq_2__53__54'([A|B], C, D, E, F) :-
732	'CHRneq_2__53__54'(B, C, D, E, F).
733'CHRneq_2__53__54'([], A, B, C, D) :-
734	'CHRneq_2__53__55'(B, A, C, D).
735:- set_flag('CHRneq_2__53__54' / 5, leash, notrace).
736'CHRneq_2__53__55'(neq(A, B), C, D, E) :-
737	(
738	    'CHRvar'(C)
739	->
740	    'CHRdelay'([C, neq(A, B)], 'CHRneq_2'(neq(A, B), C, D, E))
741	;
742	    true
743	).
744:- set_flag('CHRneq_2__53__55' / 4, leash, notrace).
745
746
747
748%%% Prolog clauses for minimum / 3
749
750clause_minimum(A, B, C) :-
751	(
752	    leq(A, B),
753	    C = A
754	;
755	    lss(B, A),
756	    C = B
757	).
758:- current_macro(clause_minimum / 3, _23727, _23728, _23729) -> true ; define_macro(clause_minimum / 3, tr_chr / 2, [write]).
759minimum(A, B, C) :-
760	'CHRgen_num'(D),
761	coca(add_one_constraint(D, minimum(A, B, C))),
762	'CHRminimum_3'(minimum(A, B, C), E, F, D).
763
764
765
766%%% Rules handling for minimum / 3
767
768'CHRminimum_3'(minimum(A, B, C), D, E, F) :-
769	(
770	    'CHRnonvar'(D)
771	;
772	    'CHRalready_in'('CHRminimum_3'(minimum(A, B, C), D, E, F)),
773	    coca(already_in)
774	),
775	!.
776'CHRminimum_3'(minimum(A, B, C), D, E, F) ?-
777	coca(try_rule(F, minimum(A, B, C), built_in, minimum(G, H, I), replacement, (ground(G), ground(H)), G @=< H -> I = G ; I = H)),
778	no_delayed_goals((ground(A), ground(B))),
779	!,
780	'CHRkill'(D),
781	coca(fired_rule(built_in)),
782	(
783	    A @=< B
784	->
785	    C = A
786	;
787	    C = B
788	).
789'CHRminimum_3'(minimum(A, B, C), D, E, F) ?-
790	coca(try_rule(F, minimum(A, B, C), built_in, minimum(G, H, I), replacement, I ~= G, (I = H, lss(H, G)))),
791	no_delayed_goals(C ~= A),
792	!,
793	'CHRkill'(D),
794	coca(fired_rule(built_in)),
795	C = B,
796	lss(B, A).
797'CHRminimum_3'(minimum(A, B, C), D, E, F) ?-
798	coca(try_rule(F, minimum(A, B, C), built_in, minimum(G, H, I), replacement, I ~= H, (I = G, lss(G, H)))),
799	no_delayed_goals(C ~= B),
800	!,
801	'CHRkill'(D),
802	coca(fired_rule(built_in)),
803	C = A,
804	lss(A, B).
805'CHRminimum_3'(minimum(A, A, B), C, D, E) ?-
806	coca(try_rule(E, minimum(A, A, B), min_eq, minimum(F, F, G), replacement, true, F = G)),
807	!,
808	'CHRkill'(C),
809	coca(fired_rule(min_eq)),
810	A = B.
811'CHRminimum_3'(minimum(A, B, C), D, E, F) ?-
812	'CHRget_delayed_goals'(B, G),
813	'CHRminimum_3__57'(G, [B, A], [], H),
814	coca(try_double(F, minimum(A, B, C), H, leq(B, A), minimum(I, J, K), leq(J, I), keep_second, true, J = K, min_leq)),
815	!,
816	'CHRkill'(D),
817	coca(fired_rule(min_leq)),
818	B = C.
819'CHRminimum_3'(minimum(A, B, C), D, E, F) ?-
820	'CHRget_delayed_goals'(B, G),
821	'CHRminimum_3__58'(G, [B, A], [], H),
822	coca(try_double(F, minimum(A, B, C), H, leq(A, B), minimum(I, J, K), leq(I, J), keep_second, true, I = K, min_leq)),
823	!,
824	'CHRkill'(D),
825	coca(fired_rule(min_leq)),
826	A = C.
827'CHRminimum_3'(minimum(A, B, C), D, E, F) ?-
828	'CHRget_delayed_goals'(C, G),
829	'CHRminimum_3__59'(G, [C, A], [], H),
830	coca(try_double(F, minimum(A, B, C), H, lss(C, A), minimum(I, J, K), lss(K, I), keep_second, true, J = K, min_lss)),
831	!,
832	'CHRkill'(D),
833	coca(fired_rule(min_lss)),
834	B = C.
835'CHRminimum_3'(minimum(A, B, C), D, E, F) ?-
836	'CHRget_delayed_goals'(C, G),
837	'CHRminimum_3__60'(G, [C, B], [], H),
838	coca(try_double(F, minimum(A, B, C), H, lss(C, B), minimum(I, J, K), lss(K, J), keep_second, true, I = K, min_lss)),
839	!,
840	'CHRkill'(D),
841	coca(fired_rule(min_lss)),
842	A = C.
843'CHRminimum_3'(minimum(A, B, C), D, E, F) ?-
844	'CHRget_delayed_goals'(B, G),
845	'CHRminimum_3__61'(G, [B, A], [H], I),
846	coca(try_double(F, minimum(A, B, C), I, minimum(A, B, H), minimum(J, K, L), minimum(J, K, M), keep_second, true, L = M, functional)),
847	!,
848	'CHRkill'(D),
849	coca(fired_rule(functional)),
850	C = H.
851'CHRminimum_3'(minimum(A, B, C), D, E, F) ?-
852	'CHRget_delayed_goals'(B, G),
853	'CHRminimum_3__62'(G, [B, A], [H], I),
854	coca(try_double(F, minimum(A, B, C), I, minimum(B, A, H), minimum(J, K, L), minimum(K, J, M), keep_second, true, L = M, functional)),
855	!,
856	'CHRkill'(D),
857	coca(fired_rule(functional)),
858	C = H.
859'CHRminimum_3'(minimum(A, B, C), D, E, F) :-
860	'CHRminimum_3__56'(minimum(A, B, C), D, E, F).
861'CHRminimum_3__57'(['CHRleq_2'(leq(A, B), C, D, E)|F], [A, B], [], G) ?-
862	'CHRvar'(C),
863	'CHR='([], []),
864	'CHR='(E, G).
865'CHRminimum_3__57'([A|B], C, D, E) :-
866	'CHRminimum_3__57'(B, C, D, E).
867:- set_flag('CHRminimum_3__57' / 4, leash, notrace).
868'CHRminimum_3__58'(['CHRleq_2'(leq(A, B), C, D, E)|F], [B, A], [], G) ?-
869	'CHRvar'(C),
870	'CHR='([], []),
871	'CHR='(E, G).
872'CHRminimum_3__58'([A|B], C, D, E) :-
873	'CHRminimum_3__58'(B, C, D, E).
874:- set_flag('CHRminimum_3__58' / 4, leash, notrace).
875'CHRminimum_3__59'(['CHRlss_2'(lss(A, B), C, D, E)|F], [A, B], [], G) ?-
876	'CHRvar'(C),
877	'CHR='([], []),
878	'CHR='(E, G).
879'CHRminimum_3__59'([A|B], C, D, E) :-
880	'CHRminimum_3__59'(B, C, D, E).
881:- set_flag('CHRminimum_3__59' / 4, leash, notrace).
882'CHRminimum_3__60'(['CHRlss_2'(lss(A, B), C, D, E)|F], [A, B], [], G) ?-
883	'CHRvar'(C),
884	'CHR='([], []),
885	'CHR='(E, G).
886'CHRminimum_3__60'([A|B], C, D, E) :-
887	'CHRminimum_3__60'(B, C, D, E).
888:- set_flag('CHRminimum_3__60' / 4, leash, notrace).
889'CHRminimum_3__61'(['CHRminimum_3'(minimum(A, B, C), D, E, F)|G], [B, A], [H], I) ?-
890	'CHRvar'(D),
891	'CHR='([C], [H]),
892	'CHR='(F, I).
893'CHRminimum_3__61'([A|B], C, D, E) :-
894	'CHRminimum_3__61'(B, C, D, E).
895:- set_flag('CHRminimum_3__61' / 4, leash, notrace).
896'CHRminimum_3__62'(['CHRminimum_3'(minimum(A, B, C), D, E, F)|G], [A, B], [H], I) ?-
897	'CHRvar'(D),
898	'CHR='([C], [H]),
899	'CHR='(F, I).
900'CHRminimum_3__62'([A|B], C, D, E) :-
901	'CHRminimum_3__62'(B, C, D, E).
902:- set_flag('CHRminimum_3__62' / 4, leash, notrace).
903:- set_flag('CHRminimum_3' / 4, leash, notrace).
904:- current_macro('CHRminimum_3' / 4, _26729, _26730, _26731) -> true ; define_macro('CHRminimum_3' / 4, tr_chr / 2, [write]).
905'CHRminimum_3__56'(minimum(A, B, C), D, E, F) ?-
906	'CHRvar'(D),
907	'CHRcheck_and_mark_applied'('CHRminimum_3__56', E),
908	coca(try_rule(F, minimum(A, B, C), propagation, minimum(G, H, I), augmentation, G \== H, (leq(I, G), leq(I, H)))),
909	no_delayed_goals(A \== B),
910	!,
911	'CHRminimum_3__56__64'(minimum(A, B, C), D, E, F),
912	coca(fired_rule(propagation)),
913	leq(C, A),
914	leq(C, B).
915'CHRminimum_3__56'(A, B, C, D) ?-
916	'CHRminimum_3__56__64'(A, B, C, D).
917:- set_flag('CHRminimum_3__56' / 4, leash, notrace).
918'CHRminimum_3__56__64'(A, B, C, D) :-
919	'CHRminimum_3__63'(A, B, C, D).
920:- set_flag('CHRminimum_3__56__64' / 4, leash, notrace).
921'CHRminimum_3__63'(minimum(A, B, C), D, E, F) ?-
922	'CHRvar'(D),
923	!,
924	'CHRget_delayed_goals'(B, G),
925	'CHRminimum_3__63__65'(G, D, minimum(A, B, C), E, F).
926'CHRminimum_3__63'(minimum(A, B, C), D, E, F) :-
927	'CHRminimum_3__63__66'(minimum(A, B, C), D, E, F).
928:- set_flag('CHRminimum_3__63' / 4, leash, notrace).
929'CHRminimum_3__63__65'(['CHRminimum_3'(minimum(A, B, C), D, E, F)|G], H, minimum(A, B, I), J, K) ?-
930	'CHRvar'(D),
931	coca(try_double(K, minimum(A, B, I), F, minimum(A, B, C), minimum(L, M, N), minimum(L, M, O), keep_first, true, O = N, functional)),
932	!,
933	'CHRkill'(D),
934	coca(fired_rule(functional)),
935	'CHRminimum_3__63__65'(G, H, minimum(A, B, I), J, K),
936	C = I.
937'CHRminimum_3__63__65'([A|B], C, D, E, F) :-
938	'CHRminimum_3__63__65'(B, C, D, E, F).
939'CHRminimum_3__63__65'([], A, B, C, D) :-
940	'CHRminimum_3__63__66'(B, A, C, D).
941:- set_flag('CHRminimum_3__63__65' / 5, leash, notrace).
942'CHRminimum_3__63__66'(minimum(A, B, C), D, E, F) ?-
943	'CHRvar'(D),
944	!,
945	'CHRget_delayed_goals'(B, G),
946	'CHRminimum_3__63__66__67'(G, D, minimum(A, B, C), E, F).
947'CHRminimum_3__63__66'(minimum(A, B, C), D, E, F) :-
948	'CHRminimum_3__63__66__68'(minimum(A, B, C), D, E, F).
949:- set_flag('CHRminimum_3__63__66' / 4, leash, notrace).
950'CHRminimum_3__63__66__67'(['CHRminimum_3'(minimum(A, B, C), D, E, F)|G], H, minimum(B, A, I), J, K) ?-
951	'CHRvar'(D),
952	coca(try_double(K, minimum(B, A, I), F, minimum(A, B, C), minimum(L, M, N), minimum(M, L, O), keep_first, true, O = N, functional)),
953	!,
954	'CHRkill'(D),
955	coca(fired_rule(functional)),
956	'CHRminimum_3__63__66__67'(G, H, minimum(B, A, I), J, K),
957	C = I.
958'CHRminimum_3__63__66__67'([A|B], C, D, E, F) :-
959	'CHRminimum_3__63__66__67'(B, C, D, E, F).
960'CHRminimum_3__63__66__67'([], A, B, C, D) :-
961	'CHRminimum_3__63__66__68'(B, A, C, D).
962:- set_flag('CHRminimum_3__63__66__67' / 5, leash, notrace).
963'CHRminimum_3__63__66__68'(minimum(A, B, C), D, E, F) :-
964	(
965	    'CHRvar'(D)
966	->
967	    'CHRdelay'([D, minimum(A, B, C)], 'CHRminimum_3'(minimum(A, B, C), D, E, F))
968	;
969	    true
970	).
971:- set_flag('CHRminimum_3__63__66__68' / 4, leash, notrace).
972
973
974
975%%% Prolog clauses for maximum / 3
976
977clause_maximum(A, B, C) :-
978	(
979	    leq(A, B),
980	    C = B
981	;
982	    lss(B, A),
983	    C = A
984	).
985:- current_macro(clause_maximum / 3, _28145, _28146, _28147) -> true ; define_macro(clause_maximum / 3, tr_chr / 2, [write]).
986maximum(A, B, C) :-
987	'CHRgen_num'(D),
988	coca(add_one_constraint(D, maximum(A, B, C))),
989	'CHRmaximum_3'(maximum(A, B, C), E, F, D).
990
991
992
993%%% Rules handling for maximum / 3
994
995'CHRmaximum_3'(maximum(A, B, C), D, E, F) :-
996	(
997	    'CHRnonvar'(D)
998	;
999	    'CHRalready_in'('CHRmaximum_3'(maximum(A, B, C), D, E, F)),
1000	    coca(already_in)
1001	),
1002	!.
1003'CHRmaximum_3'(maximum(A, B, C), D, E, F) ?-
1004	coca(try_rule(F, maximum(A, B, C), built_in, maximum(G, H, I), replacement, (ground(G), ground(H)), H @=< G -> I = G ; I = H)),
1005	no_delayed_goals((ground(A), ground(B))),
1006	!,
1007	'CHRkill'(D),
1008	coca(fired_rule(built_in)),
1009	(
1010	    B @=< A
1011	->
1012	    C = A
1013	;
1014	    C = B
1015	).
1016'CHRmaximum_3'(maximum(A, B, C), D, E, F) ?-
1017	coca(try_rule(F, maximum(A, B, C), built_in, maximum(G, H, I), replacement, I ~= G, (I = H, lss(G, H)))),
1018	no_delayed_goals(C ~= A),
1019	!,
1020	'CHRkill'(D),
1021	coca(fired_rule(built_in)),
1022	C = B,
1023	lss(A, B).
1024'CHRmaximum_3'(maximum(A, B, C), D, E, F) ?-
1025	coca(try_rule(F, maximum(A, B, C), built_in, maximum(G, H, I), replacement, I ~= H, (I = G, lss(H, G)))),
1026	no_delayed_goals(C ~= B),
1027	!,
1028	'CHRkill'(D),
1029	coca(fired_rule(built_in)),
1030	C = A,
1031	lss(B, A).
1032'CHRmaximum_3'(maximum(A, A, B), C, D, E) ?-
1033	coca(try_rule(E, maximum(A, A, B), max_eq, maximum(F, F, G), replacement, true, F = G)),
1034	!,
1035	'CHRkill'(C),
1036	coca(fired_rule(max_eq)),
1037	A = B.
1038'CHRmaximum_3'(maximum(A, B, C), D, E, F) ?-
1039	'CHRget_delayed_goals'(B, G),
1040	'CHRmaximum_3__70'(G, [B, A], [], H),
1041	coca(try_double(F, maximum(A, B, C), H, leq(B, A), maximum(I, J, K), leq(J, I), keep_second, true, I = K, max_leq)),
1042	!,
1043	'CHRkill'(D),
1044	coca(fired_rule(max_leq)),
1045	A = C.
1046'CHRmaximum_3'(maximum(A, B, C), D, E, F) ?-
1047	'CHRget_delayed_goals'(B, G),
1048	'CHRmaximum_3__71'(G, [B, A], [], H),
1049	coca(try_double(F, maximum(A, B, C), H, leq(A, B), maximum(I, J, K), leq(I, J), keep_second, true, J = K, max_leq)),
1050	!,
1051	'CHRkill'(D),
1052	coca(fired_rule(max_leq)),
1053	B = C.
1054'CHRmaximum_3'(maximum(A, B, C), D, E, F) ?-
1055	'CHRget_delayed_goals'(C, G),
1056	'CHRmaximum_3__72'(G, [C, A], [], H),
1057	coca(try_double(F, maximum(A, B, C), H, lss(A, C), maximum(I, J, K), lss(I, K), keep_second, true, J = K, max_lss)),
1058	!,
1059	'CHRkill'(D),
1060	coca(fired_rule(max_lss)),
1061	B = C.
1062'CHRmaximum_3'(maximum(A, B, C), D, E, F) ?-
1063	'CHRget_delayed_goals'(C, G),
1064	'CHRmaximum_3__73'(G, [C, B], [], H),
1065	coca(try_double(F, maximum(A, B, C), H, lss(B, C), maximum(I, J, K), lss(J, K), keep_second, true, I = K, max_lss)),
1066	!,
1067	'CHRkill'(D),
1068	coca(fired_rule(max_lss)),
1069	A = C.
1070'CHRmaximum_3'(maximum(A, B, C), D, E, F) ?-
1071	'CHRget_delayed_goals'(B, G),
1072	'CHRmaximum_3__74'(G, [B, A], [H], I),
1073	coca(try_double(F, maximum(A, B, C), I, maximum(A, B, H), maximum(J, K, L), maximum(J, K, M), keep_second, true, L = M, functional)),
1074	!,
1075	'CHRkill'(D),
1076	coca(fired_rule(functional)),
1077	C = H.
1078'CHRmaximum_3'(maximum(A, B, C), D, E, F) ?-
1079	'CHRget_delayed_goals'(B, G),
1080	'CHRmaximum_3__75'(G, [B, A], [H], I),
1081	coca(try_double(F, maximum(A, B, C), I, maximum(B, A, H), maximum(J, K, L), maximum(K, J, M), keep_second, true, L = M, functional)),
1082	!,
1083	'CHRkill'(D),
1084	coca(fired_rule(functional)),
1085	C = H.
1086'CHRmaximum_3'(maximum(A, B, C), D, E, F) :-
1087	'CHRmaximum_3__69'(maximum(A, B, C), D, E, F).
1088'CHRmaximum_3__70'(['CHRleq_2'(leq(A, B), C, D, E)|F], [A, B], [], G) ?-
1089	'CHRvar'(C),
1090	'CHR='([], []),
1091	'CHR='(E, G).
1092'CHRmaximum_3__70'([A|B], C, D, E) :-
1093	'CHRmaximum_3__70'(B, C, D, E).
1094:- set_flag('CHRmaximum_3__70' / 4, leash, notrace).
1095'CHRmaximum_3__71'(['CHRleq_2'(leq(A, B), C, D, E)|F], [B, A], [], G) ?-
1096	'CHRvar'(C),
1097	'CHR='([], []),
1098	'CHR='(E, G).
1099'CHRmaximum_3__71'([A|B], C, D, E) :-
1100	'CHRmaximum_3__71'(B, C, D, E).
1101:- set_flag('CHRmaximum_3__71' / 4, leash, notrace).
1102'CHRmaximum_3__72'(['CHRlss_2'(lss(A, B), C, D, E)|F], [B, A], [], G) ?-
1103	'CHRvar'(C),
1104	'CHR='([], []),
1105	'CHR='(E, G).
1106'CHRmaximum_3__72'([A|B], C, D, E) :-
1107	'CHRmaximum_3__72'(B, C, D, E).
1108:- set_flag('CHRmaximum_3__72' / 4, leash, notrace).
1109'CHRmaximum_3__73'(['CHRlss_2'(lss(A, B), C, D, E)|F], [B, A], [], G) ?-
1110	'CHRvar'(C),
1111	'CHR='([], []),
1112	'CHR='(E, G).
1113'CHRmaximum_3__73'([A|B], C, D, E) :-
1114	'CHRmaximum_3__73'(B, C, D, E).
1115:- set_flag('CHRmaximum_3__73' / 4, leash, notrace).
1116'CHRmaximum_3__74'(['CHRmaximum_3'(maximum(A, B, C), D, E, F)|G], [B, A], [H], I) ?-
1117	'CHRvar'(D),
1118	'CHR='([C], [H]),
1119	'CHR='(F, I).
1120'CHRmaximum_3__74'([A|B], C, D, E) :-
1121	'CHRmaximum_3__74'(B, C, D, E).
1122:- set_flag('CHRmaximum_3__74' / 4, leash, notrace).
1123'CHRmaximum_3__75'(['CHRmaximum_3'(maximum(A, B, C), D, E, F)|G], [A, B], [H], I) ?-
1124	'CHRvar'(D),
1125	'CHR='([C], [H]),
1126	'CHR='(F, I).
1127'CHRmaximum_3__75'([A|B], C, D, E) :-
1128	'CHRmaximum_3__75'(B, C, D, E).
1129:- set_flag('CHRmaximum_3__75' / 4, leash, notrace).
1130:- set_flag('CHRmaximum_3' / 4, leash, notrace).
1131:- current_macro('CHRmaximum_3' / 4, _31147, _31148, _31149) -> true ; define_macro('CHRmaximum_3' / 4, tr_chr / 2, [write]).
1132'CHRmaximum_3__69'(maximum(A, B, C), D, E, F) ?-
1133	'CHRvar'(D),
1134	'CHRcheck_and_mark_applied'('CHRmaximum_3__69', E),
1135	coca(try_rule(F, maximum(A, B, C), propagation, maximum(G, H, I), augmentation, G \== H, (leq(G, I), leq(H, I)))),
1136	no_delayed_goals(A \== B),
1137	!,
1138	'CHRmaximum_3__69__77'(maximum(A, B, C), D, E, F),
1139	coca(fired_rule(propagation)),
1140	leq(A, C),
1141	leq(B, C).
1142'CHRmaximum_3__69'(A, B, C, D) ?-
1143	'CHRmaximum_3__69__77'(A, B, C, D).
1144:- set_flag('CHRmaximum_3__69' / 4, leash, notrace).
1145'CHRmaximum_3__69__77'(A, B, C, D) :-
1146	'CHRmaximum_3__76'(A, B, C, D).
1147:- set_flag('CHRmaximum_3__69__77' / 4, leash, notrace).
1148'CHRmaximum_3__76'(maximum(A, B, C), D, E, F) ?-
1149	'CHRvar'(D),
1150	!,
1151	'CHRget_delayed_goals'(B, G),
1152	'CHRmaximum_3__76__78'(G, D, maximum(A, B, C), E, F).
1153'CHRmaximum_3__76'(maximum(A, B, C), D, E, F) :-
1154	'CHRmaximum_3__76__79'(maximum(A, B, C), D, E, F).
1155:- set_flag('CHRmaximum_3__76' / 4, leash, notrace).
1156'CHRmaximum_3__76__78'(['CHRmaximum_3'(maximum(A, B, C), D, E, F)|G], H, maximum(A, B, I), J, K) ?-
1157	'CHRvar'(D),
1158	coca(try_double(K, maximum(A, B, I), F, maximum(A, B, C), maximum(L, M, N), maximum(L, M, O), keep_first, true, O = N, functional)),
1159	!,
1160	'CHRkill'(D),
1161	coca(fired_rule(functional)),
1162	'CHRmaximum_3__76__78'(G, H, maximum(A, B, I), J, K),
1163	C = I.
1164'CHRmaximum_3__76__78'([A|B], C, D, E, F) :-
1165	'CHRmaximum_3__76__78'(B, C, D, E, F).
1166'CHRmaximum_3__76__78'([], A, B, C, D) :-
1167	'CHRmaximum_3__76__79'(B, A, C, D).
1168:- set_flag('CHRmaximum_3__76__78' / 5, leash, notrace).
1169'CHRmaximum_3__76__79'(maximum(A, B, C), D, E, F) ?-
1170	'CHRvar'(D),
1171	!,
1172	'CHRget_delayed_goals'(B, G),
1173	'CHRmaximum_3__76__79__80'(G, D, maximum(A, B, C), E, F).
1174'CHRmaximum_3__76__79'(maximum(A, B, C), D, E, F) :-
1175	'CHRmaximum_3__76__79__81'(maximum(A, B, C), D, E, F).
1176:- set_flag('CHRmaximum_3__76__79' / 4, leash, notrace).
1177'CHRmaximum_3__76__79__80'(['CHRmaximum_3'(maximum(A, B, C), D, E, F)|G], H, maximum(B, A, I), J, K) ?-
1178	'CHRvar'(D),
1179	coca(try_double(K, maximum(B, A, I), F, maximum(A, B, C), maximum(L, M, N), maximum(M, L, O), keep_first, true, O = N, functional)),
1180	!,
1181	'CHRkill'(D),
1182	coca(fired_rule(functional)),
1183	'CHRmaximum_3__76__79__80'(G, H, maximum(B, A, I), J, K),
1184	C = I.
1185'CHRmaximum_3__76__79__80'([A|B], C, D, E, F) :-
1186	'CHRmaximum_3__76__79__80'(B, C, D, E, F).
1187'CHRmaximum_3__76__79__80'([], A, B, C, D) :-
1188	'CHRmaximum_3__76__79__81'(B, A, C, D).
1189:- set_flag('CHRmaximum_3__76__79__80' / 5, leash, notrace).
1190'CHRmaximum_3__76__79__81'(maximum(A, B, C), D, E, F) :-
1191	(
1192	    'CHRvar'(D)
1193	->
1194	    'CHRdelay'([D, maximum(A, B, C)], 'CHRmaximum_3'(maximum(A, B, C), D, E, F))
1195	;
1196	    true
1197	).
1198:- set_flag('CHRmaximum_3__76__79__81' / 4, leash, notrace).
1199
1200:- getval(variable_names_flag, Val), set_flag(variable_names, Val).
1201