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