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