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:- ['math-ineq.pl']. 9:- op(100, xfx, equals). 10:- op(450, xfx, eqnonlin). 11equals(A, B) :- 12 'CHRgen_num'(C), 13 coca(add_one_constraint(C, equals(A, B))), 14 'CHRequals_2'(equals(A, B), D, E, C). 15 16 17 18%%% Rules handling for equals / 2 19 20'CHRequals_2'(equals(A, B), C, D, E) :- 21 'CHRnonvar'(C), 22 !. 23'CHRequals_2'(equals([], A), B, C, D) ?- 24 coca(try_rule(D, equals([], A), anonymous("0"), equals([], E), replacement, true, zero(E))), 25 !, 26 'CHRkill'(B), 27 coca(fired_rule(anonymous("0"))), 28 zero(A). 29'CHRequals_2'(equals([A * B], C), D, E, F) ?- 30 coca(try_rule(F, equals([A * B], C), anonymous("1"), equals([G * H], I), replacement, (nonground(G), nonzero(H)), is_div(I, H, G))), 31 no_delayed_goals((nonground(A), nonzero(B))), 32 !, 33 'CHRkill'(D), 34 coca(fired_rule(anonymous("1"))), 35 is_div(C, B, A). 36'CHRequals_2'(equals(A, B), C, D, E) ?- 37 coca(try_rule(E, equals(A, B), anonymous("2"), equals(F, G), replacement, simplifyable(H * I, F, J), (is_mul(H, I, K), L is K + G, equals(J, L)))), 38 no_delayed_goals(simplifyable(M * N, A, O)), 39 !, 40 'CHRkill'(C), 41 coca(fired_rule(anonymous("2"))), 42 is_mul(M, N, P), 43 Q is P + B, 44 equals(O, Q). 45'CHRequals_2'(equals(A, B), C, D, E) ?- 46 coca(try_rule(E, equals(A, B), anonymous("4"), equals(F, G), replacement, (all_slacks(F, H), sign(G, I), (I = 0 ; I = H)), (I = 0, all_zeroes(F)))), 47 no_delayed_goals((all_slacks(A, J), sign(B, K), (K = 0 ; K = J))), 48 !, 49 'CHRkill'(C), 50 coca(fired_rule(anonymous("4"))), 51 K = 0, 52 all_zeroes(A). 53'CHRequals_2'(equals([A * B|C], D), E, F, G) ?- 54 'CHRget_delayed_goals'(A, H), 55 'CHRequals_2__10'(H, [A], [I, J, K], L), 56 coca(try_double(G, equals([A * B|C], D), L, equals([A * K|J], I), equals([M * N|O], P), equals([M * Q|R], S), keep_second, true, (is_div(N, Q, T), mult_const(eq0(S, R), T, U), add_eq0(eq0(P, O), U, eq0(V, W)), sort1(W, X), equals(X, V)), anonymous("3"))), 57 !, 58 'CHRkill'(E), 59 coca(fired_rule(anonymous("3"))), 60 is_div(B, K, Y), 61 mult_const(eq0(I, J), Y, Z), 62 add_eq0(eq0(D, C), Z, eq0(A1, B1)), 63 sort1(B1, C1), 64 equals(C1, A1). 65'CHRequals_2'(equals(A, B), C, D, E) ?- 66 'CHRget_delayed_goals'(true, F), 67 'CHRequals_2__11'(F, [], [G, H], I), 68 coca(try_double(E, equals(A, B), I, equals(H, G), equals(J, K), equals(L, M), keep_second, (nonzero(M), nonzero(K), all_slacks(L), all_slacks(J)), (N = 0, O = 0, is_div(K, M, P), mult_const(eq0(N, L), P, Q), add_eq0(eq0(O, J), Q, eq0(R, S)), equals(S, R)), anonymous("5"))), 69 no_delayed_goals((nonzero(G), nonzero(B), all_slacks(H), all_slacks(A))), 70 !, 71 'CHRkill'(C), 72 coca(fired_rule(anonymous("5"))), 73 [T, U] = [0, 0], 74 is_div(B, G, V), 75 mult_const(eq0(T, H), V, W), 76 add_eq0(eq0(U, A), W, eq0(X, Y)), 77 equals(Y, X). 78'CHRequals_2'(equals(A, B), C, D, E) :- 79 'CHRequals_2__9'(equals(A, B), C, D, E). 80'CHRequals_2__10'(['CHRequals_2'(equals([A * B|C], D), E, F, G)|H], [A], [I, J, K], L) ?- 81 'CHRvar'(E), 82 'CHR='([D, C, B], [I, J, K]), 83 'CHR='(G, L). 84'CHRequals_2__10'([A|B], C, D, E) :- 85 'CHRequals_2__10'(B, C, D, E). 86:- set_flag('CHRequals_2__10' / 4, leash, notrace). 87'CHRequals_2__11'(['CHRequals_2'(equals(A, B), C, D, E)|F], [], [G, H], I) ?- 88 'CHRvar'(C), 89 'CHR='([B, A], [G, H]), 90 'CHR='(E, I). 91'CHRequals_2__11'([A|B], C, D, E) :- 92 'CHRequals_2__11'(B, C, D, E). 93:- set_flag('CHRequals_2__11' / 4, leash, notrace). 94:- set_flag('CHRequals_2' / 4, leash, notrace). 95:- current_macro('CHRequals_2' / 4, _3838, _3839, _3840) -> true ; define_macro('CHRequals_2' / 4, tr_chr / 2, [write]). 96'CHRequals_2__9'(A, B, C, D) :- 97 'CHRequals_2__12'(A, B, C, D). 98:- set_flag('CHRequals_2__9' / 4, leash, notrace). 99'CHRequals_2__12'(equals([A * B|C], D), E, F, G) ?- 100 'CHRvar'(E), 101 !, 102 'CHRget_delayed_goals'(A, H), 103 'CHRequals_2__12__13'(H, E, equals([A * B|C], D), F, G). 104'CHRequals_2__12'(equals(A, B), C, D, E) :- 105 'CHRequals_2__12__14'(equals(A, B), C, D, E). 106:- set_flag('CHRequals_2__12' / 4, leash, notrace). 107'CHRequals_2__12__13'(['CHRequals_2'(equals([A * B|C], D), E, F, G)|H], I, equals([A * J|K], L), M, N) ?- 108 'CHRvar'(E), 109 coca(try_double(N, equals([A * J|K], L), G, equals([A * B|C], D), equals([O * P|Q], R), equals([O * S|T], U), keep_first, true, (is_div(S, P, V), mult_const(eq0(R, Q), V, W), add_eq0(eq0(U, T), W, eq0(X, Y)), sort1(Y, Z), equals(Z, X)), anonymous("3"))), 110 !, 111 'CHRkill'(E), 112 coca(fired_rule(anonymous("3"))), 113 'CHRequals_2__12__13'(H, I, equals([A * J|K], L), M, N), 114 is_div(B, J, A1), 115 mult_const(eq0(L, K), A1, B1), 116 add_eq0(eq0(D, C), B1, eq0(C1, D1)), 117 sort1(D1, E1), 118 equals(E1, C1). 119'CHRequals_2__12__13'([A|B], C, D, E, F) :- 120 'CHRequals_2__12__13'(B, C, D, E, F). 121'CHRequals_2__12__13'([], A, B, C, D) :- 122 'CHRequals_2__12__14'(B, A, C, D). 123:- set_flag('CHRequals_2__12__13' / 5, leash, notrace). 124'CHRequals_2__12__14'(equals(A, B), C, D, E) ?- 125 'CHRvar'(C), 126 !, 127 'CHRget_delayed_goals'(true, F), 128 'CHRequals_2__12__14__15'(F, C, equals(A, B), D, E). 129'CHRequals_2__12__14'(equals(A, B), C, D, E) :- 130 'CHRequals_2__12__14__16'(equals(A, B), C, D, E). 131:- set_flag('CHRequals_2__12__14' / 4, leash, notrace). 132'CHRequals_2__12__14__15'(['CHRequals_2'(equals(A, B), C, D, E)|F], G, equals(H, I), J, K) ?- 133 'CHRvar'(C), 134 coca(try_double(K, equals(H, I), E, equals(A, B), equals(L, M), equals(N, O), keep_first, (nonzero(M), nonzero(O), all_slacks(L), all_slacks(N)), (P = 0, Q = 0, is_div(O, M, R), mult_const(eq0(P, L), R, S), add_eq0(eq0(Q, N), S, eq0(T, U)), equals(U, T)), anonymous("5"))), 135 no_delayed_goals((nonzero(I), nonzero(B), all_slacks(H), all_slacks(A))), 136 !, 137 'CHRkill'(C), 138 coca(fired_rule(anonymous("5"))), 139 'CHRequals_2__12__14__15'(F, G, equals(H, I), J, K), 140 [V, W] = [0, 0], 141 is_div(B, I, X), 142 mult_const(eq0(V, H), X, Y), 143 add_eq0(eq0(W, A), Y, eq0(Z, A1)), 144 equals(A1, Z). 145'CHRequals_2__12__14__15'([A|B], C, D, E, F) :- 146 'CHRequals_2__12__14__15'(B, C, D, E, F). 147'CHRequals_2__12__14__15'([], A, B, C, D) :- 148 'CHRequals_2__12__14__16'(B, A, C, D). 149:- set_flag('CHRequals_2__12__14__15' / 5, leash, notrace). 150'CHRequals_2__12__14__16'(equals(A, B), C, D, E) :- 151 ( 152 'CHRvar'(C) 153 -> 154 'CHRdelay'([C, equals(A, B)], 'CHRequals_2'(equals(A, B), C, D, E)) 155 ; 156 true 157 ). 158:- set_flag('CHRequals_2__12__14__16' / 4, leash, notrace). 159eqnonlin(A, B) :- 160 'CHRgen_num'(C), 161 coca(add_one_constraint(C, eqnonlin(A, B))), 162 'CHReqnonlin_2'(eqnonlin(A, B), D, E, C). 163 164 165 166%%% Rules handling for eqnonlin / 2 167 168'CHReqnonlin_2'(eqnonlin(A, B), C, D, E) :- 169 'CHRnonvar'(C), 170 !. 171'CHReqnonlin_2'(eqnonlin(A, B), C, D, E) ?- 172 coca(try_rule(E, eqnonlin(A, B), anonymous("6"), eqnonlin(F, G), replacement, ground(G), (H is G, F =:= H))), 173 no_delayed_goals(ground(B)), 174 !, 175 'CHRkill'(C), 176 coca(fired_rule(anonymous("6"))), 177 I is B, 178 A =:= I. 179'CHReqnonlin_2'(eqnonlin(A, B * C), D, E, F) ?- 180 coca(try_rule(F, eqnonlin(A, B * C), anonymous("7"), eqnonlin(G, H * I), replacement, ground(H), (J is H, G =:= J * I))), 181 no_delayed_goals(ground(B)), 182 !, 183 'CHRkill'(D), 184 coca(fired_rule(anonymous("7"))), 185 K is B, 186 A =:= K * C. 187'CHReqnonlin_2'(eqnonlin(A, B * C), D, E, F) ?- 188 coca(try_rule(F, eqnonlin(A, B * C), anonymous("8"), eqnonlin(G, H * I), replacement, ground(I), (J is I, G =:= J * H))), 189 no_delayed_goals(ground(C)), 190 !, 191 'CHRkill'(D), 192 coca(fired_rule(anonymous("8"))), 193 K is C, 194 A =:= K * B. 195'CHReqnonlin_2'(eqnonlin(A, B), C, D, E) :- 196 'CHReqnonlin_2__17'(eqnonlin(A, B), C, D, E). 197:- set_flag('CHReqnonlin_2' / 4, leash, notrace). 198:- current_macro('CHReqnonlin_2' / 4, _6469, _6470, _6471) -> true ; define_macro('CHReqnonlin_2' / 4, tr_chr / 2, [write]). 199'CHReqnonlin_2__17'(A, B, C, D) :- 200 'CHReqnonlin_2__18'(A, B, C, D). 201:- set_flag('CHReqnonlin_2__17' / 4, leash, notrace). 202'CHReqnonlin_2__18'(eqnonlin(A, B), C, D, E) :- 203 ( 204 'CHRvar'(C) 205 -> 206 'CHRdelay'([C, eqnonlin(A, B)], 'CHReqnonlin_2'(eqnonlin(A, B), C, D, E)) 207 ; 208 true 209 ). 210:- set_flag('CHReqnonlin_2__18' / 4, leash, notrace). 211 212:- getval(variable_names_flag, Val), set_flag(variable_names, Val). 213