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(100, xfx, unif).
9unif(_534, [_533|_532]) :- chr_unif(_534, _533, _532).
10nth_member(1, [_2399|_2401], _2399).
11nth_member(_2429, [_2437|_2423], _2422) :- _2429 > 1, plus(_2424, 1, _2429), nth_member(_2424, _2423, _2422).
12islist([]) ?- true.
13islist([_2468|_2463]) ?- islist(_2463).
14unify1(_3171, _3170) :- chr_var(_3171), chr_var(_3170), _3171 = _3170.
15unify1(_3199, _3198) :- chr_var(_3199), chr_nonvar(_3198), _3199 = _3198.
16unify1(_3227, _3226) :- chr_nonvar(_3227), chr_var(_3226), _3227 = _3226.
17unify1(_3256, _3255) :- chr_functor(_3256, _3262, _3257), chr_functor(_3255, _3262, _3257), unify_args(_3257, _3256, _3255).
18unify_args(0, _3282, _3281).
19unify_args(_3324, _3313, _3312) :- _3324 > 0, plus(_3314, 1, _3324), chr_arg(_3324, _3313, _3319), chr_arg(_3324, _3312, _3318), unify1(_3319, _3318), unify_args(_3314, _3313, _3312).
20unify2(_3360, _3359) :- chr_var(_3360), chr_var(_3359), _3360 = _3359.
21unify2(_3388, _3387) :- chr_var(_3388), chr_nonvar(_3387), _3388 = _3387.
22unify2(_3415, _3416) :- chr_nonvar(_3415), chr_var(_3416), _3416 = _3415.
23unify2(_3457, _3451) :- unif(_3457, [_3450|_3444]), unif(_3451, [_3450|_3443]), unify_list(_3444, _3443).
24unify_list([], []).
25unify_list([_3493|_3488], [_3492|_3487]) :- unify2(_3493, _3492), unify_list(_3488, _3487).
26varlist(_3516, _3515) :- varlist(_3516, [], _3515).
27varlist(_3537, _3536, [_3537|_3536]) :- chr_var(_3537), diff_list(_3537, _3536).
28varlist(_3563, _3562, _3562) :- chr_var(_3563), member(_3563, _3562).
29varlist(_3590, _3589, _3588) :- chr_functor(_3590, _3594, _3591), varlist(_3591, _3590, _3589, _3588).
30varlist(0, _3613, _3612, _3612).
31varlist(_3655, _3643, _3649, _3641) :- _3655 > 0, plus(_3644, 1, _3655), chr_arg(_3655, _3643, _3650), varlist(_3650, _3649, _3642), varlist(_3644, _3643, _3642, _3641).
32common_var(_3703, _3699, _3708) :- varlist(_3703, _3695), varlist(_3699, _3690), member(_3691, _3695), member(_3691, _3690).
33ground0(_3722) :- varlist(_3722, []).
34ground1(_3741) :- chr_functor(_3741, _3745, _3742), ground1(_3742, _3741).
35ground1(0, _3758).
36ground1(_3793, _3784) :- _3793 > 0, plus(_3785, 1, _3793), chr_arg(_3793, _3784, _3788), ground1(_3788), ground1(_3785, _3784).
37ground2(_3825) :- unif(_3825, [_3823|_3819]), ground2l(_3819).
38ground2l([]).
39ground2l([_3855|_3852]) :- ground2(_3855), ground2l(_3852).
40number_vars(_3889, _3898, _3903) :- var(_3889), plus(_3898, 1, _3903), name(_3898, _3887), name('V', [_3888]), name(_3889, [_3888|_3887]).
41number_vars(_3935, _3928, _3927) :- unif(_3935, [_3933|_3929]), number_list(_3929, _3928, _3927).
42number_list([], _3951, _3951).
43number_list([_3977|_3971], _3976, _3969) :- number_vars(_3977, _3976, _3970), number_list(_3971, _3970, _3969).
44undupvar(_4004, _4003, _4002, _4001) :- undupvar(_4004, _4003, [], _4002, [], _4001).
45undupvar(_4027, _4027, _4026, [_4027|_4026], _4037, _4037) :- chr_var(_4027), diff_list(_4027, _4026).
46undupvar(_4057, _4073, _4056, _4056, _4069, [_4073 = _4057|_4069]) :- chr_var(_4057), member(_4057, _4056).
47undupvar(_4103, _4102, _4101, _4100, _4099, _4098) :- chr_functor(_4103, _4109, _4104), chr_functor(_4102, _4109, _4104), undupvar(_4104, _4103, _4102, _4101, _4100, _4099, _4098).
48undupvar(0, _4139, _4138, _4137, _4137, _4136, _4136).
49undupvar(_4195, _4178, _4177, _4188, _4175, _4187, _4173) :- _4195 > 0, plus(_4179, 1, _4195), chr_arg(_4195, _4178, _4190), chr_arg(_4195, _4177, _4189), undupvar(_4190, _4189, _4188, _4176, _4187, _4174), undupvar(_4179, _4178, _4177, _4176, _4175, _4174, _4173).
50substitute(_4258, _4244, _4243, _4252) :- _4258 = _4244, _4252 = _4243 ; diff(_4258, _4244), unif(_4258, [_4251|_4245]), unif(_4252, [_4251|_4242]), substitute_list(_4245, _4244, _4243, _4242).
51substitute_list([], _4285, _4286, []).
52substitute_list([_4316|_4309], _4308, _4307, [_4315|_4306]) :- substitute(_4316, _4308, _4307, _4315), substitute_list(_4309, _4308, _4307, _4306).
53pos(_4428, t(_4411, _4376, _4375, _4420, _4400) - _4421, _4368, _4367 - _4366) :- unif(_4428, [_4411|_4422]), pos_list(_4422, _4421, _4420, _4367 - _4384), string_length1(_4411, _4375), posdiff(_4384 - _4367, _4375, _4383), _4400 is (_4383 + (_4384 - _4367) mod 2) // 2, _4366 is _4384 + _4383, _4376 is _4375 // 2, _4368 is (_4367 + _4366) // 2.
54pos_list([], [], [], _4461 - _4461).
55pos_list([_4507|_4490], [_4506|_4489], [_4505|_4488], _4504 - _4486) :- pos(_4507, _4506, _4505, _4504 - _4495), plus(_4495, 2, _4487), pos_list(_4490, _4489, _4488, _4487 - _4486).
56string_length1(_4546, _4541) :- atomic(_4546), name(_4546, _4542), length(_4542, _4541).
57posdiff(_4575, _4576, 0) :- _4568 is _4576 - _4575, _4568 =< 0.
58posdiff(_4604, _4605, _4597) :- _4597 is _4605 - _4604, _4597 > 0.
59lsu(_4643, _4642, _4641) :- map(_4643, _4642, _4641, [], _4634), sort(0, =<, _4634, _4628), unify_duplicates(_4628).
60map(_4682, _4681, _4680, _4679, _4678) :- chr_functor(_4682, _4687, _4677), chr_functor(_4681, _4687, _4677), chr_functor(_4680, _4687, _4677), map_arg(_4682, _4681, _4680, _4679, _4678, _4677 - 0).
61map(_4746, _4741, _4764, _4759, [subst(_4746, _4741, _4764)|_4759]) :- chr_var(_4746) ; chr_var(_4741) ; chr_functor(_4746, _4736, _4731), chr_functor(_4741, _4735, _4730), (diff(_4736, _4735) ; diff(_4731, _4730)).
62map_arg(_4800, _4799, _4798, _4782, _4781, _4787 - _4786) :- _4787 = _4786, _4782 = _4781.
63map_arg(_4845, _4844, _4843, _4852, _4841, _4840 - _4872) :- _4840 > _4872, plus(_4872, 1, _4839), chr_arg(_4839, _4845, _4855), chr_arg(_4839, _4844, _4854), chr_arg(_4839, _4843, _4853), map(_4855, _4854, _4853, _4852, _4842), map_arg(_4845, _4844, _4843, _4842, _4841, _4840 - _4839).
64unify_duplicates([subst(_4920, _4915, _4931)|_4904]) :- _4904 = [subst(_4919, _4914, _4930)|_4942], (_4920 = _4919, _4915 = _4914, _4931 = _4930 ; diff(_4920, _4919) ; diff(_4915, _4914)), unify_duplicates(_4904).
65unify_duplicates([_4966]).
66unify_duplicates([]).
67chr_functor(A, B, C) :-
68	'CHRgen_num'(D),
69	coca(add_one_constraint(D, chr_functor(A, B, C))),
70	'CHRchr_functor_3'(chr_functor(A, B, C), E, F, D).
71
72
73
74%%% Rules handling for chr_functor / 3
75
76'CHRchr_functor_3'(chr_functor(A, B, C), D, E, F) :-
77	'CHRnonvar'(D),
78	!.
79'CHRchr_functor_3'(chr_functor(A, B, C), D, E, F) ?-
80	coca(try_rule(F, chr_functor(A, B, C), anonymous("0"), chr_functor(G, H, I), replacement, nonvar(G) ; (nonvar(H), nonvar(I)), functor(G, H, I))),
81	no_delayed_goals(nonvar(A) ; (nonvar(B), nonvar(C))),
82	!,
83	'CHRkill'(D),
84	coca(fired_rule(anonymous("0"))),
85	functor(A, B, C).
86'CHRchr_functor_3'(chr_functor(A, B, C), D, E, F) ?-
87	'CHRget_delayed_goals'(A, G),
88	'CHRchr_functor_3__26'(G, [A], [H, I], J),
89	coca(try_double(F, chr_functor(A, B, C), J, chr_functor(A, I, H), chr_functor(K, L, M), chr_functor(K, N, O), keep_second, true, (L = N, M = O), anonymous("4"))),
90	!,
91	'CHRkill'(D),
92	coca(fired_rule(anonymous("4"))),
93	[B, C] = [I, H].
94'CHRchr_functor_3'(chr_functor(A, B, C), D, E, F) ?-
95	'CHRget_delayed_goals'(A, G),
96	'CHRchr_functor_3__27'(G, [A], [H, I], J),
97	coca(try_double(F, chr_functor(A, B, C), J, chr_unif(A, I, H), chr_functor(K, L, M), chr_unif(K, N, O), keep_second, nonvar(M) ; islist(O), (L = N, length(O, M)), anonymous("15"))),
98	no_delayed_goals(nonvar(C) ; islist(H)),
99	!,
100	'CHRkill'(D),
101	coca(fired_rule(anonymous("15"))),
102	B = I,
103	length(H, C).
104'CHRchr_functor_3'(chr_functor(A, B, C), D, E, F) :-
105	'CHRchr_functor_3__25'(chr_functor(A, B, C), D, E, F).
106'CHRchr_functor_3__26'(['CHRchr_functor_3'(chr_functor(A, B, C), D, E, F)|G], [A], [H, I], J) ?-
107	'CHRvar'(D),
108	'CHR='([C, B], [H, I]),
109	'CHR='(F, J).
110'CHRchr_functor_3__26'([A|B], C, D, E) :-
111	'CHRchr_functor_3__26'(B, C, D, E).
112:- set_flag('CHRchr_functor_3__26' / 4, leash, notrace).
113'CHRchr_functor_3__27'(['CHRchr_unif_3'(chr_unif(A, B, C), D, E, F)|G], [A], [H, I], J) ?-
114	'CHRvar'(D),
115	'CHR='([C, B], [H, I]),
116	'CHR='(F, J).
117'CHRchr_functor_3__27'([A|B], C, D, E) :-
118	'CHRchr_functor_3__27'(B, C, D, E).
119:- set_flag('CHRchr_functor_3__27' / 4, leash, notrace).
120:- set_flag('CHRchr_functor_3' / 4, leash, notrace).
121:- current_macro('CHRchr_functor_3' / 4, _6708, _6709, _6710) -> true ; define_macro('CHRchr_functor_3' / 4, tr_chr / 2, [write]).
122'CHRchr_functor_3__25'(chr_functor(A, A, B), C, D, E) ?-
123	'CHRvar'(C),
124	'CHRcheck_and_mark_applied'('CHRchr_functor_3__25', D),
125	coca(try_rule(E, chr_functor(A, A, B), anonymous("1"), chr_functor(F, F, G), augmentation, true, G = 0)),
126	!,
127	'CHRchr_functor_3__25__29'(chr_functor(A, A, B), C, D, E),
128	coca(fired_rule(anonymous("1"))),
129	B = 0.
130'CHRchr_functor_3__25'(A, B, C, D) ?-
131	'CHRchr_functor_3__25__29'(A, B, C, D).
132:- set_flag('CHRchr_functor_3__25' / 4, leash, notrace).
133'CHRchr_functor_3__25__29'(chr_functor(A, B, 0), C, D, E) ?-
134	'CHRvar'(C),
135	'CHRcheck_and_mark_applied'('CHRchr_functor_3__25__29', D),
136	coca(try_rule(E, chr_functor(A, B, 0), anonymous("2"), chr_functor(F, G, 0), augmentation, true, F = G)),
137	!,
138	'CHRchr_functor_3__25__29__30'(chr_functor(A, B, 0), C, D, E),
139	coca(fired_rule(anonymous("2"))),
140	A = B.
141'CHRchr_functor_3__25__29'(A, B, C, D) ?-
142	'CHRchr_functor_3__25__29__30'(A, B, C, D).
143:- set_flag('CHRchr_functor_3__25__29' / 4, leash, notrace).
144'CHRchr_functor_3__25__29__30'(chr_functor(A, B, C), D, E, F) ?-
145	'CHRvar'(D),
146	'CHRcheck_and_mark_applied'('CHRchr_functor_3__25__29__30', E),
147	coca(try_rule(F, chr_functor(A, B, C), anonymous("3"), chr_functor(G, H, I), augmentation, true, chr_nonvar(G))),
148	!,
149	'CHRchr_functor_3__25__29__30__31'(chr_functor(A, B, C), D, E, F),
150	coca(fired_rule(anonymous("3"))),
151	chr_nonvar(A).
152'CHRchr_functor_3__25__29__30'(A, B, C, D) ?-
153	'CHRchr_functor_3__25__29__30__31'(A, B, C, D).
154:- set_flag('CHRchr_functor_3__25__29__30' / 4, leash, notrace).
155'CHRchr_functor_3__25__29__30__31'(A, B, C, D) :-
156	'CHRchr_functor_3__28'(A, B, C, D).
157:- set_flag('CHRchr_functor_3__25__29__30__31' / 4, leash, notrace).
158'CHRchr_functor_3__28'(chr_functor(A, B, C), D, E, F) ?-
159	'CHRvar'(D),
160	!,
161	'CHRget_delayed_goals'(A, G),
162	'CHRchr_functor_3__28__32'(G, D, chr_functor(A, B, C), E, F).
163'CHRchr_functor_3__28'(chr_functor(A, B, C), D, E, F) :-
164	'CHRchr_functor_3__28__33'(chr_functor(A, B, C), D, E, F).
165:- set_flag('CHRchr_functor_3__28' / 4, leash, notrace).
166'CHRchr_functor_3__28__32'(['CHRchr_functor_3'(chr_functor(A, B, C), D, E, F)|G], H, chr_functor(A, I, J), K, L) ?-
167	'CHRvar'(D),
168	coca(try_double(L, chr_functor(A, I, J), F, chr_functor(A, B, C), chr_functor(M, N, O), chr_functor(M, P, Q), keep_first, true, (P = N, Q = O), anonymous("4"))),
169	!,
170	'CHRkill'(D),
171	coca(fired_rule(anonymous("4"))),
172	'CHRchr_functor_3__28__32'(G, H, chr_functor(A, I, J), K, L),
173	[B, C] = [I, J].
174'CHRchr_functor_3__28__32'([A|B], C, D, E, F) :-
175	'CHRchr_functor_3__28__32'(B, C, D, E, F).
176'CHRchr_functor_3__28__32'([], A, B, C, D) :-
177	'CHRchr_functor_3__28__33'(B, A, C, D).
178:- set_flag('CHRchr_functor_3__28__32' / 5, leash, notrace).
179'CHRchr_functor_3__28__33'(chr_functor(A, B, C), D, E, F) ?-
180	'CHRvar'(D),
181	!,
182	'CHRget_delayed_goals'(A, G),
183	'CHRchr_functor_3__28__33__34'(G, D, chr_functor(A, B, C), E, F).
184'CHRchr_functor_3__28__33'(chr_functor(A, B, C), D, E, F) :-
185	'CHRchr_functor_3__28__33__35'(chr_functor(A, B, C), D, E, F).
186:- set_flag('CHRchr_functor_3__28__33' / 4, leash, notrace).
187'CHRchr_functor_3__28__33__34'(['CHRchr_arg_3'(chr_arg(A, B, C), D, E, F)|G], H, chr_functor(B, I, J), K, L) ?-
188	'CHRvar'(D),
189	'CHRcheck_and_mark_applied'(anonymous("5"), H, D, K, E),
190	coca(try_double(L, chr_functor(B, I, J), F, chr_arg(A, B, C), chr_functor(M, N, O), chr_arg(P, M, Q), augmentation, true, (O >= P, O > 0), anonymous("5"))),
191	!,
192	coca(fired_rule(anonymous("5"))),
193	'CHRchr_functor_3__28__33__34'(G, H, chr_functor(B, I, J), K, L),
194	J >= A,
195	J > 0.
196'CHRchr_functor_3__28__33__34'([A|B], C, D, E, F) :-
197	'CHRchr_functor_3__28__33__34'(B, C, D, E, F).
198'CHRchr_functor_3__28__33__34'([], A, B, C, D) :-
199	'CHRchr_functor_3__28__33__35'(B, A, C, D).
200:- set_flag('CHRchr_functor_3__28__33__34' / 5, leash, notrace).
201'CHRchr_functor_3__28__33__35'(chr_functor(A, B, C), D, E, F) :-
202	(
203	    'CHRvar'(D)
204	->
205	    'CHRdelay'([D, chr_functor(A, B, C)], 'CHRchr_functor_3'(chr_functor(A, B, C), D, E, F))
206	;
207	    true
208	).
209:- set_flag('CHRchr_functor_3__28__33__35' / 4, leash, notrace).
210chr_arg(A, B, C) :-
211	'CHRgen_num'(D),
212	coca(add_one_constraint(D, chr_arg(A, B, C))),
213	'CHRchr_arg_3'(chr_arg(A, B, C), E, F, D).
214
215
216
217%%% Rules handling for chr_arg / 3
218
219'CHRchr_arg_3'(chr_arg(A, B, C), D, E, F) :-
220	'CHRnonvar'(D),
221	!.
222'CHRchr_arg_3'(chr_arg(0, A, B), C, D, E) ?-
223	coca(try_rule(E, chr_arg(0, A, B), anonymous("6"), chr_arg(0, F, G), replacement, true, fail)),
224	!,
225	'CHRkill'(C),
226	coca(fired_rule(anonymous("6"))),
227	fail.
228'CHRchr_arg_3'(chr_arg(A, B, C), D, E, F) ?-
229	coca(try_rule(F, chr_arg(A, B, C), anonymous("7"), chr_arg(G, H, I), replacement, (nonvar(G), nonvar(H)), arg(G, H, I))),
230	no_delayed_goals((nonvar(A), nonvar(B))),
231	!,
232	'CHRkill'(D),
233	coca(fired_rule(anonymous("7"))),
234	arg(A, B, C).
235'CHRchr_arg_3'(chr_arg(A, B, C), D, E, F) ?-
236	'CHRget_delayed_goals'(B, G),
237	'CHRchr_arg_3__37'(G, [B, A], [H], I),
238	coca(try_double(F, chr_arg(A, B, C), I, chr_arg(A, B, H), chr_arg(J, K, L), chr_arg(J, K, M), keep_second, true, L = M, anonymous("8"))),
239	!,
240	'CHRkill'(D),
241	coca(fired_rule(anonymous("8"))),
242	C = H.
243'CHRchr_arg_3'(chr_arg(A, B, C), D, E, F) ?-
244	'CHRget_delayed_goals'(B, G),
245	'CHRchr_arg_3__38'(G, [B], [H], I),
246	coca(try_double(F, chr_arg(A, B, C), I, chr_unif(B, J, H), chr_arg(K, L, M), chr_unif(L, N, O), keep_second, nonvar(K), nth_member(K, O, M), anonymous("16"))),
247	no_delayed_goals(nonvar(A)),
248	!,
249	'CHRkill'(D),
250	coca(fired_rule(anonymous("16"))),
251	nth_member(A, H, C).
252'CHRchr_arg_3'(chr_arg(A, B, C), D, E, F) :-
253	'CHRchr_arg_3__36'(chr_arg(A, B, C), D, E, F).
254'CHRchr_arg_3__37'(['CHRchr_arg_3'(chr_arg(A, B, C), D, E, F)|G], [B, A], [H], I) ?-
255	'CHRvar'(D),
256	'CHR='([C], [H]),
257	'CHR='(F, I).
258'CHRchr_arg_3__37'([A|B], C, D, E) :-
259	'CHRchr_arg_3__37'(B, C, D, E).
260:- set_flag('CHRchr_arg_3__37' / 4, leash, notrace).
261'CHRchr_arg_3__38'(['CHRchr_unif_3'(chr_unif(A, B, C), D, E, F)|G], [A], [H], I) ?-
262	'CHRvar'(D),
263	'CHR='([C], [H]),
264	'CHR='(F, I).
265'CHRchr_arg_3__38'([A|B], C, D, E) :-
266	'CHRchr_arg_3__38'(B, C, D, E).
267:- set_flag('CHRchr_arg_3__38' / 4, leash, notrace).
268:- set_flag('CHRchr_arg_3' / 4, leash, notrace).
269:- current_macro('CHRchr_arg_3' / 4, _10634, _10635, _10636) -> true ; define_macro('CHRchr_arg_3' / 4, tr_chr / 2, [write]).
270'CHRchr_arg_3__36'(A, B, C, D) :-
271	'CHRchr_arg_3__39'(A, B, C, D).
272:- set_flag('CHRchr_arg_3__36' / 4, leash, notrace).
273'CHRchr_arg_3__39'(chr_arg(A, B, C), D, E, F) ?-
274	'CHRvar'(D),
275	!,
276	'CHRget_delayed_goals'(B, G),
277	'CHRchr_arg_3__39__40'(G, D, chr_arg(A, B, C), E, F).
278'CHRchr_arg_3__39'(chr_arg(A, B, C), D, E, F) :-
279	'CHRchr_arg_3__39__41'(chr_arg(A, B, C), D, E, F).
280:- set_flag('CHRchr_arg_3__39' / 4, leash, notrace).
281'CHRchr_arg_3__39__40'(['CHRchr_arg_3'(chr_arg(A, B, C), D, E, F)|G], H, chr_arg(A, B, I), J, K) ?-
282	'CHRvar'(D),
283	coca(try_double(K, chr_arg(A, B, I), F, chr_arg(A, B, C), chr_arg(L, M, N), chr_arg(L, M, O), keep_first, true, O = N, anonymous("8"))),
284	!,
285	'CHRkill'(D),
286	coca(fired_rule(anonymous("8"))),
287	'CHRchr_arg_3__39__40'(G, H, chr_arg(A, B, I), J, K),
288	C = I.
289'CHRchr_arg_3__39__40'([A|B], C, D, E, F) :-
290	'CHRchr_arg_3__39__40'(B, C, D, E, F).
291'CHRchr_arg_3__39__40'([], A, B, C, D) :-
292	'CHRchr_arg_3__39__41'(B, A, C, D).
293:- set_flag('CHRchr_arg_3__39__40' / 5, leash, notrace).
294'CHRchr_arg_3__39__41'(chr_arg(A, B, C), D, E, F) ?-
295	'CHRvar'(D),
296	!,
297	'CHRget_delayed_goals'(B, G),
298	'CHRchr_arg_3__39__41__42'(G, D, chr_arg(A, B, C), E, F).
299'CHRchr_arg_3__39__41'(chr_arg(A, B, C), D, E, F) :-
300	'CHRchr_arg_3__39__41__43'(chr_arg(A, B, C), D, E, F).
301:- set_flag('CHRchr_arg_3__39__41' / 4, leash, notrace).
302'CHRchr_arg_3__39__41__42'(['CHRchr_functor_3'(chr_functor(A, B, C), D, E, F)|G], H, chr_arg(I, A, J), K, L) ?-
303	'CHRvar'(D),
304	'CHRcheck_and_mark_applied'(anonymous("5"), H, D, K, E),
305	coca(try_double(L, chr_arg(I, A, J), F, chr_functor(A, B, C), chr_arg(M, N, O), chr_functor(N, P, Q), augmentation, true, (Q >= M, Q > 0), anonymous("5"))),
306	!,
307	coca(fired_rule(anonymous("5"))),
308	'CHRchr_arg_3__39__41__42'(G, H, chr_arg(I, A, J), K, L),
309	C >= I,
310	C > 0.
311'CHRchr_arg_3__39__41__42'([A|B], C, D, E, F) :-
312	'CHRchr_arg_3__39__41__42'(B, C, D, E, F).
313'CHRchr_arg_3__39__41__42'([], A, B, C, D) :-
314	'CHRchr_arg_3__39__41__43'(B, A, C, D).
315:- set_flag('CHRchr_arg_3__39__41__42' / 5, leash, notrace).
316'CHRchr_arg_3__39__41__43'(chr_arg(A, B, C), D, E, F) :-
317	(
318	    'CHRvar'(D)
319	->
320	    'CHRdelay'([D, chr_arg(A, B, C)], 'CHRchr_arg_3'(chr_arg(A, B, C), D, E, F))
321	;
322	    true
323	).
324:- set_flag('CHRchr_arg_3__39__41__43' / 4, leash, notrace).
325chr_unif(A, B, C) :-
326	'CHRgen_num'(D),
327	coca(add_one_constraint(D, chr_unif(A, B, C))),
328	'CHRchr_unif_3'(chr_unif(A, B, C), E, F, D).
329
330
331
332%%% Rules handling for chr_unif / 3
333
334'CHRchr_unif_3'(chr_unif(A, B, C), D, E, F) :-
335	'CHRnonvar'(D),
336	!.
337'CHRchr_unif_3'(chr_unif(A, B, C), D, E, F) ?-
338	coca(try_rule(F, chr_unif(A, B, C), anonymous("9"), chr_unif(G, H, I), replacement, nonvar(G) ; (nonvar(H), islist(I)), G =.. [H|I])),
339	no_delayed_goals(nonvar(A) ; (nonvar(B), islist(C))),
340	!,
341	'CHRkill'(D),
342	coca(fired_rule(anonymous("9"))),
343	A =.. [B|C].
344'CHRchr_unif_3'(chr_unif(A, B, C), D, E, F) ?-
345	'CHRget_delayed_goals'(A, G),
346	'CHRchr_unif_3__45'(G, [A], [H, I], J),
347	coca(try_double(F, chr_unif(A, B, C), J, chr_unif(A, I, H), chr_unif(K, L, M), chr_unif(K, N, O), keep_second, true, (L = N, M = O), anonymous("13"))),
348	!,
349	'CHRkill'(D),
350	coca(fired_rule(anonymous("13"))),
351	[B, C] = [I, H].
352'CHRchr_unif_3'(chr_unif(A, B, C), D, E, F) ?-
353	'CHRget_delayed_goals'(C, G),
354	'CHRchr_unif_3__46'(G, [C, B], [H], I),
355	coca(try_double(F, chr_unif(A, B, C), I, chr_unif(H, B, C), chr_unif(J, K, L), chr_unif(M, K, L), keep_second, true, J = M, anonymous("14"))),
356	!,
357	'CHRkill'(D),
358	coca(fired_rule(anonymous("14"))),
359	A = H.
360'CHRchr_unif_3'(chr_unif(A, B, C), D, E, F) :-
361	'CHRchr_unif_3__44'(chr_unif(A, B, C), D, E, F).
362'CHRchr_unif_3__45'(['CHRchr_unif_3'(chr_unif(A, B, C), D, E, F)|G], [A], [H, I], J) ?-
363	'CHRvar'(D),
364	'CHR='([C, B], [H, I]),
365	'CHR='(F, J).
366'CHRchr_unif_3__45'([A|B], C, D, E) :-
367	'CHRchr_unif_3__45'(B, C, D, E).
368:- set_flag('CHRchr_unif_3__45' / 4, leash, notrace).
369'CHRchr_unif_3__46'(['CHRchr_unif_3'(chr_unif(A, B, C), D, E, F)|G], [C, B], [H], I) ?-
370	'CHRvar'(D),
371	'CHR='([A], [H]),
372	'CHR='(F, I).
373'CHRchr_unif_3__46'([A|B], C, D, E) :-
374	'CHRchr_unif_3__46'(B, C, D, E).
375:- set_flag('CHRchr_unif_3__46' / 4, leash, notrace).
376:- set_flag('CHRchr_unif_3' / 4, leash, notrace).
377:- current_macro('CHRchr_unif_3' / 4, _13621, _13622, _13623) -> true ; define_macro('CHRchr_unif_3' / 4, tr_chr / 2, [write]).
378'CHRchr_unif_3__44'(chr_unif(A, A, B), C, D, E) ?-
379	'CHRvar'(C),
380	'CHRcheck_and_mark_applied'('CHRchr_unif_3__44', D),
381	coca(try_rule(E, chr_unif(A, A, B), anonymous("10"), chr_unif(F, F, G), augmentation, true, G = [])),
382	!,
383	'CHRchr_unif_3__44__48'(chr_unif(A, A, B), C, D, E),
384	coca(fired_rule(anonymous("10"))),
385	B = [].
386'CHRchr_unif_3__44'(A, B, C, D) ?-
387	'CHRchr_unif_3__44__48'(A, B, C, D).
388:- set_flag('CHRchr_unif_3__44' / 4, leash, notrace).
389'CHRchr_unif_3__44__48'(chr_unif(A, B, []), C, D, E) ?-
390	'CHRvar'(C),
391	'CHRcheck_and_mark_applied'('CHRchr_unif_3__44__48', D),
392	coca(try_rule(E, chr_unif(A, B, []), anonymous("11"), chr_unif(F, G, []), augmentation, true, F = G)),
393	!,
394	'CHRchr_unif_3__44__48__49'(chr_unif(A, B, []), C, D, E),
395	coca(fired_rule(anonymous("11"))),
396	A = B.
397'CHRchr_unif_3__44__48'(A, B, C, D) ?-
398	'CHRchr_unif_3__44__48__49'(A, B, C, D).
399:- set_flag('CHRchr_unif_3__44__48' / 4, leash, notrace).
400'CHRchr_unif_3__44__48__49'(chr_unif(A, B, C), D, E, F) ?-
401	'CHRvar'(D),
402	'CHRcheck_and_mark_applied'('CHRchr_unif_3__44__48__49', E),
403	coca(try_rule(F, chr_unif(A, B, C), anonymous("12"), chr_unif(G, H, I), augmentation, true, (chr_nonvar(G), chr_nonvar(I)))),
404	!,
405	'CHRchr_unif_3__44__48__49__50'(chr_unif(A, B, C), D, E, F),
406	coca(fired_rule(anonymous("12"))),
407	chr_nonvar(A),
408	chr_nonvar(C).
409'CHRchr_unif_3__44__48__49'(A, B, C, D) ?-
410	'CHRchr_unif_3__44__48__49__50'(A, B, C, D).
411:- set_flag('CHRchr_unif_3__44__48__49' / 4, leash, notrace).
412'CHRchr_unif_3__44__48__49__50'(A, B, C, D) :-
413	'CHRchr_unif_3__47'(A, B, C, D).
414:- set_flag('CHRchr_unif_3__44__48__49__50' / 4, leash, notrace).
415'CHRchr_unif_3__47'(chr_unif(A, B, C), D, E, F) ?-
416	'CHRvar'(D),
417	!,
418	'CHRget_delayed_goals'(A, G),
419	'CHRchr_unif_3__47__51'(G, D, chr_unif(A, B, C), E, F).
420'CHRchr_unif_3__47'(chr_unif(A, B, C), D, E, F) :-
421	'CHRchr_unif_3__47__52'(chr_unif(A, B, C), D, E, F).
422:- set_flag('CHRchr_unif_3__47' / 4, leash, notrace).
423'CHRchr_unif_3__47__51'(['CHRchr_unif_3'(chr_unif(A, B, C), D, E, F)|G], H, chr_unif(A, I, J), K, L) ?-
424	'CHRvar'(D),
425	coca(try_double(L, chr_unif(A, I, J), F, chr_unif(A, B, C), chr_unif(M, N, O), chr_unif(M, P, Q), keep_first, true, (P = N, Q = O), anonymous("13"))),
426	!,
427	'CHRkill'(D),
428	coca(fired_rule(anonymous("13"))),
429	'CHRchr_unif_3__47__51'(G, H, chr_unif(A, I, J), K, L),
430	[B, C] = [I, J].
431'CHRchr_unif_3__47__51'([A|B], C, D, E, F) :-
432	'CHRchr_unif_3__47__51'(B, C, D, E, F).
433'CHRchr_unif_3__47__51'([], A, B, C, D) :-
434	'CHRchr_unif_3__47__52'(B, A, C, D).
435:- set_flag('CHRchr_unif_3__47__51' / 5, leash, notrace).
436'CHRchr_unif_3__47__52'(chr_unif(A, B, C), D, E, F) ?-
437	'CHRvar'(D),
438	!,
439	'CHRget_delayed_goals'(C, G),
440	'CHRchr_unif_3__47__52__53'(G, D, chr_unif(A, B, C), E, F).
441'CHRchr_unif_3__47__52'(chr_unif(A, B, C), D, E, F) :-
442	'CHRchr_unif_3__47__52__54'(chr_unif(A, B, C), D, E, F).
443:- set_flag('CHRchr_unif_3__47__52' / 4, leash, notrace).
444'CHRchr_unif_3__47__52__53'(['CHRchr_unif_3'(chr_unif(A, B, C), D, E, F)|G], H, chr_unif(I, B, C), J, K) ?-
445	'CHRvar'(D),
446	coca(try_double(K, chr_unif(I, B, C), F, chr_unif(A, B, C), chr_unif(L, M, N), chr_unif(O, M, N), keep_first, true, O = L, anonymous("14"))),
447	!,
448	'CHRkill'(D),
449	coca(fired_rule(anonymous("14"))),
450	'CHRchr_unif_3__47__52__53'(G, H, chr_unif(I, B, C), J, K),
451	A = I.
452'CHRchr_unif_3__47__52__53'([A|B], C, D, E, F) :-
453	'CHRchr_unif_3__47__52__53'(B, C, D, E, F).
454'CHRchr_unif_3__47__52__53'([], A, B, C, D) :-
455	'CHRchr_unif_3__47__52__54'(B, A, C, D).
456:- set_flag('CHRchr_unif_3__47__52__53' / 5, leash, notrace).
457'CHRchr_unif_3__47__52__54'(chr_unif(A, B, C), D, E, F) ?-
458	'CHRvar'(D),
459	!,
460	'CHRget_delayed_goals'(A, G),
461	'CHRchr_unif_3__47__52__54__55'(G, D, chr_unif(A, B, C), E, F).
462'CHRchr_unif_3__47__52__54'(chr_unif(A, B, C), D, E, F) :-
463	'CHRchr_unif_3__47__52__54__56'(chr_unif(A, B, C), D, E, F).
464:- set_flag('CHRchr_unif_3__47__52__54' / 4, leash, notrace).
465'CHRchr_unif_3__47__52__54__55'(['CHRchr_functor_3'(chr_functor(A, B, C), D, E, F)|G], H, chr_unif(A, I, J), K, L) ?-
466	'CHRvar'(D),
467	coca(try_double(L, chr_unif(A, I, J), F, chr_functor(A, B, C), chr_unif(M, N, O), chr_functor(M, P, Q), keep_first, nonvar(Q) ; islist(O), (P = N, length(O, Q)), anonymous("15"))),
468	no_delayed_goals(nonvar(C) ; islist(J)),
469	!,
470	'CHRkill'(D),
471	coca(fired_rule(anonymous("15"))),
472	'CHRchr_unif_3__47__52__54__55'(G, H, chr_unif(A, I, J), K, L),
473	B = I,
474	length(J, C).
475'CHRchr_unif_3__47__52__54__55'([A|B], C, D, E, F) :-
476	'CHRchr_unif_3__47__52__54__55'(B, C, D, E, F).
477'CHRchr_unif_3__47__52__54__55'([], A, B, C, D) :-
478	'CHRchr_unif_3__47__52__54__56'(B, A, C, D).
479:- set_flag('CHRchr_unif_3__47__52__54__55' / 5, leash, notrace).
480'CHRchr_unif_3__47__52__54__56'(chr_unif(A, B, C), D, E, F) ?-
481	'CHRvar'(D),
482	!,
483	'CHRget_delayed_goals'(A, G),
484	'CHRchr_unif_3__47__52__54__56__57'(G, D, chr_unif(A, B, C), E, F).
485'CHRchr_unif_3__47__52__54__56'(chr_unif(A, B, C), D, E, F) :-
486	'CHRchr_unif_3__47__52__54__56__58'(chr_unif(A, B, C), D, E, F).
487:- set_flag('CHRchr_unif_3__47__52__54__56' / 4, leash, notrace).
488'CHRchr_unif_3__47__52__54__56__57'(['CHRchr_arg_3'(chr_arg(A, B, C), D, E, F)|G], H, chr_unif(B, I, J), K, L) ?-
489	'CHRvar'(D),
490	coca(try_double(L, chr_unif(B, I, J), F, chr_arg(A, B, C), chr_unif(M, N, O), chr_arg(P, M, Q), keep_first, nonvar(P), nth_member(P, O, Q), anonymous("16"))),
491	no_delayed_goals(nonvar(A)),
492	!,
493	'CHRkill'(D),
494	coca(fired_rule(anonymous("16"))),
495	'CHRchr_unif_3__47__52__54__56__57'(G, H, chr_unif(B, I, J), K, L),
496	nth_member(A, J, C).
497'CHRchr_unif_3__47__52__54__56__57'([A|B], C, D, E, F) :-
498	'CHRchr_unif_3__47__52__54__56__57'(B, C, D, E, F).
499'CHRchr_unif_3__47__52__54__56__57'([], A, B, C, D) :-
500	'CHRchr_unif_3__47__52__54__56__58'(B, A, C, D).
501:- set_flag('CHRchr_unif_3__47__52__54__56__57' / 5, leash, notrace).
502'CHRchr_unif_3__47__52__54__56__58'(chr_unif(A, B, C), D, E, F) :-
503	(
504	    'CHRvar'(D)
505	->
506	    'CHRdelay'([D, chr_unif(A, B, C)], 'CHRchr_unif_3'(chr_unif(A, B, C), D, E, F))
507	;
508	    true
509	).
510:- set_flag('CHRchr_unif_3__47__52__54__56__58' / 4, leash, notrace).
511chr_var(A) :-
512	'CHRgen_num'(B),
513	coca(add_one_constraint(B, chr_var(A))),
514	'CHRchr_var_1'(chr_var(A), C, D, B).
515
516
517
518%%% Rules handling for chr_var / 1
519
520'CHRchr_var_1'(chr_var(A), B, C, D) :-
521	'CHRnonvar'(B),
522	!.
523'CHRchr_var_1'(chr_var(A), B, C, D) ?-
524	coca(try_rule(D, chr_var(A), anonymous("17"), chr_var(E), replacement, nonvar(E), fail)),
525	no_delayed_goals(nonvar(A)),
526	!,
527	'CHRkill'(B),
528	coca(fired_rule(anonymous("17"))),
529	fail.
530'CHRchr_var_1'(chr_var(A), B, C, D) ?-
531	'CHRget_delayed_goals'(A, E),
532	'CHRchr_var_1__60'(E, [A], [], F),
533	coca(try_double(D, chr_var(A), F, chr_nonvar(A), chr_var(G), chr_nonvar(G), replacement, true, fail, anonymous("19"))),
534	!,
535	'CHRkill'(B),
536	coca(fired_rule(anonymous("19"))),
537	fail.
538'CHRchr_var_1'(chr_var(A), B, C, D) ?-
539	'CHRget_delayed_goals'(A, E),
540	'CHRchr_var_1__61'(E, [A], [], F),
541	coca(try_double(D, chr_var(A), F, chr_var(A), chr_var(G), chr_var(G), keep_second, true, true, anonymous("20"))),
542	!,
543	'CHRkill'(B),
544	coca(fired_rule(anonymous("20"))).
545'CHRchr_var_1'(chr_var(A), B, C, D) :-
546	'CHRchr_var_1__59'(chr_var(A), B, C, D).
547'CHRchr_var_1__60'(['CHRchr_nonvar_1'(chr_nonvar(A), B, C, D)|E], [A], [], F) ?-
548	'CHRvar'(B),
549	'CHRkill'(B),
550	'CHR='([], []),
551	'CHR='(D, F).
552'CHRchr_var_1__60'([A|B], C, D, E) :-
553	'CHRchr_var_1__60'(B, C, D, E).
554:- set_flag('CHRchr_var_1__60' / 4, leash, notrace).
555'CHRchr_var_1__61'(['CHRchr_var_1'(chr_var(A), B, C, D)|E], [A], [], F) ?-
556	'CHRvar'(B),
557	'CHR='([], []),
558	'CHR='(D, F).
559'CHRchr_var_1__61'([A|B], C, D, E) :-
560	'CHRchr_var_1__61'(B, C, D, E).
561:- set_flag('CHRchr_var_1__61' / 4, leash, notrace).
562:- set_flag('CHRchr_var_1' / 4, leash, notrace).
563:- current_macro('CHRchr_var_1' / 4, _18484, _18485, _18486) -> true ; define_macro('CHRchr_var_1' / 4, tr_chr / 2, [write]).
564'CHRchr_var_1__59'(A, B, C, D) :-
565	'CHRchr_var_1__62'(A, B, C, D).
566:- set_flag('CHRchr_var_1__59' / 4, leash, notrace).
567'CHRchr_var_1__62'(chr_var(A), B, C, D) ?-
568	'CHRvar'(B),
569	!,
570	'CHRget_delayed_goals'(A, E),
571	'CHRchr_var_1__62__63'(E, B, chr_var(A), C, D).
572'CHRchr_var_1__62'(chr_var(A), B, C, D) :-
573	'CHRchr_var_1__62__64'(chr_var(A), B, C, D).
574:- set_flag('CHRchr_var_1__62' / 4, leash, notrace).
575'CHRchr_var_1__62__63'(['CHRchr_var_1'(chr_var(A), B, C, D)|E], F, chr_var(A), G, H) ?-
576	'CHRvar'(B),
577	coca(try_double(H, chr_var(A), D, chr_var(A), chr_var(I), chr_var(I), keep_first, true, true, anonymous("20"))),
578	!,
579	'CHRkill'(B),
580	coca(fired_rule(anonymous("20"))),
581	'CHRchr_var_1__62__63'(E, F, chr_var(A), G, H).
582'CHRchr_var_1__62__63'([A|B], C, D, E, F) :-
583	'CHRchr_var_1__62__63'(B, C, D, E, F).
584'CHRchr_var_1__62__63'([], A, B, C, D) :-
585	'CHRchr_var_1__62__64'(B, A, C, D).
586:- set_flag('CHRchr_var_1__62__63' / 5, leash, notrace).
587'CHRchr_var_1__62__64'(chr_var(A), B, C, D) :-
588	(
589	    'CHRvar'(B)
590	->
591	    'CHRdelay'([B, chr_var(A)], 'CHRchr_var_1'(chr_var(A), B, C, D))
592	;
593	    true
594	).
595:- set_flag('CHRchr_var_1__62__64' / 4, leash, notrace).
596chr_nonvar(A) :-
597	'CHRgen_num'(B),
598	coca(add_one_constraint(B, chr_nonvar(A))),
599	'CHRchr_nonvar_1'(chr_nonvar(A), C, D, B).
600
601
602
603%%% Rules handling for chr_nonvar / 1
604
605'CHRchr_nonvar_1'(chr_nonvar(A), B, C, D) :-
606	'CHRnonvar'(B),
607	!.
608'CHRchr_nonvar_1'(chr_nonvar(A), B, C, D) ?-
609	coca(try_rule(D, chr_nonvar(A), anonymous("18"), chr_nonvar(E), replacement, nonvar(E), true)),
610	no_delayed_goals(nonvar(A)),
611	!,
612	'CHRkill'(B),
613	coca(fired_rule(anonymous("18"))).
614'CHRchr_nonvar_1'(chr_nonvar(A), B, C, D) ?-
615	'CHRget_delayed_goals'(A, E),
616	'CHRchr_nonvar_1__66'(E, [A], [], F),
617	coca(try_double(D, chr_nonvar(A), F, chr_var(A), chr_nonvar(G), chr_var(G), replacement, true, fail, anonymous("19"))),
618	!,
619	'CHRkill'(B),
620	coca(fired_rule(anonymous("19"))),
621	fail.
622'CHRchr_nonvar_1'(chr_nonvar(A), B, C, D) ?-
623	'CHRget_delayed_goals'(A, E),
624	'CHRchr_nonvar_1__67'(E, [A], [], F),
625	coca(try_double(D, chr_nonvar(A), F, chr_nonvar(A), chr_nonvar(G), chr_nonvar(G), keep_second, true, true, anonymous("21"))),
626	!,
627	'CHRkill'(B),
628	coca(fired_rule(anonymous("21"))).
629'CHRchr_nonvar_1'(chr_nonvar(A), B, C, D) :-
630	'CHRchr_nonvar_1__65'(chr_nonvar(A), B, C, D).
631'CHRchr_nonvar_1__66'(['CHRchr_var_1'(chr_var(A), B, C, D)|E], [A], [], F) ?-
632	'CHRvar'(B),
633	'CHRkill'(B),
634	'CHR='([], []),
635	'CHR='(D, F).
636'CHRchr_nonvar_1__66'([A|B], C, D, E) :-
637	'CHRchr_nonvar_1__66'(B, C, D, E).
638:- set_flag('CHRchr_nonvar_1__66' / 4, leash, notrace).
639'CHRchr_nonvar_1__67'(['CHRchr_nonvar_1'(chr_nonvar(A), B, C, D)|E], [A], [], F) ?-
640	'CHRvar'(B),
641	'CHR='([], []),
642	'CHR='(D, F).
643'CHRchr_nonvar_1__67'([A|B], C, D, E) :-
644	'CHRchr_nonvar_1__67'(B, C, D, E).
645:- set_flag('CHRchr_nonvar_1__67' / 4, leash, notrace).
646:- set_flag('CHRchr_nonvar_1' / 4, leash, notrace).
647:- current_macro('CHRchr_nonvar_1' / 4, _20619, _20620, _20621) -> true ; define_macro('CHRchr_nonvar_1' / 4, tr_chr / 2, [write]).
648'CHRchr_nonvar_1__65'(A, B, C, D) :-
649	'CHRchr_nonvar_1__68'(A, B, C, D).
650:- set_flag('CHRchr_nonvar_1__65' / 4, leash, notrace).
651'CHRchr_nonvar_1__68'(chr_nonvar(A), B, C, D) ?-
652	'CHRvar'(B),
653	!,
654	'CHRget_delayed_goals'(A, E),
655	'CHRchr_nonvar_1__68__69'(E, B, chr_nonvar(A), C, D).
656'CHRchr_nonvar_1__68'(chr_nonvar(A), B, C, D) :-
657	'CHRchr_nonvar_1__68__70'(chr_nonvar(A), B, C, D).
658:- set_flag('CHRchr_nonvar_1__68' / 4, leash, notrace).
659'CHRchr_nonvar_1__68__69'(['CHRchr_nonvar_1'(chr_nonvar(A), B, C, D)|E], F, chr_nonvar(A), G, H) ?-
660	'CHRvar'(B),
661	coca(try_double(H, chr_nonvar(A), D, chr_nonvar(A), chr_nonvar(I), chr_nonvar(I), keep_first, true, true, anonymous("21"))),
662	!,
663	'CHRkill'(B),
664	coca(fired_rule(anonymous("21"))),
665	'CHRchr_nonvar_1__68__69'(E, F, chr_nonvar(A), G, H).
666'CHRchr_nonvar_1__68__69'([A|B], C, D, E, F) :-
667	'CHRchr_nonvar_1__68__69'(B, C, D, E, F).
668'CHRchr_nonvar_1__68__69'([], A, B, C, D) :-
669	'CHRchr_nonvar_1__68__70'(B, A, C, D).
670:- set_flag('CHRchr_nonvar_1__68__69' / 5, leash, notrace).
671'CHRchr_nonvar_1__68__70'(chr_nonvar(A), B, C, D) :-
672	(
673	    'CHRvar'(B)
674	->
675	    'CHRdelay'([B, chr_nonvar(A)], 'CHRchr_nonvar_1'(chr_nonvar(A), B, C, D))
676	;
677	    true
678	).
679:- set_flag('CHRchr_nonvar_1__68__70' / 4, leash, notrace).
680diff(A, B) :-
681	'CHRgen_num'(C),
682	coca(add_one_constraint(C, diff(A, B))),
683	'CHRdiff_2'(diff(A, B), D, E, C).
684
685
686
687%%% Rules handling for diff / 2
688
689'CHRdiff_2'(diff(A, B), C, D, E) :-
690	'CHRnonvar'(C),
691	!.
692'CHRdiff_2'(diff(A, A), B, C, D) ?-
693	coca(try_rule(D, diff(A, A), anonymous("22"), diff(E, E), replacement, true, fail)),
694	!,
695	'CHRkill'(B),
696	coca(fired_rule(anonymous("22"))),
697	fail.
698'CHRdiff_2'(diff(A, B), C, D, E) :-
699	'CHRdiff_2__71'(diff(A, B), C, D, E).
700:- set_flag('CHRdiff_2' / 4, leash, notrace).
701:- current_macro('CHRdiff_2' / 4, _21923, _21924, _21925) -> true ; define_macro('CHRdiff_2' / 4, tr_chr / 2, [write]).
702'CHRdiff_2__71'(A, B, C, D) :-
703	'CHRdiff_2__72'(A, B, C, D).
704:- set_flag('CHRdiff_2__71' / 4, leash, notrace).
705'CHRdiff_2__72'(diff(A, B), C, D, E) :-
706	(
707	    'CHRvar'(C)
708	->
709	    'CHRdelay'([C, diff(A, B)], 'CHRdiff_2'(diff(A, B), C, D, E))
710	;
711	    true
712	).
713:- set_flag('CHRdiff_2__72' / 4, leash, notrace).
714diff_list(A, B) :-
715	'CHRgen_num'(C),
716	coca(add_one_constraint(C, diff_list(A, B))),
717	'CHRdiff_list_2'(diff_list(A, B), D, E, C).
718
719
720
721%%% Rules handling for diff_list / 2
722
723'CHRdiff_list_2'(diff_list(A, B), C, D, E) :-
724	'CHRnonvar'(C),
725	!.
726'CHRdiff_list_2'(diff_list(A, []), B, C, D) ?-
727	coca(try_rule(D, diff_list(A, []), anonymous("23"), diff_list(E, []), replacement, true, true)),
728	!,
729	'CHRkill'(B),
730	coca(fired_rule(anonymous("23"))).
731'CHRdiff_list_2'(diff_list(A, B), C, D, E) ?-
732	coca(try_rule(E, diff_list(A, B), anonymous("24"), diff_list(F, G), replacement, (member(H, G), F == H), fail)),
733	no_delayed_goals((member(I, B), A == I)),
734	!,
735	'CHRkill'(C),
736	coca(fired_rule(anonymous("24"))),
737	fail.
738'CHRdiff_list_2'(diff_list(A, B), C, D, E) :-
739	'CHRdiff_list_2__73'(diff_list(A, B), C, D, E).
740:- set_flag('CHRdiff_list_2' / 4, leash, notrace).
741:- current_macro('CHRdiff_list_2' / 4, _22818, _22819, _22820) -> true ; define_macro('CHRdiff_list_2' / 4, tr_chr / 2, [write]).
742'CHRdiff_list_2__73'(A, B, C, D) :-
743	'CHRdiff_list_2__74'(A, B, C, D).
744:- set_flag('CHRdiff_list_2__73' / 4, leash, notrace).
745'CHRdiff_list_2__74'(diff_list(A, B), C, D, E) :-
746	(
747	    'CHRvar'(C)
748	->
749	    'CHRdelay'([C, diff_list(A, B)], 'CHRdiff_list_2'(diff_list(A, B), C, D, E))
750	;
751	    true
752	).
753:- set_flag('CHRdiff_list_2__74' / 4, leash, notrace).
754
755:- getval(variable_names_flag, Val), set_flag(variable_names, Val).
756