92.73/27.81 YES 92.73/27.83 proof of /export/starexec/sandbox/benchmark/theBenchmark.itrs 92.73/27.83 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 92.73/27.83 92.73/27.83 92.73/27.83 Termination of the given ITRS could be proven: 92.73/27.83 92.73/27.83 (0) ITRS 92.73/27.83 (1) ITRStoIDPProof [EQUIVALENT, 0 ms] 92.73/27.83 (2) IDP 92.73/27.83 (3) UsableRulesProof [EQUIVALENT, 0 ms] 92.73/27.83 (4) IDP 92.73/27.83 (5) ItpfGraphProof [EQUIVALENT, 19 ms] 92.73/27.83 (6) IDP 92.73/27.83 (7) IDependencyGraphProof [EQUIVALENT, 0 ms] 92.73/27.83 (8) AND 92.73/27.83 (9) IDP 92.73/27.83 (10) UsableRulesProof [EQUIVALENT, 0 ms] 92.73/27.83 (11) IDP 92.73/27.83 (12) IDPNonInfProof [SOUND, 238 ms] 92.73/27.83 (13) IDP 92.73/27.83 (14) IDependencyGraphProof [EQUIVALENT, 0 ms] 92.73/27.83 (15) TRUE 92.73/27.83 (16) IDP 92.73/27.83 (17) UsableRulesProof [EQUIVALENT, 0 ms] 92.73/27.83 (18) IDP 92.73/27.83 (19) IDPNonInfProof [SOUND, 174 ms] 92.73/27.83 (20) AND 92.73/27.83 (21) IDP 92.73/27.83 (22) IDependencyGraphProof [EQUIVALENT, 0 ms] 92.73/27.83 (23) IDP 92.73/27.83 (24) IDPNonInfProof [SOUND, 138 ms] 92.73/27.83 (25) IDP 92.73/27.83 (26) IDependencyGraphProof [EQUIVALENT, 0 ms] 92.73/27.83 (27) IDP 92.73/27.83 (28) IDPNonInfProof [SOUND, 20 ms] 92.73/27.83 (29) IDP 92.73/27.83 (30) PisEmptyProof [EQUIVALENT, 0 ms] 92.73/27.83 (31) YES 92.73/27.83 (32) IDP 92.73/27.83 (33) IDependencyGraphProof [EQUIVALENT, 0 ms] 92.73/27.83 (34) IDP 92.73/27.83 (35) IDPNonInfProof [SOUND, 107 ms] 92.73/27.83 (36) IDP 92.73/27.83 (37) IDependencyGraphProof [EQUIVALENT, 0 ms] 92.73/27.83 (38) IDP 92.73/27.83 (39) IDPNonInfProof [SOUND, 6 ms] 92.73/27.83 (40) IDP 92.73/27.83 (41) IDependencyGraphProof [EQUIVALENT, 0 ms] 92.73/27.83 (42) TRUE 92.73/27.83 (43) IDP 92.73/27.83 (44) UsableRulesProof [EQUIVALENT, 0 ms] 92.73/27.83 (45) IDP 92.73/27.83 (46) IDPNonInfProof [SOUND, 276 ms] 92.73/27.83 (47) IDP 92.73/27.83 (48) IDependencyGraphProof [EQUIVALENT, 0 ms] 92.73/27.83 (49) TRUE 92.73/27.83 (50) IDP 92.73/27.83 (51) UsableRulesProof [EQUIVALENT, 0 ms] 92.73/27.83 (52) IDP 92.73/27.83 (53) IDPtoQDPProof [SOUND, 91 ms] 92.73/27.83 (54) QDP 92.73/27.83 (55) QReductionProof [EQUIVALENT, 5 ms] 92.73/27.83 (56) QDP 92.73/27.83 (57) QDPQMonotonicMRRProof [EQUIVALENT, 95 ms] 92.73/27.83 (58) QDP 92.73/27.83 (59) PisEmptyProof [EQUIVALENT, 0 ms] 92.73/27.83 (60) YES 92.73/27.83 (61) IDP 92.73/27.83 (62) UsableRulesProof [EQUIVALENT, 0 ms] 92.73/27.83 (63) IDP 92.73/27.83 (64) IDPNonInfProof [SOUND, 7 ms] 92.73/27.83 (65) IDP 92.73/27.83 (66) IDependencyGraphProof [EQUIVALENT, 0 ms] 92.73/27.83 (67) TRUE 92.73/27.83 92.73/27.83 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (0) 92.73/27.83 Obligation: 92.73/27.83 ITRS problem: 92.73/27.83 92.73/27.83 The following function symbols are pre-defined: 92.73/27.83 <<< 92.73/27.83 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.83 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.83 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.83 / ~ Div: (Integer, Integer) -> Integer 92.73/27.83 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.83 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.83 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.83 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.83 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.83 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.83 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.83 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.83 + ~ Add: (Integer, Integer) -> Integer 92.73/27.83 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.83 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.83 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.83 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.83 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.83 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.83 >>> 92.73/27.83 92.73/27.83 The TRS R consists of the following rules: 92.73/27.83 isprime(x) -> mem(x, primes(x)) 92.73/27.83 mem(x, nil) -> FALSE 92.73/27.83 mem(x, cons(y, zs)) -> Cond_mem(x = y, x, cons(y, zs)) 92.73/27.83 Cond_mem(TRUE, x, cons(y, zs)) -> TRUE 92.73/27.83 mem(x, cons(y, zs)) -> Cond_mem1(y > x, x, cons(y, zs)) 92.73/27.83 Cond_mem1(TRUE, x, cons(y, zs)) -> mem(x, zs) 92.73/27.83 mem(x, cons(y, zs)) -> Cond_mem2(x > y, x, cons(y, zs)) 92.73/27.83 Cond_mem2(TRUE, x, cons(y, zs)) -> mem(x, zs) 92.73/27.83 primes(x) -> sieve(nats(2, x)) 92.73/27.83 nats(x, y) -> Cond_nats(x > y, x, y) 92.73/27.83 Cond_nats(TRUE, x, y) -> nil 92.73/27.83 nats(x, y) -> Cond_nats1(x = y, x, y) 92.73/27.83 Cond_nats1(TRUE, x, y) -> cons(x, nil) 92.73/27.83 nats(x, y) -> Cond_nats2(y > x, x, y) 92.73/27.83 Cond_nats2(TRUE, x, y) -> cons(x, nats(x + 1, y)) 92.73/27.83 sieve(nil) -> nil 92.73/27.83 sieve(cons(x, ys)) -> cons(x, sieve(filter(x, ys))) 92.73/27.83 filter(x, nil) -> nil 92.73/27.83 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.73/27.83 if_1(TRUE, x, y, zs) -> filter(x, zs) 92.73/27.83 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.73/27.83 if_2(FALSE, x, y, zs) -> cons(x, filter(x, zs)) 92.73/27.83 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.73/27.83 Cond_isdiv(TRUE, x, 0) -> TRUE 92.73/27.83 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.73/27.83 Cond_isdiv1(TRUE, x, y) -> FALSE 92.73/27.83 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.73/27.83 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.73/27.83 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.73/27.83 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.73/27.83 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.73/27.83 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.73/27.83 The set Q consists of the following terms: 92.73/27.83 isprime(x0) 92.73/27.83 mem(x0, nil) 92.73/27.83 mem(x0, cons(x1, x2)) 92.73/27.83 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.83 primes(x0) 92.73/27.83 nats(x0, x1) 92.73/27.83 Cond_nats(TRUE, x0, x1) 92.73/27.83 Cond_nats1(TRUE, x0, x1) 92.73/27.83 Cond_nats2(TRUE, x0, x1) 92.73/27.83 sieve(nil) 92.73/27.83 sieve(cons(x0, x1)) 92.73/27.83 filter(x0, nil) 92.73/27.83 filter(x0, cons(x1, x2)) 92.73/27.83 if_1(TRUE, x0, x1, x2) 92.73/27.83 if_2(FALSE, x0, x1, x2) 92.73/27.83 Cond_isdiv(TRUE, x0, 0) 92.73/27.83 isdiv(x0, x1) 92.73/27.83 Cond_isdiv1(TRUE, x0, x1) 92.73/27.83 Cond_isdiv2(TRUE, x0, x1) 92.73/27.83 Cond_isdiv3(TRUE, x0, x1) 92.73/27.83 Cond_isdiv4(TRUE, x0, x1) 92.73/27.83 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (1) ITRStoIDPProof (EQUIVALENT) 92.73/27.83 Added dependency pairs 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (2) 92.73/27.83 Obligation: 92.73/27.83 IDP problem: 92.73/27.83 The following function symbols are pre-defined: 92.73/27.83 <<< 92.73/27.83 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.83 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.83 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.83 / ~ Div: (Integer, Integer) -> Integer 92.73/27.83 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.83 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.83 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.83 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.83 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.83 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.83 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.83 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.83 + ~ Add: (Integer, Integer) -> Integer 92.73/27.83 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.83 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.83 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.83 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.83 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.83 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.83 >>> 92.73/27.83 92.73/27.83 92.73/27.83 The following domains are used: 92.73/27.83 Integer, Boolean 92.73/27.83 92.73/27.83 The ITRS R consists of the following rules: 92.73/27.83 isprime(x) -> mem(x, primes(x)) 92.73/27.83 mem(x, nil) -> FALSE 92.73/27.83 mem(x, cons(y, zs)) -> Cond_mem(x = y, x, cons(y, zs)) 92.73/27.83 Cond_mem(TRUE, x, cons(y, zs)) -> TRUE 92.73/27.83 mem(x, cons(y, zs)) -> Cond_mem1(y > x, x, cons(y, zs)) 92.73/27.83 Cond_mem1(TRUE, x, cons(y, zs)) -> mem(x, zs) 92.73/27.83 mem(x, cons(y, zs)) -> Cond_mem2(x > y, x, cons(y, zs)) 92.73/27.83 Cond_mem2(TRUE, x, cons(y, zs)) -> mem(x, zs) 92.73/27.83 primes(x) -> sieve(nats(2, x)) 92.73/27.83 nats(x, y) -> Cond_nats(x > y, x, y) 92.73/27.83 Cond_nats(TRUE, x, y) -> nil 92.73/27.83 nats(x, y) -> Cond_nats1(x = y, x, y) 92.73/27.83 Cond_nats1(TRUE, x, y) -> cons(x, nil) 92.73/27.83 nats(x, y) -> Cond_nats2(y > x, x, y) 92.73/27.83 Cond_nats2(TRUE, x, y) -> cons(x, nats(x + 1, y)) 92.73/27.83 sieve(nil) -> nil 92.73/27.83 sieve(cons(x, ys)) -> cons(x, sieve(filter(x, ys))) 92.73/27.83 filter(x, nil) -> nil 92.73/27.83 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.73/27.83 if_1(TRUE, x, y, zs) -> filter(x, zs) 92.73/27.83 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.73/27.83 if_2(FALSE, x, y, zs) -> cons(x, filter(x, zs)) 92.73/27.83 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.73/27.83 Cond_isdiv(TRUE, x, 0) -> TRUE 92.73/27.83 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.73/27.83 Cond_isdiv1(TRUE, x, y) -> FALSE 92.73/27.83 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.73/27.83 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.73/27.83 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.73/27.83 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.73/27.83 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.73/27.83 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.73/27.83 92.73/27.83 The integer pair graph contains the following rules and edges: 92.73/27.83 (0): ISPRIME(x[0]) -> MEM(x[0], primes(x[0])) 92.73/27.83 (1): ISPRIME(x[1]) -> PRIMES(x[1]) 92.73/27.83 (2): MEM(x[2], cons(y[2], zs[2])) -> COND_MEM(x[2] = y[2], x[2], cons(y[2], zs[2])) 92.73/27.83 (3): MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(y[3] > x[3], x[3], cons(y[3], zs[3])) 92.73/27.83 (4): COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]) 92.73/27.83 (5): MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(x[5] > y[5], x[5], cons(y[5], zs[5])) 92.73/27.83 (6): COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]) 92.73/27.83 (7): PRIMES(x[7]) -> SIEVE(nats(2, x[7])) 92.73/27.83 (8): PRIMES(x[8]) -> NATS(2, x[8]) 92.73/27.83 (9): NATS(x[9], y[9]) -> COND_NATS(x[9] > y[9], x[9], y[9]) 92.73/27.83 (10): NATS(x[10], y[10]) -> COND_NATS1(x[10] = y[10], x[10], y[10]) 92.73/27.83 (11): NATS(x[11], y[11]) -> COND_NATS2(y[11] > x[11], x[11], y[11]) 92.73/27.83 (12): COND_NATS2(TRUE, x[12], y[12]) -> NATS(x[12] + 1, y[12]) 92.73/27.83 (13): SIEVE(cons(x[13], ys[13])) -> SIEVE(filter(x[13], ys[13])) 92.73/27.83 (14): SIEVE(cons(x[14], ys[14])) -> FILTER(x[14], ys[14]) 92.73/27.83 (15): FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) 92.73/27.83 (16): FILTER(x[16], cons(y[16], zs[16])) -> ISDIV(x[16], y[16]) 92.73/27.83 (17): IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]) 92.73/27.83 (18): FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) 92.73/27.83 (19): IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]) 92.73/27.83 (20): ISDIV(x[20], 0) -> COND_ISDIV(x[20] > 0, x[20], 0) 92.73/27.83 (21): ISDIV(x[21], y[21]) -> COND_ISDIV1(x[21] > y[21] && y[21] > 0, x[21], y[21]) 92.73/27.83 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.83 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.83 (24): ISDIV(x[24], y[24]) -> COND_ISDIV3(0 > y[24], x[24], y[24]) 92.73/27.83 (25): COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.83 (26): ISDIV(x[26], y[26]) -> COND_ISDIV4(0 > x[26], x[26], y[26]) 92.73/27.83 (27): COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]) 92.73/27.83 92.73/27.83 (0) -> (2), if (x[0] ->^* x[2] & primes(x[0]) ->^* cons(y[2], zs[2])) 92.73/27.83 (0) -> (3), if (x[0] ->^* x[3] & primes(x[0]) ->^* cons(y[3], zs[3])) 92.73/27.83 (0) -> (5), if (x[0] ->^* x[5] & primes(x[0]) ->^* cons(y[5], zs[5])) 92.73/27.83 (1) -> (7), if (x[1] ->^* x[7]) 92.73/27.83 (1) -> (8), if (x[1] ->^* x[8]) 92.73/27.83 (3) -> (4), if (y[3] > x[3] & x[3] ->^* x[4] & cons(y[3], zs[3]) ->^* cons(y[4], zs[4])) 92.73/27.83 (4) -> (2), if (x[4] ->^* x[2] & zs[4] ->^* cons(y[2], zs[2])) 92.73/27.83 (4) -> (3), if (x[4] ->^* x[3] & zs[4] ->^* cons(y[3], zs[3])) 92.73/27.83 (4) -> (5), if (x[4] ->^* x[5] & zs[4] ->^* cons(y[5], zs[5])) 92.73/27.83 (5) -> (6), if (x[5] > y[5] & x[5] ->^* x[6] & cons(y[5], zs[5]) ->^* cons(y[6], zs[6])) 92.73/27.83 (6) -> (2), if (x[6] ->^* x[2] & zs[6] ->^* cons(y[2], zs[2])) 92.73/27.83 (6) -> (3), if (x[6] ->^* x[3] & zs[6] ->^* cons(y[3], zs[3])) 92.73/27.83 (6) -> (5), if (x[6] ->^* x[5] & zs[6] ->^* cons(y[5], zs[5])) 92.73/27.83 (7) -> (13), if (nats(2, x[7]) ->^* cons(x[13], ys[13])) 92.73/27.83 (7) -> (14), if (nats(2, x[7]) ->^* cons(x[14], ys[14])) 92.73/27.83 (8) -> (9), if (2 ->^* x[9] & x[8] ->^* y[9]) 92.73/27.83 (8) -> (10), if (2 ->^* x[10] & x[8] ->^* y[10]) 92.73/27.83 (8) -> (11), if (2 ->^* x[11] & x[8] ->^* y[11]) 92.73/27.83 (11) -> (12), if (y[11] > x[11] & x[11] ->^* x[12] & y[11] ->^* y[12]) 92.73/27.83 (12) -> (9), if (x[12] + 1 ->^* x[9] & y[12] ->^* y[9]) 92.73/27.83 (12) -> (10), if (x[12] + 1 ->^* x[10] & y[12] ->^* y[10]) 92.73/27.83 (12) -> (11), if (x[12] + 1 ->^* x[11] & y[12] ->^* y[11]) 92.73/27.83 (13) -> (13), if (filter(x[13], ys[13]) ->^* cons(x[13]', ys[13]')) 92.73/27.83 (13) -> (14), if (filter(x[13], ys[13]) ->^* cons(x[14], ys[14])) 92.73/27.83 (14) -> (15), if (x[14] ->^* x[15] & ys[14] ->^* cons(y[15], zs[15])) 92.73/27.83 (14) -> (16), if (x[14] ->^* x[16] & ys[14] ->^* cons(y[16], zs[16])) 92.73/27.83 (14) -> (18), if (x[14] ->^* x[18] & ys[14] ->^* cons(y[18], zs[18])) 92.73/27.83 (15) -> (17), if (isdiv(x[15], y[15]) & x[15] ->^* x[17] & y[15] ->^* y[17] & zs[15] ->^* zs[17]) 92.73/27.83 (16) -> (20), if (x[16] ->^* x[20] & y[16] ->^* 0) 92.73/27.83 (16) -> (21), if (x[16] ->^* x[21] & y[16] ->^* y[21]) 92.73/27.83 (16) -> (22), if (x[16] ->^* x[22] & y[16] ->^* y[22]) 92.73/27.83 (16) -> (24), if (x[16] ->^* x[24] & y[16] ->^* y[24]) 92.73/27.83 (16) -> (26), if (x[16] ->^* x[26] & y[16] ->^* y[26]) 92.73/27.83 (17) -> (15), if (x[17] ->^* x[15] & zs[17] ->^* cons(y[15], zs[15])) 92.73/27.83 (17) -> (16), if (x[17] ->^* x[16] & zs[17] ->^* cons(y[16], zs[16])) 92.73/27.83 (17) -> (18), if (x[17] ->^* x[18] & zs[17] ->^* cons(y[18], zs[18])) 92.73/27.83 (18) -> (19), if (isdiv(x[18], y[18]) ->^* FALSE & x[18] ->^* x[19] & y[18] ->^* y[19] & zs[18] ->^* zs[19]) 92.73/27.83 (19) -> (15), if (x[19] ->^* x[15] & zs[19] ->^* cons(y[15], zs[15])) 92.73/27.83 (19) -> (16), if (x[19] ->^* x[16] & zs[19] ->^* cons(y[16], zs[16])) 92.73/27.83 (19) -> (18), if (x[19] ->^* x[18] & zs[19] ->^* cons(y[18], zs[18])) 92.73/27.83 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.83 (23) -> (20), if (x[23] ->^* x[20] & -(x[23]) + y[23] ->^* 0) 92.73/27.83 (23) -> (21), if (x[23] ->^* x[21] & -(x[23]) + y[23] ->^* y[21]) 92.73/27.83 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.83 (23) -> (24), if (x[23] ->^* x[24] & -(x[23]) + y[23] ->^* y[24]) 92.73/27.83 (23) -> (26), if (x[23] ->^* x[26] & -(x[23]) + y[23] ->^* y[26]) 92.73/27.83 (24) -> (25), if (0 > y[24] & x[24] ->^* x[25] & y[24] ->^* y[25]) 92.73/27.83 (25) -> (20), if (x[25] ->^* x[20] & -(y[25]) ->^* 0) 92.73/27.83 (25) -> (21), if (x[25] ->^* x[21] & -(y[25]) ->^* y[21]) 92.73/27.83 (25) -> (22), if (x[25] ->^* x[22] & -(y[25]) ->^* y[22]) 92.73/27.83 (25) -> (24), if (x[25] ->^* x[24] & -(y[25]) ->^* y[24]) 92.73/27.83 (25) -> (26), if (x[25] ->^* x[26] & -(y[25]) ->^* y[26]) 92.73/27.83 (26) -> (27), if (0 > x[26] & x[26] ->^* x[27] & y[26] ->^* y[27]) 92.73/27.83 (27) -> (20), if (-(x[27]) ->^* x[20] & y[27] ->^* 0) 92.73/27.83 (27) -> (21), if (-(x[27]) ->^* x[21] & y[27] ->^* y[21]) 92.73/27.83 (27) -> (22), if (-(x[27]) ->^* x[22] & y[27] ->^* y[22]) 92.73/27.83 (27) -> (24), if (-(x[27]) ->^* x[24] & y[27] ->^* y[24]) 92.73/27.83 (27) -> (26), if (-(x[27]) ->^* x[26] & y[27] ->^* y[26]) 92.73/27.83 92.73/27.83 The set Q consists of the following terms: 92.73/27.83 isprime(x0) 92.73/27.83 mem(x0, nil) 92.73/27.83 mem(x0, cons(x1, x2)) 92.73/27.83 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.83 primes(x0) 92.73/27.83 nats(x0, x1) 92.73/27.83 Cond_nats(TRUE, x0, x1) 92.73/27.83 Cond_nats1(TRUE, x0, x1) 92.73/27.83 Cond_nats2(TRUE, x0, x1) 92.73/27.83 sieve(nil) 92.73/27.83 sieve(cons(x0, x1)) 92.73/27.83 filter(x0, nil) 92.73/27.83 filter(x0, cons(x1, x2)) 92.73/27.83 if_1(TRUE, x0, x1, x2) 92.73/27.83 if_2(FALSE, x0, x1, x2) 92.73/27.83 Cond_isdiv(TRUE, x0, 0) 92.73/27.83 isdiv(x0, x1) 92.73/27.83 Cond_isdiv1(TRUE, x0, x1) 92.73/27.83 Cond_isdiv2(TRUE, x0, x1) 92.73/27.83 Cond_isdiv3(TRUE, x0, x1) 92.73/27.83 Cond_isdiv4(TRUE, x0, x1) 92.73/27.83 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (3) UsableRulesProof (EQUIVALENT) 92.73/27.83 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (4) 92.73/27.83 Obligation: 92.73/27.83 IDP problem: 92.73/27.83 The following function symbols are pre-defined: 92.73/27.83 <<< 92.73/27.83 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.83 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.83 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.83 / ~ Div: (Integer, Integer) -> Integer 92.73/27.83 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.83 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.83 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.83 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.83 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.83 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.83 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.83 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.83 + ~ Add: (Integer, Integer) -> Integer 92.73/27.83 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.83 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.83 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.83 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.83 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.83 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.83 >>> 92.73/27.83 92.73/27.83 92.73/27.83 The following domains are used: 92.73/27.83 Integer, Boolean 92.73/27.83 92.73/27.83 The ITRS R consists of the following rules: 92.73/27.83 primes(x) -> sieve(nats(2, x)) 92.73/27.83 nats(x, y) -> Cond_nats(x > y, x, y) 92.73/27.83 nats(x, y) -> Cond_nats1(x = y, x, y) 92.73/27.83 nats(x, y) -> Cond_nats2(y > x, x, y) 92.73/27.83 filter(x, nil) -> nil 92.73/27.83 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.73/27.83 if_1(TRUE, x, y, zs) -> filter(x, zs) 92.73/27.83 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.73/27.83 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.73/27.83 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.73/27.83 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.73/27.83 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.73/27.83 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.73/27.83 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.73/27.83 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.73/27.83 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.73/27.83 sieve(nil) -> nil 92.73/27.83 sieve(cons(x, ys)) -> cons(x, sieve(filter(x, ys))) 92.73/27.83 Cond_nats2(TRUE, x, y) -> cons(x, nats(x + 1, y)) 92.73/27.83 Cond_nats(TRUE, x, y) -> nil 92.73/27.83 Cond_nats1(TRUE, x, y) -> cons(x, nil) 92.73/27.83 if_2(FALSE, x, y, zs) -> cons(x, filter(x, zs)) 92.73/27.83 Cond_isdiv(TRUE, x, 0) -> TRUE 92.73/27.83 Cond_isdiv1(TRUE, x, y) -> FALSE 92.73/27.83 92.73/27.83 The integer pair graph contains the following rules and edges: 92.73/27.83 (0): ISPRIME(x[0]) -> MEM(x[0], primes(x[0])) 92.73/27.83 (1): ISPRIME(x[1]) -> PRIMES(x[1]) 92.73/27.83 (2): MEM(x[2], cons(y[2], zs[2])) -> COND_MEM(x[2] = y[2], x[2], cons(y[2], zs[2])) 92.73/27.83 (3): MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(y[3] > x[3], x[3], cons(y[3], zs[3])) 92.73/27.83 (4): COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]) 92.73/27.83 (5): MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(x[5] > y[5], x[5], cons(y[5], zs[5])) 92.73/27.83 (6): COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]) 92.73/27.83 (7): PRIMES(x[7]) -> SIEVE(nats(2, x[7])) 92.73/27.83 (8): PRIMES(x[8]) -> NATS(2, x[8]) 92.73/27.83 (9): NATS(x[9], y[9]) -> COND_NATS(x[9] > y[9], x[9], y[9]) 92.73/27.83 (10): NATS(x[10], y[10]) -> COND_NATS1(x[10] = y[10], x[10], y[10]) 92.73/27.83 (11): NATS(x[11], y[11]) -> COND_NATS2(y[11] > x[11], x[11], y[11]) 92.73/27.83 (12): COND_NATS2(TRUE, x[12], y[12]) -> NATS(x[12] + 1, y[12]) 92.73/27.83 (13): SIEVE(cons(x[13], ys[13])) -> SIEVE(filter(x[13], ys[13])) 92.73/27.83 (14): SIEVE(cons(x[14], ys[14])) -> FILTER(x[14], ys[14]) 92.73/27.83 (15): FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) 92.73/27.83 (16): FILTER(x[16], cons(y[16], zs[16])) -> ISDIV(x[16], y[16]) 92.73/27.83 (17): IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]) 92.73/27.83 (18): FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) 92.73/27.83 (19): IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]) 92.73/27.83 (20): ISDIV(x[20], 0) -> COND_ISDIV(x[20] > 0, x[20], 0) 92.73/27.83 (21): ISDIV(x[21], y[21]) -> COND_ISDIV1(x[21] > y[21] && y[21] > 0, x[21], y[21]) 92.73/27.83 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.83 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.83 (24): ISDIV(x[24], y[24]) -> COND_ISDIV3(0 > y[24], x[24], y[24]) 92.73/27.83 (25): COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.83 (26): ISDIV(x[26], y[26]) -> COND_ISDIV4(0 > x[26], x[26], y[26]) 92.73/27.83 (27): COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]) 92.73/27.83 92.73/27.83 (0) -> (2), if (x[0] ->^* x[2] & primes(x[0]) ->^* cons(y[2], zs[2])) 92.73/27.83 (0) -> (3), if (x[0] ->^* x[3] & primes(x[0]) ->^* cons(y[3], zs[3])) 92.73/27.83 (0) -> (5), if (x[0] ->^* x[5] & primes(x[0]) ->^* cons(y[5], zs[5])) 92.73/27.83 (1) -> (7), if (x[1] ->^* x[7]) 92.73/27.83 (1) -> (8), if (x[1] ->^* x[8]) 92.73/27.83 (3) -> (4), if (y[3] > x[3] & x[3] ->^* x[4] & cons(y[3], zs[3]) ->^* cons(y[4], zs[4])) 92.73/27.83 (4) -> (2), if (x[4] ->^* x[2] & zs[4] ->^* cons(y[2], zs[2])) 92.73/27.83 (4) -> (3), if (x[4] ->^* x[3] & zs[4] ->^* cons(y[3], zs[3])) 92.73/27.83 (4) -> (5), if (x[4] ->^* x[5] & zs[4] ->^* cons(y[5], zs[5])) 92.73/27.83 (5) -> (6), if (x[5] > y[5] & x[5] ->^* x[6] & cons(y[5], zs[5]) ->^* cons(y[6], zs[6])) 92.73/27.83 (6) -> (2), if (x[6] ->^* x[2] & zs[6] ->^* cons(y[2], zs[2])) 92.73/27.83 (6) -> (3), if (x[6] ->^* x[3] & zs[6] ->^* cons(y[3], zs[3])) 92.73/27.83 (6) -> (5), if (x[6] ->^* x[5] & zs[6] ->^* cons(y[5], zs[5])) 92.73/27.83 (7) -> (13), if (nats(2, x[7]) ->^* cons(x[13], ys[13])) 92.73/27.83 (7) -> (14), if (nats(2, x[7]) ->^* cons(x[14], ys[14])) 92.73/27.83 (8) -> (9), if (2 ->^* x[9] & x[8] ->^* y[9]) 92.73/27.83 (8) -> (10), if (2 ->^* x[10] & x[8] ->^* y[10]) 92.73/27.83 (8) -> (11), if (2 ->^* x[11] & x[8] ->^* y[11]) 92.73/27.83 (11) -> (12), if (y[11] > x[11] & x[11] ->^* x[12] & y[11] ->^* y[12]) 92.73/27.83 (12) -> (9), if (x[12] + 1 ->^* x[9] & y[12] ->^* y[9]) 92.73/27.83 (12) -> (10), if (x[12] + 1 ->^* x[10] & y[12] ->^* y[10]) 92.73/27.83 (12) -> (11), if (x[12] + 1 ->^* x[11] & y[12] ->^* y[11]) 92.73/27.83 (13) -> (13), if (filter(x[13], ys[13]) ->^* cons(x[13]', ys[13]')) 92.73/27.83 (13) -> (14), if (filter(x[13], ys[13]) ->^* cons(x[14], ys[14])) 92.73/27.83 (14) -> (15), if (x[14] ->^* x[15] & ys[14] ->^* cons(y[15], zs[15])) 92.73/27.83 (14) -> (16), if (x[14] ->^* x[16] & ys[14] ->^* cons(y[16], zs[16])) 92.73/27.83 (14) -> (18), if (x[14] ->^* x[18] & ys[14] ->^* cons(y[18], zs[18])) 92.73/27.83 (15) -> (17), if (isdiv(x[15], y[15]) & x[15] ->^* x[17] & y[15] ->^* y[17] & zs[15] ->^* zs[17]) 92.73/27.83 (16) -> (20), if (x[16] ->^* x[20] & y[16] ->^* 0) 92.73/27.83 (16) -> (21), if (x[16] ->^* x[21] & y[16] ->^* y[21]) 92.73/27.83 (16) -> (22), if (x[16] ->^* x[22] & y[16] ->^* y[22]) 92.73/27.83 (16) -> (24), if (x[16] ->^* x[24] & y[16] ->^* y[24]) 92.73/27.83 (16) -> (26), if (x[16] ->^* x[26] & y[16] ->^* y[26]) 92.73/27.83 (17) -> (15), if (x[17] ->^* x[15] & zs[17] ->^* cons(y[15], zs[15])) 92.73/27.83 (17) -> (16), if (x[17] ->^* x[16] & zs[17] ->^* cons(y[16], zs[16])) 92.73/27.83 (17) -> (18), if (x[17] ->^* x[18] & zs[17] ->^* cons(y[18], zs[18])) 92.73/27.83 (18) -> (19), if (isdiv(x[18], y[18]) ->^* FALSE & x[18] ->^* x[19] & y[18] ->^* y[19] & zs[18] ->^* zs[19]) 92.73/27.83 (19) -> (15), if (x[19] ->^* x[15] & zs[19] ->^* cons(y[15], zs[15])) 92.73/27.83 (19) -> (16), if (x[19] ->^* x[16] & zs[19] ->^* cons(y[16], zs[16])) 92.73/27.83 (19) -> (18), if (x[19] ->^* x[18] & zs[19] ->^* cons(y[18], zs[18])) 92.73/27.83 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.83 (23) -> (20), if (x[23] ->^* x[20] & -(x[23]) + y[23] ->^* 0) 92.73/27.83 (23) -> (21), if (x[23] ->^* x[21] & -(x[23]) + y[23] ->^* y[21]) 92.73/27.83 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.83 (23) -> (24), if (x[23] ->^* x[24] & -(x[23]) + y[23] ->^* y[24]) 92.73/27.83 (23) -> (26), if (x[23] ->^* x[26] & -(x[23]) + y[23] ->^* y[26]) 92.73/27.83 (24) -> (25), if (0 > y[24] & x[24] ->^* x[25] & y[24] ->^* y[25]) 92.73/27.83 (25) -> (20), if (x[25] ->^* x[20] & -(y[25]) ->^* 0) 92.73/27.83 (25) -> (21), if (x[25] ->^* x[21] & -(y[25]) ->^* y[21]) 92.73/27.83 (25) -> (22), if (x[25] ->^* x[22] & -(y[25]) ->^* y[22]) 92.73/27.83 (25) -> (24), if (x[25] ->^* x[24] & -(y[25]) ->^* y[24]) 92.73/27.83 (25) -> (26), if (x[25] ->^* x[26] & -(y[25]) ->^* y[26]) 92.73/27.83 (26) -> (27), if (0 > x[26] & x[26] ->^* x[27] & y[26] ->^* y[27]) 92.73/27.83 (27) -> (20), if (-(x[27]) ->^* x[20] & y[27] ->^* 0) 92.73/27.83 (27) -> (21), if (-(x[27]) ->^* x[21] & y[27] ->^* y[21]) 92.73/27.83 (27) -> (22), if (-(x[27]) ->^* x[22] & y[27] ->^* y[22]) 92.73/27.83 (27) -> (24), if (-(x[27]) ->^* x[24] & y[27] ->^* y[24]) 92.73/27.83 (27) -> (26), if (-(x[27]) ->^* x[26] & y[27] ->^* y[26]) 92.73/27.83 92.73/27.83 The set Q consists of the following terms: 92.73/27.83 isprime(x0) 92.73/27.83 mem(x0, nil) 92.73/27.83 mem(x0, cons(x1, x2)) 92.73/27.83 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.83 primes(x0) 92.73/27.83 nats(x0, x1) 92.73/27.83 Cond_nats(TRUE, x0, x1) 92.73/27.83 Cond_nats1(TRUE, x0, x1) 92.73/27.83 Cond_nats2(TRUE, x0, x1) 92.73/27.83 sieve(nil) 92.73/27.83 sieve(cons(x0, x1)) 92.73/27.83 filter(x0, nil) 92.73/27.83 filter(x0, cons(x1, x2)) 92.73/27.83 if_1(TRUE, x0, x1, x2) 92.73/27.83 if_2(FALSE, x0, x1, x2) 92.73/27.83 Cond_isdiv(TRUE, x0, 0) 92.73/27.83 isdiv(x0, x1) 92.73/27.83 Cond_isdiv1(TRUE, x0, x1) 92.73/27.83 Cond_isdiv2(TRUE, x0, x1) 92.73/27.83 Cond_isdiv3(TRUE, x0, x1) 92.73/27.83 Cond_isdiv4(TRUE, x0, x1) 92.73/27.83 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (5) ItpfGraphProof (EQUIVALENT) 92.73/27.83 Applied rule ItpfICap [ICap] 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (6) 92.73/27.83 Obligation: 92.73/27.83 IDP problem: 92.73/27.83 The following function symbols are pre-defined: 92.73/27.83 <<< 92.73/27.83 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.83 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.83 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.83 / ~ Div: (Integer, Integer) -> Integer 92.73/27.83 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.83 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.83 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.83 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.83 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.83 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.83 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.83 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.83 + ~ Add: (Integer, Integer) -> Integer 92.73/27.83 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.83 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.83 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.83 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.83 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.83 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.83 >>> 92.73/27.83 92.73/27.83 92.73/27.83 The following domains are used: 92.73/27.83 Integer, Boolean 92.73/27.83 92.73/27.83 The ITRS R consists of the following rules: 92.73/27.83 primes(x) -> sieve(nats(2, x)) 92.73/27.83 nats(x, y) -> Cond_nats(x > y, x, y) 92.73/27.83 nats(x, y) -> Cond_nats1(x = y, x, y) 92.73/27.83 nats(x, y) -> Cond_nats2(y > x, x, y) 92.73/27.83 filter(x, nil) -> nil 92.73/27.83 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.73/27.83 if_1(TRUE, x, y, zs) -> filter(x, zs) 92.73/27.83 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.73/27.83 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.73/27.83 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.73/27.83 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.73/27.83 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.73/27.83 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.73/27.83 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.73/27.83 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.73/27.83 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.73/27.83 sieve(nil) -> nil 92.73/27.83 sieve(cons(x, ys)) -> cons(x, sieve(filter(x, ys))) 92.73/27.83 Cond_nats2(TRUE, x, y) -> cons(x, nats(x + 1, y)) 92.73/27.83 Cond_nats(TRUE, x, y) -> nil 92.73/27.83 Cond_nats1(TRUE, x, y) -> cons(x, nil) 92.73/27.83 if_2(FALSE, x, y, zs) -> cons(x, filter(x, zs)) 92.73/27.83 Cond_isdiv(TRUE, x, 0) -> TRUE 92.73/27.83 Cond_isdiv1(TRUE, x, y) -> FALSE 92.73/27.83 92.73/27.83 The integer pair graph contains the following rules and edges: 92.73/27.83 (0): ISPRIME(x[0]) -> MEM(x[0], primes(x[0])) 92.73/27.83 (1): ISPRIME(x[1]) -> PRIMES(x[1]) 92.73/27.83 (2): MEM(x[2], cons(y[2], zs[2])) -> COND_MEM(x[2] = y[2], x[2], cons(y[2], zs[2])) 92.73/27.83 (3): MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(y[3] > x[3], x[3], cons(y[3], zs[3])) 92.73/27.83 (4): COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]) 92.73/27.83 (5): MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(x[5] > y[5], x[5], cons(y[5], zs[5])) 92.73/27.83 (6): COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]) 92.73/27.83 (7): PRIMES(x[7]) -> SIEVE(nats(2, x[7])) 92.73/27.83 (8): PRIMES(x[8]) -> NATS(2, x[8]) 92.73/27.83 (9): NATS(x[9], y[9]) -> COND_NATS(x[9] > y[9], x[9], y[9]) 92.73/27.83 (10): NATS(x[10], y[10]) -> COND_NATS1(x[10] = y[10], x[10], y[10]) 92.73/27.83 (11): NATS(x[11], y[11]) -> COND_NATS2(y[11] > x[11], x[11], y[11]) 92.73/27.83 (12): COND_NATS2(TRUE, x[12], y[12]) -> NATS(x[12] + 1, y[12]) 92.73/27.83 (13): SIEVE(cons(x[13], ys[13])) -> SIEVE(filter(x[13], ys[13])) 92.73/27.83 (14): SIEVE(cons(x[14], ys[14])) -> FILTER(x[14], ys[14]) 92.73/27.83 (15): FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) 92.73/27.83 (16): FILTER(x[16], cons(y[16], zs[16])) -> ISDIV(x[16], y[16]) 92.73/27.83 (17): IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]) 92.73/27.83 (18): FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) 92.73/27.83 (19): IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]) 92.73/27.83 (20): ISDIV(x[20], 0) -> COND_ISDIV(x[20] > 0, x[20], 0) 92.73/27.83 (21): ISDIV(x[21], y[21]) -> COND_ISDIV1(x[21] > y[21] && y[21] > 0, x[21], y[21]) 92.73/27.83 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.83 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.83 (24): ISDIV(x[24], y[24]) -> COND_ISDIV3(0 > y[24], x[24], y[24]) 92.73/27.83 (25): COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.83 (26): ISDIV(x[26], y[26]) -> COND_ISDIV4(0 > x[26], x[26], y[26]) 92.73/27.83 (27): COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]) 92.73/27.83 92.73/27.83 (0) -> (2), if (x[0] ->^* x[2] & primes(x[0]) ->^* cons(y[2], zs[2])) 92.73/27.83 (0) -> (3), if (x[0] ->^* x[3] & primes(x[0]) ->^* cons(y[3], zs[3])) 92.73/27.83 (0) -> (5), if (x[0] ->^* x[5] & primes(x[0]) ->^* cons(y[5], zs[5])) 92.73/27.83 (1) -> (7), if (x[1] ->^* x[7]) 92.73/27.83 (1) -> (8), if (x[1] ->^* x[8]) 92.73/27.83 (4) -> (2), if (x[4] ->^* x[2] & zs[4] ->^* cons(y[2], zs[2])) 92.73/27.83 (4) -> (3), if (x[4] ->^* x[3] & zs[4] ->^* cons(y[3], zs[3])) 92.73/27.83 (4) -> (5), if (x[4] ->^* x[5] & zs[4] ->^* cons(y[5], zs[5])) 92.73/27.83 (6) -> (2), if (x[6] ->^* x[2] & zs[6] ->^* cons(y[2], zs[2])) 92.73/27.83 (6) -> (3), if (x[6] ->^* x[3] & zs[6] ->^* cons(y[3], zs[3])) 92.73/27.83 (6) -> (5), if (x[6] ->^* x[5] & zs[6] ->^* cons(y[5], zs[5])) 92.73/27.83 (7) -> (13), if (nats(2, x[7]) ->^* cons(x[13], ys[13])) 92.73/27.83 (7) -> (14), if (nats(2, x[7]) ->^* cons(x[14], ys[14])) 92.73/27.83 (8) -> (9), if (2 ->^* x[9] & x[8] ->^* y[9]) 92.73/27.83 (8) -> (10), if (2 ->^* x[10] & x[8] ->^* y[10]) 92.73/27.83 (8) -> (11), if (2 ->^* x[11] & x[8] ->^* y[11]) 92.73/27.83 (11) -> (12), if (y[11] > x[11] & x[11] ->^* x[12] & y[11] ->^* y[12]) 92.73/27.83 (12) -> (9), if (x[12] + 1 ->^* x[9] & y[12] ->^* y[9]) 92.73/27.83 (12) -> (10), if (x[12] + 1 ->^* x[10] & y[12] ->^* y[10]) 92.73/27.83 (12) -> (11), if (x[12] + 1 ->^* x[11] & y[12] ->^* y[11]) 92.73/27.83 (13) -> (13), if (filter(x[13], ys[13]) ->^* cons(x[13]', ys[13]')) 92.73/27.83 (13) -> (14), if (filter(x[13], ys[13]) ->^* cons(x[14], ys[14])) 92.73/27.83 (14) -> (15), if (x[14] ->^* x[15] & ys[14] ->^* cons(y[15], zs[15])) 92.73/27.83 (14) -> (16), if (x[14] ->^* x[16] & ys[14] ->^* cons(y[16], zs[16])) 92.73/27.83 (14) -> (18), if (x[14] ->^* x[18] & ys[14] ->^* cons(y[18], zs[18])) 92.73/27.83 (15) -> (17), if (isdiv(x[15], y[15]) & x[15] ->^* x[17] & y[15] ->^* y[17] & zs[15] ->^* zs[17]) 92.73/27.83 (16) -> (20), if (x[16] ->^* x[20] & y[16] ->^* 0) 92.73/27.83 (16) -> (21), if (x[16] ->^* x[21] & y[16] ->^* y[21]) 92.73/27.83 (16) -> (22), if (x[16] ->^* x[22] & y[16] ->^* y[22]) 92.73/27.83 (16) -> (24), if (x[16] ->^* x[24] & y[16] ->^* y[24]) 92.73/27.83 (16) -> (26), if (x[16] ->^* x[26] & y[16] ->^* y[26]) 92.73/27.83 (17) -> (15), if (x[17] ->^* x[15] & zs[17] ->^* cons(y[15], zs[15])) 92.73/27.83 (17) -> (16), if (x[17] ->^* x[16] & zs[17] ->^* cons(y[16], zs[16])) 92.73/27.83 (17) -> (18), if (x[17] ->^* x[18] & zs[17] ->^* cons(y[18], zs[18])) 92.73/27.83 (18) -> (19), if (isdiv(x[18], y[18]) ->^* FALSE & x[18] ->^* x[19] & y[18] ->^* y[19] & zs[18] ->^* zs[19]) 92.73/27.83 (19) -> (15), if (x[19] ->^* x[15] & zs[19] ->^* cons(y[15], zs[15])) 92.73/27.83 (19) -> (16), if (x[19] ->^* x[16] & zs[19] ->^* cons(y[16], zs[16])) 92.73/27.83 (19) -> (18), if (x[19] ->^* x[18] & zs[19] ->^* cons(y[18], zs[18])) 92.73/27.83 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.83 (23) -> (20), if (x[23] ->^* x[20] & -(x[23]) + y[23] ->^* 0) 92.73/27.83 (23) -> (21), if (x[23] ->^* x[21] & -(x[23]) + y[23] ->^* y[21]) 92.73/27.83 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.83 (23) -> (24), if (x[23] ->^* x[24] & -(x[23]) + y[23] ->^* y[24]) 92.73/27.83 (23) -> (26), if (x[23] ->^* x[26] & -(x[23]) + y[23] ->^* y[26]) 92.73/27.83 (24) -> (25), if (0 > y[24] & x[24] ->^* x[25] & y[24] ->^* y[25]) 92.73/27.83 (25) -> (20), if (x[25] ->^* x[20] & -(y[25]) ->^* 0) 92.73/27.83 (25) -> (21), if (x[25] ->^* x[21] & -(y[25]) ->^* y[21]) 92.73/27.83 (25) -> (22), if (x[25] ->^* x[22] & -(y[25]) ->^* y[22]) 92.73/27.83 (25) -> (24), if (x[25] ->^* x[24] & -(y[25]) ->^* y[24]) 92.73/27.83 (25) -> (26), if (x[25] ->^* x[26] & -(y[25]) ->^* y[26]) 92.73/27.83 (26) -> (27), if (0 > x[26] & x[26] ->^* x[27] & y[26] ->^* y[27]) 92.73/27.83 (27) -> (20), if (-(x[27]) ->^* x[20] & y[27] ->^* 0) 92.73/27.83 (27) -> (21), if (-(x[27]) ->^* x[21] & y[27] ->^* y[21]) 92.73/27.83 (27) -> (22), if (-(x[27]) ->^* x[22] & y[27] ->^* y[22]) 92.73/27.83 (27) -> (24), if (-(x[27]) ->^* x[24] & y[27] ->^* y[24]) 92.73/27.83 (27) -> (26), if (-(x[27]) ->^* x[26] & y[27] ->^* y[26]) 92.73/27.83 (3) -> (4), if (y[3] > x[3] & x[3] ->^* x[4] & (y[3] ->^* y[4] & zs[3] ->^* zs[4])) 92.73/27.83 (5) -> (6), if (x[5] > y[5] & x[5] ->^* x[6] & (y[5] ->^* y[6] & zs[5] ->^* zs[6])) 92.73/27.83 92.73/27.83 The set Q consists of the following terms: 92.73/27.83 isprime(x0) 92.73/27.83 mem(x0, nil) 92.73/27.83 mem(x0, cons(x1, x2)) 92.73/27.83 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.83 primes(x0) 92.73/27.83 nats(x0, x1) 92.73/27.83 Cond_nats(TRUE, x0, x1) 92.73/27.83 Cond_nats1(TRUE, x0, x1) 92.73/27.83 Cond_nats2(TRUE, x0, x1) 92.73/27.83 sieve(nil) 92.73/27.83 sieve(cons(x0, x1)) 92.73/27.83 filter(x0, nil) 92.73/27.83 filter(x0, cons(x1, x2)) 92.73/27.83 if_1(TRUE, x0, x1, x2) 92.73/27.83 if_2(FALSE, x0, x1, x2) 92.73/27.83 Cond_isdiv(TRUE, x0, 0) 92.73/27.83 isdiv(x0, x1) 92.73/27.83 Cond_isdiv1(TRUE, x0, x1) 92.73/27.83 Cond_isdiv2(TRUE, x0, x1) 92.73/27.83 Cond_isdiv3(TRUE, x0, x1) 92.73/27.83 Cond_isdiv4(TRUE, x0, x1) 92.73/27.83 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (7) IDependencyGraphProof (EQUIVALENT) 92.73/27.83 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 5 SCCs with 11 less nodes. 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (8) 92.73/27.83 Complex Obligation (AND) 92.73/27.83 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (9) 92.73/27.83 Obligation: 92.73/27.83 IDP problem: 92.73/27.83 The following function symbols are pre-defined: 92.73/27.83 <<< 92.73/27.83 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.83 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.83 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.83 / ~ Div: (Integer, Integer) -> Integer 92.73/27.83 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.83 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.83 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.83 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.83 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.83 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.83 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.83 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.83 + ~ Add: (Integer, Integer) -> Integer 92.73/27.83 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.83 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.83 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.83 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.83 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.83 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.83 >>> 92.73/27.83 92.73/27.83 92.73/27.83 The following domains are used: 92.73/27.83 Integer, Boolean 92.73/27.83 92.73/27.83 The ITRS R consists of the following rules: 92.73/27.83 primes(x) -> sieve(nats(2, x)) 92.73/27.83 nats(x, y) -> Cond_nats(x > y, x, y) 92.73/27.83 nats(x, y) -> Cond_nats1(x = y, x, y) 92.73/27.83 nats(x, y) -> Cond_nats2(y > x, x, y) 92.73/27.83 filter(x, nil) -> nil 92.73/27.83 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.73/27.83 if_1(TRUE, x, y, zs) -> filter(x, zs) 92.73/27.83 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.73/27.83 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.73/27.83 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.73/27.83 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.73/27.83 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.73/27.83 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.73/27.83 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.73/27.83 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.73/27.83 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.73/27.83 sieve(nil) -> nil 92.73/27.83 sieve(cons(x, ys)) -> cons(x, sieve(filter(x, ys))) 92.73/27.83 Cond_nats2(TRUE, x, y) -> cons(x, nats(x + 1, y)) 92.73/27.83 Cond_nats(TRUE, x, y) -> nil 92.73/27.83 Cond_nats1(TRUE, x, y) -> cons(x, nil) 92.73/27.83 if_2(FALSE, x, y, zs) -> cons(x, filter(x, zs)) 92.73/27.83 Cond_isdiv(TRUE, x, 0) -> TRUE 92.73/27.83 Cond_isdiv1(TRUE, x, y) -> FALSE 92.73/27.83 92.73/27.83 The integer pair graph contains the following rules and edges: 92.73/27.83 (6): COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]) 92.73/27.83 (5): MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(x[5] > y[5], x[5], cons(y[5], zs[5])) 92.73/27.83 (4): COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]) 92.73/27.83 (3): MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(y[3] > x[3], x[3], cons(y[3], zs[3])) 92.73/27.83 92.73/27.83 (4) -> (3), if (x[4] ->^* x[3] & zs[4] ->^* cons(y[3], zs[3])) 92.73/27.83 (6) -> (3), if (x[6] ->^* x[3] & zs[6] ->^* cons(y[3], zs[3])) 92.73/27.83 (3) -> (4), if (y[3] > x[3] & x[3] ->^* x[4] & (y[3] ->^* y[4] & zs[3] ->^* zs[4])) 92.73/27.83 (4) -> (5), if (x[4] ->^* x[5] & zs[4] ->^* cons(y[5], zs[5])) 92.73/27.83 (6) -> (5), if (x[6] ->^* x[5] & zs[6] ->^* cons(y[5], zs[5])) 92.73/27.83 (5) -> (6), if (x[5] > y[5] & x[5] ->^* x[6] & (y[5] ->^* y[6] & zs[5] ->^* zs[6])) 92.73/27.83 92.73/27.83 The set Q consists of the following terms: 92.73/27.83 isprime(x0) 92.73/27.83 mem(x0, nil) 92.73/27.83 mem(x0, cons(x1, x2)) 92.73/27.83 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.83 primes(x0) 92.73/27.83 nats(x0, x1) 92.73/27.83 Cond_nats(TRUE, x0, x1) 92.73/27.83 Cond_nats1(TRUE, x0, x1) 92.73/27.83 Cond_nats2(TRUE, x0, x1) 92.73/27.83 sieve(nil) 92.73/27.83 sieve(cons(x0, x1)) 92.73/27.83 filter(x0, nil) 92.73/27.83 filter(x0, cons(x1, x2)) 92.73/27.83 if_1(TRUE, x0, x1, x2) 92.73/27.83 if_2(FALSE, x0, x1, x2) 92.73/27.83 Cond_isdiv(TRUE, x0, 0) 92.73/27.83 isdiv(x0, x1) 92.73/27.83 Cond_isdiv1(TRUE, x0, x1) 92.73/27.83 Cond_isdiv2(TRUE, x0, x1) 92.73/27.83 Cond_isdiv3(TRUE, x0, x1) 92.73/27.83 Cond_isdiv4(TRUE, x0, x1) 92.73/27.83 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (10) UsableRulesProof (EQUIVALENT) 92.73/27.83 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (11) 92.73/27.83 Obligation: 92.73/27.83 IDP problem: 92.73/27.83 The following function symbols are pre-defined: 92.73/27.83 <<< 92.73/27.83 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.83 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.83 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.83 / ~ Div: (Integer, Integer) -> Integer 92.73/27.83 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.83 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.83 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.83 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.83 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.83 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.83 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.83 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.83 + ~ Add: (Integer, Integer) -> Integer 92.73/27.83 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.83 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.83 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.83 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.83 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.83 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.83 >>> 92.73/27.83 92.73/27.83 92.73/27.83 The following domains are used: 92.73/27.83 Integer 92.73/27.83 92.73/27.83 R is empty. 92.73/27.83 92.73/27.83 The integer pair graph contains the following rules and edges: 92.73/27.83 (6): COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]) 92.73/27.83 (5): MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(x[5] > y[5], x[5], cons(y[5], zs[5])) 92.73/27.83 (4): COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]) 92.73/27.83 (3): MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(y[3] > x[3], x[3], cons(y[3], zs[3])) 92.73/27.83 92.73/27.83 (4) -> (3), if (x[4] ->^* x[3] & zs[4] ->^* cons(y[3], zs[3])) 92.73/27.83 (6) -> (3), if (x[6] ->^* x[3] & zs[6] ->^* cons(y[3], zs[3])) 92.73/27.83 (3) -> (4), if (y[3] > x[3] & x[3] ->^* x[4] & (y[3] ->^* y[4] & zs[3] ->^* zs[4])) 92.73/27.83 (4) -> (5), if (x[4] ->^* x[5] & zs[4] ->^* cons(y[5], zs[5])) 92.73/27.83 (6) -> (5), if (x[6] ->^* x[5] & zs[6] ->^* cons(y[5], zs[5])) 92.73/27.83 (5) -> (6), if (x[5] > y[5] & x[5] ->^* x[6] & (y[5] ->^* y[6] & zs[5] ->^* zs[6])) 92.73/27.83 92.73/27.83 The set Q consists of the following terms: 92.73/27.83 isprime(x0) 92.73/27.83 mem(x0, nil) 92.73/27.83 mem(x0, cons(x1, x2)) 92.73/27.83 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.83 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.83 primes(x0) 92.73/27.83 nats(x0, x1) 92.73/27.83 Cond_nats(TRUE, x0, x1) 92.73/27.83 Cond_nats1(TRUE, x0, x1) 92.73/27.83 Cond_nats2(TRUE, x0, x1) 92.73/27.83 sieve(nil) 92.73/27.83 sieve(cons(x0, x1)) 92.73/27.83 filter(x0, nil) 92.73/27.83 filter(x0, cons(x1, x2)) 92.73/27.83 if_1(TRUE, x0, x1, x2) 92.73/27.83 if_2(FALSE, x0, x1, x2) 92.73/27.83 Cond_isdiv(TRUE, x0, 0) 92.73/27.83 isdiv(x0, x1) 92.73/27.83 Cond_isdiv1(TRUE, x0, x1) 92.73/27.83 Cond_isdiv2(TRUE, x0, x1) 92.73/27.83 Cond_isdiv3(TRUE, x0, x1) 92.73/27.83 Cond_isdiv4(TRUE, x0, x1) 92.73/27.83 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (12) IDPNonInfProof (SOUND) 92.73/27.83 Used the following options for this NonInfProof: 92.73/27.83 92.73/27.83 IDPGPoloSolver: 92.73/27.83 Range: [(-1,2)] 92.73/27.83 IsNat: true 92.73/27.83 Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@67e24a14 92.73/27.83 Constraint Generator: NonInfConstraintGenerator: 92.73/27.83 PathGenerator: MetricPathGenerator: 92.73/27.83 Max Left Steps: 1 92.73/27.83 Max Right Steps: 1 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 The constraints were generated the following way: 92.73/27.83 92.73/27.83 The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: 92.73/27.83 92.73/27.83 Note that final constraints are written in bold face. 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 For Pair COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]) the following chains were created: 92.73/27.83 *We consider the chain MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5])), COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]), MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3])) which results in the following constraint: 92.73/27.83 92.73/27.83 (1) (>(x[5], y[5])=TRUE & x[5]=x[6] & y[5]=y[6] & zs[5]=zs[6] & x[6]=x[3] & zs[6]=cons(y[3], zs[3]) ==> COND_MEM2(TRUE, x[6], cons(y[6], zs[6]))_>=_NonInfC & COND_MEM2(TRUE, x[6], cons(y[6], zs[6]))_>=_MEM(x[6], zs[6]) & (U^Increasing(MEM(x[6], zs[6])), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.83 92.73/27.83 (2) (>(x[5], y[5])=TRUE ==> COND_MEM2(TRUE, x[5], cons(y[5], cons(y[3], zs[3])))_>=_NonInfC & COND_MEM2(TRUE, x[5], cons(y[5], cons(y[3], zs[3])))_>=_MEM(x[5], cons(y[3], zs[3])) & (U^Increasing(MEM(x[6], zs[6])), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.83 92.73/27.83 (3) (0 >= 0 ==> (U^Increasing(MEM(x[6], zs[6])), >=) & [(4)bni_15 + (-1)Bound*bni_15] + [(9)bni_15]zs[3] + [(2)bni_15]x[5] >= 0 & [(-1)bso_16] + [3]zs[3] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.83 92.73/27.83 (4) (0 >= 0 ==> (U^Increasing(MEM(x[6], zs[6])), >=) & [(4)bni_15 + (-1)Bound*bni_15] + [(9)bni_15]zs[3] + [(2)bni_15]x[5] >= 0 & [(-1)bso_16] + [3]zs[3] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.83 92.73/27.83 (5) (0 >= 0 ==> (U^Increasing(MEM(x[6], zs[6])), >=) & [(4)bni_15 + (-1)Bound*bni_15] + [(9)bni_15]zs[3] + [(2)bni_15]x[5] >= 0 & [(-1)bso_16] + [3]zs[3] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (5) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.73/27.83 92.73/27.83 (6) (0 >= 0 ==> (U^Increasing(MEM(x[6], zs[6])), >=) & [(9)bni_15] >= 0 & 0 >= 0 & 0 >= 0 & [(2)bni_15] >= 0 & [(4)bni_15 + (-1)Bound*bni_15] >= 0 & 0 >= 0 & [(-1)bso_16] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 *We consider the chain MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5])), COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]), MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5])) which results in the following constraint: 92.73/27.83 92.73/27.83 (1) (>(x[5], y[5])=TRUE & x[5]=x[6] & y[5]=y[6] & zs[5]=zs[6] & x[6]=x[5]1 & zs[6]=cons(y[5]1, zs[5]1) ==> COND_MEM2(TRUE, x[6], cons(y[6], zs[6]))_>=_NonInfC & COND_MEM2(TRUE, x[6], cons(y[6], zs[6]))_>=_MEM(x[6], zs[6]) & (U^Increasing(MEM(x[6], zs[6])), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.83 92.73/27.83 (2) (>(x[5], y[5])=TRUE ==> COND_MEM2(TRUE, x[5], cons(y[5], cons(y[5]1, zs[5]1)))_>=_NonInfC & COND_MEM2(TRUE, x[5], cons(y[5], cons(y[5]1, zs[5]1)))_>=_MEM(x[5], cons(y[5]1, zs[5]1)) & (U^Increasing(MEM(x[6], zs[6])), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.83 92.73/27.83 (3) (0 >= 0 ==> (U^Increasing(MEM(x[6], zs[6])), >=) & [(4)bni_15 + (-1)Bound*bni_15] + [(9)bni_15]zs[5]1 + [(2)bni_15]x[5] >= 0 & [(-1)bso_16] + [3]zs[5]1 >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.83 92.73/27.83 (4) (0 >= 0 ==> (U^Increasing(MEM(x[6], zs[6])), >=) & [(4)bni_15 + (-1)Bound*bni_15] + [(9)bni_15]zs[5]1 + [(2)bni_15]x[5] >= 0 & [(-1)bso_16] + [3]zs[5]1 >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.83 92.73/27.83 (5) (0 >= 0 ==> (U^Increasing(MEM(x[6], zs[6])), >=) & [(4)bni_15 + (-1)Bound*bni_15] + [(9)bni_15]zs[5]1 + [(2)bni_15]x[5] >= 0 & [(-1)bso_16] + [3]zs[5]1 >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (5) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.73/27.83 92.73/27.83 (6) (0 >= 0 ==> (U^Increasing(MEM(x[6], zs[6])), >=) & [(9)bni_15] >= 0 & 0 >= 0 & 0 >= 0 & [(2)bni_15] >= 0 & [(4)bni_15 + (-1)Bound*bni_15] >= 0 & 0 >= 0 & [(-1)bso_16] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 For Pair MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5])) the following chains were created: 92.73/27.83 *We consider the chain MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5])), COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]) which results in the following constraint: 92.73/27.83 92.73/27.83 (1) (>(x[5], y[5])=TRUE & x[5]=x[6] & y[5]=y[6] & zs[5]=zs[6] ==> MEM(x[5], cons(y[5], zs[5]))_>=_NonInfC & MEM(x[5], cons(y[5], zs[5]))_>=_COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5])) & (U^Increasing(COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5]))), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (1) using rule (IV) which results in the following new constraint: 92.73/27.83 92.73/27.83 (2) (>(x[5], y[5])=TRUE ==> MEM(x[5], cons(y[5], zs[5]))_>=_NonInfC & MEM(x[5], cons(y[5], zs[5]))_>=_COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5])) & (U^Increasing(COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5]))), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.83 92.73/27.83 (3) (0 >= 0 ==> (U^Increasing(COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5]))), >=) & [(4)bni_17 + (-1)Bound*bni_17] + [(6)bni_17]zs[5] + [(2)bni_17]x[5] >= 0 & [3 + (-1)bso_18] + [3]zs[5] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.83 92.73/27.83 (4) (0 >= 0 ==> (U^Increasing(COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5]))), >=) & [(4)bni_17 + (-1)Bound*bni_17] + [(6)bni_17]zs[5] + [(2)bni_17]x[5] >= 0 & [3 + (-1)bso_18] + [3]zs[5] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.83 92.73/27.83 (5) (0 >= 0 ==> (U^Increasing(COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5]))), >=) & [(4)bni_17 + (-1)Bound*bni_17] + [(6)bni_17]zs[5] + [(2)bni_17]x[5] >= 0 & [3 + (-1)bso_18] + [3]zs[5] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (5) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.73/27.83 92.73/27.83 (6) (0 >= 0 ==> (U^Increasing(COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5]))), >=) & [(6)bni_17] >= 0 & 0 >= 0 & [(2)bni_17] >= 0 & [(4)bni_17 + (-1)Bound*bni_17] >= 0 & [3 + (-1)bso_18] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 For Pair COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]) the following chains were created: 92.73/27.83 *We consider the chain MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3])), COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]), MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3])) which results in the following constraint: 92.73/27.83 92.73/27.83 (1) (>(y[3], x[3])=TRUE & x[3]=x[4] & y[3]=y[4] & zs[3]=zs[4] & x[4]=x[3]1 & zs[4]=cons(y[3]1, zs[3]1) ==> COND_MEM1(TRUE, x[4], cons(y[4], zs[4]))_>=_NonInfC & COND_MEM1(TRUE, x[4], cons(y[4], zs[4]))_>=_MEM(x[4], zs[4]) & (U^Increasing(MEM(x[4], zs[4])), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.83 92.73/27.83 (2) (>(y[3], x[3])=TRUE ==> COND_MEM1(TRUE, x[3], cons(y[3], cons(y[3]1, zs[3]1)))_>=_NonInfC & COND_MEM1(TRUE, x[3], cons(y[3], cons(y[3]1, zs[3]1)))_>=_MEM(x[3], cons(y[3]1, zs[3]1)) & (U^Increasing(MEM(x[4], zs[4])), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.83 92.73/27.83 (3) (0 >= 0 ==> (U^Increasing(MEM(x[4], zs[4])), >=) & [(4)bni_19 + (-1)Bound*bni_19] + [(9)bni_19]zs[3]1 + [(2)bni_19]x[3] >= 0 & [(-1)bso_20] + [3]zs[3]1 >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.83 92.73/27.83 (4) (0 >= 0 ==> (U^Increasing(MEM(x[4], zs[4])), >=) & [(4)bni_19 + (-1)Bound*bni_19] + [(9)bni_19]zs[3]1 + [(2)bni_19]x[3] >= 0 & [(-1)bso_20] + [3]zs[3]1 >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.83 92.73/27.83 (5) (0 >= 0 ==> (U^Increasing(MEM(x[4], zs[4])), >=) & [(4)bni_19 + (-1)Bound*bni_19] + [(9)bni_19]zs[3]1 + [(2)bni_19]x[3] >= 0 & [(-1)bso_20] + [3]zs[3]1 >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (5) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.73/27.83 92.73/27.83 (6) (0 >= 0 ==> (U^Increasing(MEM(x[4], zs[4])), >=) & [(9)bni_19] >= 0 & 0 >= 0 & 0 >= 0 & [(2)bni_19] >= 0 & [(4)bni_19 + (-1)Bound*bni_19] >= 0 & 0 >= 0 & [(-1)bso_20] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 *We consider the chain MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3])), COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]), MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5])) which results in the following constraint: 92.73/27.83 92.73/27.83 (1) (>(y[3], x[3])=TRUE & x[3]=x[4] & y[3]=y[4] & zs[3]=zs[4] & x[4]=x[5] & zs[4]=cons(y[5], zs[5]) ==> COND_MEM1(TRUE, x[4], cons(y[4], zs[4]))_>=_NonInfC & COND_MEM1(TRUE, x[4], cons(y[4], zs[4]))_>=_MEM(x[4], zs[4]) & (U^Increasing(MEM(x[4], zs[4])), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.83 92.73/27.83 (2) (>(y[3], x[3])=TRUE ==> COND_MEM1(TRUE, x[3], cons(y[3], cons(y[5], zs[5])))_>=_NonInfC & COND_MEM1(TRUE, x[3], cons(y[3], cons(y[5], zs[5])))_>=_MEM(x[3], cons(y[5], zs[5])) & (U^Increasing(MEM(x[4], zs[4])), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.83 92.73/27.83 (3) (0 >= 0 ==> (U^Increasing(MEM(x[4], zs[4])), >=) & [(4)bni_19 + (-1)Bound*bni_19] + [(9)bni_19]zs[5] + [(2)bni_19]x[3] >= 0 & [(-1)bso_20] + [3]zs[5] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.83 92.73/27.83 (4) (0 >= 0 ==> (U^Increasing(MEM(x[4], zs[4])), >=) & [(4)bni_19 + (-1)Bound*bni_19] + [(9)bni_19]zs[5] + [(2)bni_19]x[3] >= 0 & [(-1)bso_20] + [3]zs[5] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.83 92.73/27.83 (5) (0 >= 0 ==> (U^Increasing(MEM(x[4], zs[4])), >=) & [(4)bni_19 + (-1)Bound*bni_19] + [(9)bni_19]zs[5] + [(2)bni_19]x[3] >= 0 & [(-1)bso_20] + [3]zs[5] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (5) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.73/27.83 92.73/27.83 (6) (0 >= 0 ==> (U^Increasing(MEM(x[4], zs[4])), >=) & [(9)bni_19] >= 0 & 0 >= 0 & 0 >= 0 & [(2)bni_19] >= 0 & [(4)bni_19 + (-1)Bound*bni_19] >= 0 & 0 >= 0 & [(-1)bso_20] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 For Pair MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3])) the following chains were created: 92.73/27.83 *We consider the chain MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3])), COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]) which results in the following constraint: 92.73/27.83 92.73/27.83 (1) (>(y[3], x[3])=TRUE & x[3]=x[4] & y[3]=y[4] & zs[3]=zs[4] ==> MEM(x[3], cons(y[3], zs[3]))_>=_NonInfC & MEM(x[3], cons(y[3], zs[3]))_>=_COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3])) & (U^Increasing(COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3]))), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (1) using rule (IV) which results in the following new constraint: 92.73/27.83 92.73/27.83 (2) (>(y[3], x[3])=TRUE ==> MEM(x[3], cons(y[3], zs[3]))_>=_NonInfC & MEM(x[3], cons(y[3], zs[3]))_>=_COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3])) & (U^Increasing(COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3]))), >=)) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.83 92.73/27.83 (3) (0 >= 0 ==> (U^Increasing(COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3]))), >=) & [(4)bni_21 + (-1)Bound*bni_21] + [(6)bni_21]zs[3] + [(2)bni_21]x[3] >= 0 & [3 + (-1)bso_22] + [3]zs[3] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.83 92.73/27.83 (4) (0 >= 0 ==> (U^Increasing(COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3]))), >=) & [(4)bni_21 + (-1)Bound*bni_21] + [(6)bni_21]zs[3] + [(2)bni_21]x[3] >= 0 & [3 + (-1)bso_22] + [3]zs[3] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.83 92.73/27.83 (5) (0 >= 0 ==> (U^Increasing(COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3]))), >=) & [(4)bni_21 + (-1)Bound*bni_21] + [(6)bni_21]zs[3] + [(2)bni_21]x[3] >= 0 & [3 + (-1)bso_22] + [3]zs[3] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 We simplified constraint (5) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.73/27.83 92.73/27.83 (6) (0 >= 0 ==> (U^Increasing(COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3]))), >=) & [(6)bni_21] >= 0 & 0 >= 0 & [(2)bni_21] >= 0 & [(4)bni_21 + (-1)Bound*bni_21] >= 0 & [3 + (-1)bso_22] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 To summarize, we get the following constraints P__>=_ for the following pairs. 92.73/27.83 92.73/27.83 *COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]) 92.73/27.83 92.73/27.83 *(0 >= 0 ==> (U^Increasing(MEM(x[6], zs[6])), >=) & [(9)bni_15] >= 0 & 0 >= 0 & 0 >= 0 & [(2)bni_15] >= 0 & [(4)bni_15 + (-1)Bound*bni_15] >= 0 & 0 >= 0 & [(-1)bso_16] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 *(0 >= 0 ==> (U^Increasing(MEM(x[6], zs[6])), >=) & [(9)bni_15] >= 0 & 0 >= 0 & 0 >= 0 & [(2)bni_15] >= 0 & [(4)bni_15 + (-1)Bound*bni_15] >= 0 & 0 >= 0 & [(-1)bso_16] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 *MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5])) 92.73/27.83 92.73/27.83 *(0 >= 0 ==> (U^Increasing(COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5]))), >=) & [(6)bni_17] >= 0 & 0 >= 0 & [(2)bni_17] >= 0 & [(4)bni_17 + (-1)Bound*bni_17] >= 0 & [3 + (-1)bso_18] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 *COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]) 92.73/27.83 92.73/27.83 *(0 >= 0 ==> (U^Increasing(MEM(x[4], zs[4])), >=) & [(9)bni_19] >= 0 & 0 >= 0 & 0 >= 0 & [(2)bni_19] >= 0 & [(4)bni_19 + (-1)Bound*bni_19] >= 0 & 0 >= 0 & [(-1)bso_20] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 *(0 >= 0 ==> (U^Increasing(MEM(x[4], zs[4])), >=) & [(9)bni_19] >= 0 & 0 >= 0 & 0 >= 0 & [(2)bni_19] >= 0 & [(4)bni_19 + (-1)Bound*bni_19] >= 0 & 0 >= 0 & [(-1)bso_20] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 *MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3])) 92.73/27.83 92.73/27.83 *(0 >= 0 ==> (U^Increasing(COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3]))), >=) & [(6)bni_21] >= 0 & 0 >= 0 & [(2)bni_21] >= 0 & [(4)bni_21 + (-1)Bound*bni_21] >= 0 & [3 + (-1)bso_22] >= 0 & [1] >= 0) 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 92.73/27.83 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 92.73/27.83 92.73/27.83 Using the following integer polynomial ordering the resulting constraints can be solved 92.73/27.83 92.73/27.83 Polynomial interpretation over integers with natural coefficients for non-tuple symbols [NONINF][POLO]: 92.73/27.83 92.73/27.83 POL(TRUE) = 0 92.73/27.83 POL(FALSE) = 0 92.73/27.83 POL(COND_MEM2(x_1, x_2, x_3)) = x_3 + [2]x_2 92.73/27.83 POL(cons(x_1, x_2)) = [1] + [3]x_2 92.73/27.83 POL(MEM(x_1, x_2)) = [2] + [2]x_2 + [2]x_1 92.73/27.83 POL(>(x_1, x_2)) = 0 92.73/27.83 POL(COND_MEM1(x_1, x_2, x_3)) = x_3 + [2]x_2 92.73/27.83 92.73/27.83 92.73/27.83 The following pairs are in P_>: 92.73/27.83 92.73/27.83 92.73/27.83 MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5])) 92.73/27.83 MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3])) 92.73/27.83 92.73/27.83 92.73/27.83 The following pairs are in P_bound: 92.73/27.83 92.73/27.83 92.73/27.83 COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]) 92.73/27.83 MEM(x[5], cons(y[5], zs[5])) -> COND_MEM2(>(x[5], y[5]), x[5], cons(y[5], zs[5])) 92.73/27.83 COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]) 92.73/27.83 MEM(x[3], cons(y[3], zs[3])) -> COND_MEM1(>(y[3], x[3]), x[3], cons(y[3], zs[3])) 92.73/27.83 92.73/27.83 92.73/27.83 The following pairs are in P_>=: 92.73/27.83 92.73/27.83 92.73/27.83 COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]) 92.73/27.83 COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]) 92.73/27.83 92.73/27.83 92.73/27.83 There are no usable rules. 92.73/27.83 ---------------------------------------- 92.73/27.83 92.73/27.83 (13) 92.73/27.83 Obligation: 92.73/27.83 IDP problem: 92.73/27.83 The following function symbols are pre-defined: 92.73/27.83 <<< 92.73/27.83 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.83 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.83 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.83 / ~ Div: (Integer, Integer) -> Integer 92.73/27.83 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.83 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.83 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.83 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.83 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.83 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.83 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.83 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.83 + ~ Add: (Integer, Integer) -> Integer 92.73/27.83 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.84 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.84 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.84 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.84 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.84 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.84 >>> 92.73/27.84 92.73/27.84 92.73/27.84 The following domains are used: 92.73/27.84 none 92.73/27.84 92.73/27.84 R is empty. 92.73/27.84 92.73/27.84 The integer pair graph contains the following rules and edges: 92.73/27.84 (6): COND_MEM2(TRUE, x[6], cons(y[6], zs[6])) -> MEM(x[6], zs[6]) 92.73/27.84 (4): COND_MEM1(TRUE, x[4], cons(y[4], zs[4])) -> MEM(x[4], zs[4]) 92.73/27.84 92.73/27.84 92.73/27.84 The set Q consists of the following terms: 92.73/27.84 isprime(x0) 92.73/27.84 mem(x0, nil) 92.73/27.84 mem(x0, cons(x1, x2)) 92.73/27.84 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.84 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.84 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.84 primes(x0) 92.73/27.84 nats(x0, x1) 92.73/27.84 Cond_nats(TRUE, x0, x1) 92.73/27.84 Cond_nats1(TRUE, x0, x1) 92.73/27.84 Cond_nats2(TRUE, x0, x1) 92.73/27.84 sieve(nil) 92.73/27.84 sieve(cons(x0, x1)) 92.73/27.84 filter(x0, nil) 92.73/27.84 filter(x0, cons(x1, x2)) 92.73/27.84 if_1(TRUE, x0, x1, x2) 92.73/27.84 if_2(FALSE, x0, x1, x2) 92.73/27.84 Cond_isdiv(TRUE, x0, 0) 92.73/27.84 isdiv(x0, x1) 92.73/27.84 Cond_isdiv1(TRUE, x0, x1) 92.73/27.84 Cond_isdiv2(TRUE, x0, x1) 92.73/27.84 Cond_isdiv3(TRUE, x0, x1) 92.73/27.84 Cond_isdiv4(TRUE, x0, x1) 92.73/27.84 92.73/27.84 ---------------------------------------- 92.73/27.84 92.73/27.84 (14) IDependencyGraphProof (EQUIVALENT) 92.73/27.84 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes. 92.73/27.84 ---------------------------------------- 92.73/27.84 92.73/27.84 (15) 92.73/27.84 TRUE 92.73/27.84 92.73/27.84 ---------------------------------------- 92.73/27.84 92.73/27.84 (16) 92.73/27.84 Obligation: 92.73/27.84 IDP problem: 92.73/27.84 The following function symbols are pre-defined: 92.73/27.84 <<< 92.73/27.84 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.84 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.84 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.84 / ~ Div: (Integer, Integer) -> Integer 92.73/27.84 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.84 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.84 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.84 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.84 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.84 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.84 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.84 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.84 + ~ Add: (Integer, Integer) -> Integer 92.73/27.84 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.84 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.84 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.84 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.84 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.84 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.84 >>> 92.73/27.84 92.73/27.84 92.73/27.84 The following domains are used: 92.73/27.84 Integer, Boolean 92.73/27.84 92.73/27.84 The ITRS R consists of the following rules: 92.73/27.84 primes(x) -> sieve(nats(2, x)) 92.73/27.84 nats(x, y) -> Cond_nats(x > y, x, y) 92.73/27.84 nats(x, y) -> Cond_nats1(x = y, x, y) 92.73/27.84 nats(x, y) -> Cond_nats2(y > x, x, y) 92.73/27.84 filter(x, nil) -> nil 92.73/27.84 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.73/27.84 if_1(TRUE, x, y, zs) -> filter(x, zs) 92.73/27.84 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.73/27.84 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.73/27.84 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.73/27.84 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.73/27.84 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.73/27.84 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.73/27.84 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.73/27.84 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.73/27.84 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.73/27.84 sieve(nil) -> nil 92.73/27.84 sieve(cons(x, ys)) -> cons(x, sieve(filter(x, ys))) 92.73/27.84 Cond_nats2(TRUE, x, y) -> cons(x, nats(x + 1, y)) 92.73/27.84 Cond_nats(TRUE, x, y) -> nil 92.73/27.84 Cond_nats1(TRUE, x, y) -> cons(x, nil) 92.73/27.84 if_2(FALSE, x, y, zs) -> cons(x, filter(x, zs)) 92.73/27.84 Cond_isdiv(TRUE, x, 0) -> TRUE 92.73/27.84 Cond_isdiv1(TRUE, x, y) -> FALSE 92.73/27.84 92.73/27.84 The integer pair graph contains the following rules and edges: 92.73/27.84 (27): COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]) 92.73/27.84 (26): ISDIV(x[26], y[26]) -> COND_ISDIV4(0 > x[26], x[26], y[26]) 92.73/27.84 (25): COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.84 (24): ISDIV(x[24], y[24]) -> COND_ISDIV3(0 > y[24], x[24], y[24]) 92.73/27.84 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.84 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.84 92.73/27.84 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.84 (25) -> (22), if (x[25] ->^* x[22] & -(y[25]) ->^* y[22]) 92.73/27.84 (27) -> (22), if (-(x[27]) ->^* x[22] & y[27] ->^* y[22]) 92.73/27.84 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.84 (23) -> (24), if (x[23] ->^* x[24] & -(x[23]) + y[23] ->^* y[24]) 92.73/27.84 (25) -> (24), if (x[25] ->^* x[24] & -(y[25]) ->^* y[24]) 92.73/27.84 (27) -> (24), if (-(x[27]) ->^* x[24] & y[27] ->^* y[24]) 92.73/27.84 (24) -> (25), if (0 > y[24] & x[24] ->^* x[25] & y[24] ->^* y[25]) 92.73/27.84 (23) -> (26), if (x[23] ->^* x[26] & -(x[23]) + y[23] ->^* y[26]) 92.73/27.84 (25) -> (26), if (x[25] ->^* x[26] & -(y[25]) ->^* y[26]) 92.73/27.84 (27) -> (26), if (-(x[27]) ->^* x[26] & y[27] ->^* y[26]) 92.73/27.84 (26) -> (27), if (0 > x[26] & x[26] ->^* x[27] & y[26] ->^* y[27]) 92.73/27.84 92.73/27.84 The set Q consists of the following terms: 92.73/27.84 isprime(x0) 92.73/27.84 mem(x0, nil) 92.73/27.84 mem(x0, cons(x1, x2)) 92.73/27.84 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.84 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.84 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.84 primes(x0) 92.73/27.84 nats(x0, x1) 92.73/27.84 Cond_nats(TRUE, x0, x1) 92.73/27.84 Cond_nats1(TRUE, x0, x1) 92.73/27.84 Cond_nats2(TRUE, x0, x1) 92.73/27.84 sieve(nil) 92.73/27.84 sieve(cons(x0, x1)) 92.73/27.84 filter(x0, nil) 92.73/27.84 filter(x0, cons(x1, x2)) 92.73/27.84 if_1(TRUE, x0, x1, x2) 92.73/27.84 if_2(FALSE, x0, x1, x2) 92.73/27.84 Cond_isdiv(TRUE, x0, 0) 92.73/27.84 isdiv(x0, x1) 92.73/27.84 Cond_isdiv1(TRUE, x0, x1) 92.73/27.84 Cond_isdiv2(TRUE, x0, x1) 92.73/27.84 Cond_isdiv3(TRUE, x0, x1) 92.73/27.84 Cond_isdiv4(TRUE, x0, x1) 92.73/27.84 92.73/27.84 ---------------------------------------- 92.73/27.84 92.73/27.84 (17) UsableRulesProof (EQUIVALENT) 92.73/27.84 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 92.73/27.84 ---------------------------------------- 92.73/27.84 92.73/27.84 (18) 92.73/27.84 Obligation: 92.73/27.84 IDP problem: 92.73/27.84 The following function symbols are pre-defined: 92.73/27.84 <<< 92.73/27.84 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.84 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.84 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.84 / ~ Div: (Integer, Integer) -> Integer 92.73/27.84 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.84 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.84 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.84 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.84 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.84 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.84 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.84 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.84 + ~ Add: (Integer, Integer) -> Integer 92.73/27.84 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.84 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.84 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.84 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.84 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.84 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.84 >>> 92.73/27.84 92.73/27.84 92.73/27.84 The following domains are used: 92.73/27.84 Integer, Boolean 92.73/27.84 92.73/27.84 R is empty. 92.73/27.84 92.73/27.84 The integer pair graph contains the following rules and edges: 92.73/27.84 (27): COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]) 92.73/27.84 (26): ISDIV(x[26], y[26]) -> COND_ISDIV4(0 > x[26], x[26], y[26]) 92.73/27.84 (25): COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.84 (24): ISDIV(x[24], y[24]) -> COND_ISDIV3(0 > y[24], x[24], y[24]) 92.73/27.84 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.84 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.84 92.73/27.84 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.84 (25) -> (22), if (x[25] ->^* x[22] & -(y[25]) ->^* y[22]) 92.73/27.84 (27) -> (22), if (-(x[27]) ->^* x[22] & y[27] ->^* y[22]) 92.73/27.84 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.84 (23) -> (24), if (x[23] ->^* x[24] & -(x[23]) + y[23] ->^* y[24]) 92.73/27.84 (25) -> (24), if (x[25] ->^* x[24] & -(y[25]) ->^* y[24]) 92.73/27.84 (27) -> (24), if (-(x[27]) ->^* x[24] & y[27] ->^* y[24]) 92.73/27.84 (24) -> (25), if (0 > y[24] & x[24] ->^* x[25] & y[24] ->^* y[25]) 92.73/27.84 (23) -> (26), if (x[23] ->^* x[26] & -(x[23]) + y[23] ->^* y[26]) 92.73/27.84 (25) -> (26), if (x[25] ->^* x[26] & -(y[25]) ->^* y[26]) 92.73/27.84 (27) -> (26), if (-(x[27]) ->^* x[26] & y[27] ->^* y[26]) 92.73/27.84 (26) -> (27), if (0 > x[26] & x[26] ->^* x[27] & y[26] ->^* y[27]) 92.73/27.84 92.73/27.84 The set Q consists of the following terms: 92.73/27.84 isprime(x0) 92.73/27.84 mem(x0, nil) 92.73/27.84 mem(x0, cons(x1, x2)) 92.73/27.84 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.84 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.84 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.84 primes(x0) 92.73/27.84 nats(x0, x1) 92.73/27.84 Cond_nats(TRUE, x0, x1) 92.73/27.84 Cond_nats1(TRUE, x0, x1) 92.73/27.84 Cond_nats2(TRUE, x0, x1) 92.73/27.84 sieve(nil) 92.73/27.84 sieve(cons(x0, x1)) 92.73/27.84 filter(x0, nil) 92.73/27.84 filter(x0, cons(x1, x2)) 92.73/27.84 if_1(TRUE, x0, x1, x2) 92.73/27.84 if_2(FALSE, x0, x1, x2) 92.73/27.84 Cond_isdiv(TRUE, x0, 0) 92.73/27.84 isdiv(x0, x1) 92.73/27.84 Cond_isdiv1(TRUE, x0, x1) 92.73/27.84 Cond_isdiv2(TRUE, x0, x1) 92.73/27.84 Cond_isdiv3(TRUE, x0, x1) 92.73/27.84 Cond_isdiv4(TRUE, x0, x1) 92.73/27.84 92.73/27.84 ---------------------------------------- 92.73/27.84 92.73/27.84 (19) IDPNonInfProof (SOUND) 92.73/27.84 Used the following options for this NonInfProof: 92.73/27.84 92.73/27.84 IDPGPoloSolver: 92.73/27.84 Range: [(-1,2)] 92.73/27.84 IsNat: false 92.73/27.84 Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@54a124c6 92.73/27.84 Constraint Generator: NonInfConstraintGenerator: 92.73/27.84 PathGenerator: MetricPathGenerator: 92.73/27.84 Max Left Steps: 1 92.73/27.84 Max Right Steps: 1 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 The constraints were generated the following way: 92.73/27.84 92.73/27.84 The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: 92.73/27.84 92.73/27.84 Note that final constraints are written in bold face. 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 For Pair COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]) the following chains were created: 92.73/27.84 *We consider the chain ISDIV(x[26], y[26]) -> COND_ISDIV4(>(0, x[26]), x[26], y[26]), COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) which results in the following constraint: 92.73/27.84 92.73/27.84 (1) (>(0, x[26])=TRUE & x[26]=x[27] & y[26]=y[27] & -(x[27])=x[22] & y[27]=y[22] ==> COND_ISDIV4(TRUE, x[27], y[27])_>=_NonInfC & COND_ISDIV4(TRUE, x[27], y[27])_>=_ISDIV(-(x[27]), y[27]) & (U^Increasing(ISDIV(-(x[27]), y[27])), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.84 92.73/27.84 (2) (>(0, x[26])=TRUE ==> COND_ISDIV4(TRUE, x[26], y[26])_>=_NonInfC & COND_ISDIV4(TRUE, x[26], y[26])_>=_ISDIV(-(x[26]), y[26]) & (U^Increasing(ISDIV(-(x[27]), y[27])), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (3) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.84 92.73/27.84 (4) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.84 92.73/27.84 (5) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (6) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & 0 = 0 & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.84 92.73/27.84 (7) ([-1] + x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & 0 = 0 & [(-1)Bound*bni_21] + [(-1)bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 *We consider the chain ISDIV(x[26], y[26]) -> COND_ISDIV4(>(0, x[26]), x[26], y[26]), COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) which results in the following constraint: 92.73/27.84 92.73/27.84 (1) (>(0, x[26])=TRUE & x[26]=x[27] & y[26]=y[27] & -(x[27])=x[24] & y[27]=y[24] ==> COND_ISDIV4(TRUE, x[27], y[27])_>=_NonInfC & COND_ISDIV4(TRUE, x[27], y[27])_>=_ISDIV(-(x[27]), y[27]) & (U^Increasing(ISDIV(-(x[27]), y[27])), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.84 92.73/27.84 (2) (>(0, x[26])=TRUE ==> COND_ISDIV4(TRUE, x[26], y[26])_>=_NonInfC & COND_ISDIV4(TRUE, x[26], y[26])_>=_ISDIV(-(x[26]), y[26]) & (U^Increasing(ISDIV(-(x[27]), y[27])), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (3) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.84 92.73/27.84 (4) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.84 92.73/27.84 (5) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (6) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & 0 = 0 & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.84 92.73/27.84 (7) ([-1] + x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & 0 = 0 & [(-1)Bound*bni_21] + [(-1)bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 *We consider the chain ISDIV(x[26], y[26]) -> COND_ISDIV4(>(0, x[26]), x[26], y[26]), COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]), ISDIV(x[26], y[26]) -> COND_ISDIV4(>(0, x[26]), x[26], y[26]) which results in the following constraint: 92.73/27.84 92.73/27.84 (1) (>(0, x[26])=TRUE & x[26]=x[27] & y[26]=y[27] & -(x[27])=x[26]1 & y[27]=y[26]1 ==> COND_ISDIV4(TRUE, x[27], y[27])_>=_NonInfC & COND_ISDIV4(TRUE, x[27], y[27])_>=_ISDIV(-(x[27]), y[27]) & (U^Increasing(ISDIV(-(x[27]), y[27])), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.84 92.73/27.84 (2) (>(0, x[26])=TRUE ==> COND_ISDIV4(TRUE, x[26], y[26])_>=_NonInfC & COND_ISDIV4(TRUE, x[26], y[26])_>=_ISDIV(-(x[26]), y[26]) & (U^Increasing(ISDIV(-(x[27]), y[27])), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (3) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.84 92.73/27.84 (4) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.84 92.73/27.84 (5) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (6) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & 0 = 0 & [(-1)Bound*bni_21] + [bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.84 92.73/27.84 (7) ([-1] + x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & 0 = 0 & [(-1)Bound*bni_21] + [(-1)bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 For Pair ISDIV(x[26], y[26]) -> COND_ISDIV4(>(0, x[26]), x[26], y[26]) the following chains were created: 92.73/27.84 *We consider the chain ISDIV(x[26], y[26]) -> COND_ISDIV4(>(0, x[26]), x[26], y[26]), COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]) which results in the following constraint: 92.73/27.84 92.73/27.84 (1) (>(0, x[26])=TRUE & x[26]=x[27] & y[26]=y[27] ==> ISDIV(x[26], y[26])_>=_NonInfC & ISDIV(x[26], y[26])_>=_COND_ISDIV4(>(0, x[26]), x[26], y[26]) & (U^Increasing(COND_ISDIV4(>(0, x[26]), x[26], y[26])), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (1) using rule (IV) which results in the following new constraint: 92.73/27.84 92.73/27.84 (2) (>(0, x[26])=TRUE ==> ISDIV(x[26], y[26])_>=_NonInfC & ISDIV(x[26], y[26])_>=_COND_ISDIV4(>(0, x[26]), x[26], y[26]) & (U^Increasing(COND_ISDIV4(>(0, x[26]), x[26], y[26])), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (3) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(COND_ISDIV4(>(0, x[26]), x[26], y[26])), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x[26] >= 0 & [-1 + (-1)bso_24] + [-2]x[26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.84 92.73/27.84 (4) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(COND_ISDIV4(>(0, x[26]), x[26], y[26])), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x[26] >= 0 & [-1 + (-1)bso_24] + [-2]x[26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.84 92.73/27.84 (5) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(COND_ISDIV4(>(0, x[26]), x[26], y[26])), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x[26] >= 0 & [-1 + (-1)bso_24] + [-2]x[26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (6) ([-1] + [-1]x[26] >= 0 ==> (U^Increasing(COND_ISDIV4(>(0, x[26]), x[26], y[26])), >=) & 0 = 0 & [(-1)bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x[26] >= 0 & [-1 + (-1)bso_24] + [-2]x[26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.84 92.73/27.84 (7) ([-1] + x[26] >= 0 ==> (U^Increasing(COND_ISDIV4(>(0, x[26]), x[26], y[26])), >=) & 0 = 0 & [(-1)bni_23 + (-1)Bound*bni_23] + [bni_23]x[26] >= 0 & [-1 + (-1)bso_24] + [2]x[26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 For Pair COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) the following chains were created: 92.73/27.84 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) which results in the following constraint: 92.73/27.84 92.73/27.84 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[22] & -(y[25])=y[22] ==> COND_ISDIV3(TRUE, x[25], y[25])_>=_NonInfC & COND_ISDIV3(TRUE, x[25], y[25])_>=_ISDIV(x[25], -(y[25])) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.84 92.73/27.84 (2) (>(0, y[24])=TRUE ==> COND_ISDIV3(TRUE, x[24], y[24])_>=_NonInfC & COND_ISDIV3(TRUE, x[24], y[24])_>=_ISDIV(x[24], -(y[24])) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (3) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x[24] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.84 92.73/27.84 (4) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x[24] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.84 92.73/27.84 (5) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x[24] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (6) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25] = 0 & [(-1)bni_25 + (-1)Bound*bni_25] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.84 92.73/27.84 (7) ([-1] + y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25] = 0 & [(-1)bni_25 + (-1)Bound*bni_25] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) which results in the following constraint: 92.73/27.84 92.73/27.84 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[24]1 & -(y[25])=y[24]1 ==> COND_ISDIV3(TRUE, x[25], y[25])_>=_NonInfC & COND_ISDIV3(TRUE, x[25], y[25])_>=_ISDIV(x[25], -(y[25])) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.84 92.73/27.84 (2) (>(0, y[24])=TRUE ==> COND_ISDIV3(TRUE, x[24], y[24])_>=_NonInfC & COND_ISDIV3(TRUE, x[24], y[24])_>=_ISDIV(x[24], -(y[24])) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (3) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x[24] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.84 92.73/27.84 (4) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x[24] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.84 92.73/27.84 (5) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x[24] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (6) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25] = 0 & [(-1)bni_25 + (-1)Bound*bni_25] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.84 92.73/27.84 (7) ([-1] + y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25] = 0 & [(-1)bni_25 + (-1)Bound*bni_25] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[26], y[26]) -> COND_ISDIV4(>(0, x[26]), x[26], y[26]) which results in the following constraint: 92.73/27.84 92.73/27.84 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[26] & -(y[25])=y[26] ==> COND_ISDIV3(TRUE, x[25], y[25])_>=_NonInfC & COND_ISDIV3(TRUE, x[25], y[25])_>=_ISDIV(x[25], -(y[25])) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.84 92.73/27.84 (2) (>(0, y[24])=TRUE ==> COND_ISDIV3(TRUE, x[24], y[24])_>=_NonInfC & COND_ISDIV3(TRUE, x[24], y[24])_>=_ISDIV(x[24], -(y[24])) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (3) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x[24] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.84 92.73/27.84 (4) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x[24] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.84 92.73/27.84 (5) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25 + (-1)Bound*bni_25] + [(-1)bni_25]x[24] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (6) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25] = 0 & [(-1)bni_25 + (-1)Bound*bni_25] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.84 92.73/27.84 (7) ([-1] + y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25] = 0 & [(-1)bni_25 + (-1)Bound*bni_25] >= 0 & [(-1)bso_26] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 For Pair ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) the following chains were created: 92.73/27.84 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) which results in the following constraint: 92.73/27.84 92.73/27.84 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] ==> ISDIV(x[24], y[24])_>=_NonInfC & ISDIV(x[24], y[24])_>=_COND_ISDIV3(>(0, y[24]), x[24], y[24]) & (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (1) using rule (IV) which results in the following new constraint: 92.73/27.84 92.73/27.84 (2) (>(0, y[24])=TRUE ==> ISDIV(x[24], y[24])_>=_NonInfC & ISDIV(x[24], y[24])_>=_COND_ISDIV3(>(0, y[24]), x[24], y[24]) & (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (3) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x[24] >= 0 & [(-1)bso_28] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.84 92.73/27.84 (4) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x[24] >= 0 & [(-1)bso_28] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.84 92.73/27.84 (5) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_27 + (-1)Bound*bni_27] + [(-1)bni_27]x[24] >= 0 & [(-1)bso_28] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (6) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_27] = 0 & [(-1)bni_27 + (-1)Bound*bni_27] >= 0 & [(-1)bso_28] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.84 92.73/27.84 (7) ([-1] + y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_27] = 0 & [(-1)bni_27 + (-1)Bound*bni_27] >= 0 & [(-1)bso_28] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 For Pair COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) the following chains were created: 92.73/27.84 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) which results in the following constraint: 92.73/27.84 92.73/27.84 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[22]1 & +(-(x[23]), y[23])=y[22]1 ==> COND_ISDIV2(TRUE, x[23], y[23])_>=_NonInfC & COND_ISDIV2(TRUE, x[23], y[23])_>=_ISDIV(x[23], +(-(x[23]), y[23])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.84 92.73/27.84 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> COND_ISDIV2(TRUE, x[22], y[22])_>=_NonInfC & COND_ISDIV2(TRUE, x[22], y[22])_>=_ISDIV(x[22], +(-(x[22]), y[22])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.84 92.73/27.84 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.84 92.73/27.84 92.73/27.84 92.73/27.84 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.84 92.73/27.84 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[24] & +(-(x[23]), y[23])=y[24] ==> COND_ISDIV2(TRUE, x[23], y[23])_>=_NonInfC & COND_ISDIV2(TRUE, x[23], y[23])_>=_ISDIV(x[23], +(-(x[23]), y[23])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> COND_ISDIV2(TRUE, x[22], y[22])_>=_NonInfC & COND_ISDIV2(TRUE, x[22], y[22])_>=_ISDIV(x[22], +(-(x[22]), y[22])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[26], y[26]) -> COND_ISDIV4(>(0, x[26]), x[26], y[26]) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[26] & +(-(x[23]), y[23])=y[26] ==> COND_ISDIV2(TRUE, x[23], y[23])_>=_NonInfC & COND_ISDIV2(TRUE, x[23], y[23])_>=_ISDIV(x[23], +(-(x[23]), y[23])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> COND_ISDIV2(TRUE, x[22], y[22])_>=_NonInfC & COND_ISDIV2(TRUE, x[22], y[22])_>=_ISDIV(x[22], +(-(x[22]), y[22])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 For Pair ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) the following chains were created: 92.73/27.86 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] ==> ISDIV(x[22], y[22])_>=_NonInfC & ISDIV(x[22], y[22])_>=_COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) & (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> ISDIV(x[22], y[22])_>=_NonInfC & ISDIV(x[22], y[22])_>=_COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) & (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_31 + (-1)Bound*bni_31] + [(-1)bni_31]x[22] >= 0 & [(-1)bso_32] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_31 + (-1)Bound*bni_31] + [(-1)bni_31]x[22] >= 0 & [(-1)bso_32] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_31 + (-1)Bound*bni_31] + [(-1)bni_31]x[22] >= 0 & [(-1)bso_32] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 To summarize, we get the following constraints P__>=_ for the following pairs. 92.73/27.86 92.73/27.86 *COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]) 92.73/27.86 92.73/27.86 *([-1] + x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & 0 = 0 & [(-1)Bound*bni_21] + [(-1)bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 *([-1] + x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & 0 = 0 & [(-1)Bound*bni_21] + [(-1)bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 *([-1] + x[26] >= 0 ==> (U^Increasing(ISDIV(-(x[27]), y[27])), >=) & 0 = 0 & [(-1)Bound*bni_21] + [(-1)bni_21]x[26] >= 0 & [1 + (-1)bso_22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 *ISDIV(x[26], y[26]) -> COND_ISDIV4(>(0, x[26]), x[26], y[26]) 92.73/27.86 92.73/27.86 *([-1] + x[26] >= 0 ==> (U^Increasing(COND_ISDIV4(>(0, x[26]), x[26], y[26])), >=) & 0 = 0 & [(-1)bni_23 + (-1)Bound*bni_23] + [bni_23]x[26] >= 0 & [-1 + (-1)bso_24] + [2]x[26] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 *COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.86 92.73/27.86 *([-1] + y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25] = 0 & [(-1)bni_25 + (-1)Bound*bni_25] >= 0 & [(-1)bso_26] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 *([-1] + y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25] = 0 & [(-1)bni_25 + (-1)Bound*bni_25] >= 0 & [(-1)bso_26] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 *([-1] + y[24] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_25] = 0 & [(-1)bni_25 + (-1)Bound*bni_25] >= 0 & [(-1)bso_26] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 *ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) 92.73/27.86 92.73/27.86 *([-1] + y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_27] = 0 & [(-1)bni_27 + (-1)Bound*bni_27] >= 0 & [(-1)bso_28] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 *COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.86 92.73/27.86 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_29 + (-1)Bound*bni_29] + [(-1)bni_29]x[22] >= 0 & [(-1)bso_30] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 *ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.86 92.73/27.86 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_31 + (-1)Bound*bni_31] + [(-1)bni_31]x[22] >= 0 & [(-1)bso_32] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 92.73/27.86 92.73/27.86 Using the following integer polynomial ordering the resulting constraints can be solved 92.73/27.86 92.73/27.86 Polynomial interpretation over integers[POLO]: 92.73/27.86 92.73/27.86 POL(TRUE) = 0 92.73/27.86 POL(FALSE) = [2] 92.73/27.86 POL(COND_ISDIV4(x_1, x_2, x_3)) = x_2 92.73/27.86 POL(ISDIV(x_1, x_2)) = [-1] + [-1]x_1 92.73/27.86 POL(-(x_1)) = [-1]x_1 92.73/27.86 POL(>(x_1, x_2)) = [-1] 92.73/27.86 POL(0) = 0 92.73/27.86 POL(COND_ISDIV3(x_1, x_2, x_3)) = [-1] + [-1]x_2 92.73/27.86 POL(COND_ISDIV2(x_1, x_2, x_3)) = [-1] + [-1]x_2 + [-1]x_1 92.73/27.86 POL(+(x_1, x_2)) = x_1 + x_2 92.73/27.86 POL(&&(x_1, x_2)) = 0 92.73/27.86 POL(>=(x_1, x_2)) = [-1] 92.73/27.86 92.73/27.86 92.73/27.86 The following pairs are in P_>: 92.73/27.86 92.73/27.86 92.73/27.86 COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]) 92.73/27.86 92.73/27.86 92.73/27.86 The following pairs are in P_bound: 92.73/27.86 92.73/27.86 92.73/27.86 ISDIV(x[26], y[26]) -> COND_ISDIV4(>(0, x[26]), x[26], y[26]) 92.73/27.86 92.73/27.86 92.73/27.86 The following pairs are in P_>=: 92.73/27.86 92.73/27.86 92.73/27.86 ISDIV(x[26], y[26]) -> COND_ISDIV4(>(0, x[26]), x[26], y[26]) 92.73/27.86 COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.86 ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) 92.73/27.86 COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.86 ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.86 92.73/27.86 92.73/27.86 At least the following rules have been oriented under context sensitive arithmetic replacement: 92.73/27.86 92.73/27.86 TRUE^1 -> &&(TRUE, TRUE)^1 92.73/27.86 FALSE^1 -> &&(TRUE, FALSE)^1 92.73/27.86 FALSE^1 -> &&(FALSE, TRUE)^1 92.73/27.86 FALSE^1 -> &&(FALSE, FALSE)^1 92.73/27.86 92.73/27.86 ---------------------------------------- 92.73/27.86 92.73/27.86 (20) 92.73/27.86 Complex Obligation (AND) 92.73/27.86 92.73/27.86 ---------------------------------------- 92.73/27.86 92.73/27.86 (21) 92.73/27.86 Obligation: 92.73/27.86 IDP problem: 92.73/27.86 The following function symbols are pre-defined: 92.73/27.86 <<< 92.73/27.86 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.86 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.86 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.86 / ~ Div: (Integer, Integer) -> Integer 92.73/27.86 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.86 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.86 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.86 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.86 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.86 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.86 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.86 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.86 + ~ Add: (Integer, Integer) -> Integer 92.73/27.86 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.86 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.86 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.86 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.86 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.86 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.86 >>> 92.73/27.86 92.73/27.86 92.73/27.86 The following domains are used: 92.73/27.86 Integer, Boolean 92.73/27.86 92.73/27.86 R is empty. 92.73/27.86 92.73/27.86 The integer pair graph contains the following rules and edges: 92.73/27.86 (26): ISDIV(x[26], y[26]) -> COND_ISDIV4(0 > x[26], x[26], y[26]) 92.73/27.86 (25): COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.86 (24): ISDIV(x[24], y[24]) -> COND_ISDIV3(0 > y[24], x[24], y[24]) 92.73/27.86 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.86 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.86 92.73/27.86 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.86 (25) -> (22), if (x[25] ->^* x[22] & -(y[25]) ->^* y[22]) 92.73/27.86 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.86 (23) -> (24), if (x[23] ->^* x[24] & -(x[23]) + y[23] ->^* y[24]) 92.73/27.86 (25) -> (24), if (x[25] ->^* x[24] & -(y[25]) ->^* y[24]) 92.73/27.86 (24) -> (25), if (0 > y[24] & x[24] ->^* x[25] & y[24] ->^* y[25]) 92.73/27.86 (23) -> (26), if (x[23] ->^* x[26] & -(x[23]) + y[23] ->^* y[26]) 92.73/27.86 (25) -> (26), if (x[25] ->^* x[26] & -(y[25]) ->^* y[26]) 92.73/27.86 92.73/27.86 The set Q consists of the following terms: 92.73/27.86 isprime(x0) 92.73/27.86 mem(x0, nil) 92.73/27.86 mem(x0, cons(x1, x2)) 92.73/27.86 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.86 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.86 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.86 primes(x0) 92.73/27.86 nats(x0, x1) 92.73/27.86 Cond_nats(TRUE, x0, x1) 92.73/27.86 Cond_nats1(TRUE, x0, x1) 92.73/27.86 Cond_nats2(TRUE, x0, x1) 92.73/27.86 sieve(nil) 92.73/27.86 sieve(cons(x0, x1)) 92.73/27.86 filter(x0, nil) 92.73/27.86 filter(x0, cons(x1, x2)) 92.73/27.86 if_1(TRUE, x0, x1, x2) 92.73/27.86 if_2(FALSE, x0, x1, x2) 92.73/27.86 Cond_isdiv(TRUE, x0, 0) 92.73/27.86 isdiv(x0, x1) 92.73/27.86 Cond_isdiv1(TRUE, x0, x1) 92.73/27.86 Cond_isdiv2(TRUE, x0, x1) 92.73/27.86 Cond_isdiv3(TRUE, x0, x1) 92.73/27.86 Cond_isdiv4(TRUE, x0, x1) 92.73/27.86 92.73/27.86 ---------------------------------------- 92.73/27.86 92.73/27.86 (22) IDependencyGraphProof (EQUIVALENT) 92.73/27.86 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 92.73/27.86 ---------------------------------------- 92.73/27.86 92.73/27.86 (23) 92.73/27.86 Obligation: 92.73/27.86 IDP problem: 92.73/27.86 The following function symbols are pre-defined: 92.73/27.86 <<< 92.73/27.86 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.86 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.86 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.86 / ~ Div: (Integer, Integer) -> Integer 92.73/27.86 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.86 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.86 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.86 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.86 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.86 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.86 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.86 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.86 + ~ Add: (Integer, Integer) -> Integer 92.73/27.86 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.86 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.86 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.86 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.86 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.86 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.86 >>> 92.73/27.86 92.73/27.86 92.73/27.86 The following domains are used: 92.73/27.86 Integer, Boolean 92.73/27.86 92.73/27.86 R is empty. 92.73/27.86 92.73/27.86 The integer pair graph contains the following rules and edges: 92.73/27.86 (24): ISDIV(x[24], y[24]) -> COND_ISDIV3(0 > y[24], x[24], y[24]) 92.73/27.86 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.86 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.86 (25): COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.86 92.73/27.86 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.86 (25) -> (22), if (x[25] ->^* x[22] & -(y[25]) ->^* y[22]) 92.73/27.86 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.86 (23) -> (24), if (x[23] ->^* x[24] & -(x[23]) + y[23] ->^* y[24]) 92.73/27.86 (25) -> (24), if (x[25] ->^* x[24] & -(y[25]) ->^* y[24]) 92.73/27.86 (24) -> (25), if (0 > y[24] & x[24] ->^* x[25] & y[24] ->^* y[25]) 92.73/27.86 92.73/27.86 The set Q consists of the following terms: 92.73/27.86 isprime(x0) 92.73/27.86 mem(x0, nil) 92.73/27.86 mem(x0, cons(x1, x2)) 92.73/27.86 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.86 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.86 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.86 primes(x0) 92.73/27.86 nats(x0, x1) 92.73/27.86 Cond_nats(TRUE, x0, x1) 92.73/27.86 Cond_nats1(TRUE, x0, x1) 92.73/27.86 Cond_nats2(TRUE, x0, x1) 92.73/27.86 sieve(nil) 92.73/27.86 sieve(cons(x0, x1)) 92.73/27.86 filter(x0, nil) 92.73/27.86 filter(x0, cons(x1, x2)) 92.73/27.86 if_1(TRUE, x0, x1, x2) 92.73/27.86 if_2(FALSE, x0, x1, x2) 92.73/27.86 Cond_isdiv(TRUE, x0, 0) 92.73/27.86 isdiv(x0, x1) 92.73/27.86 Cond_isdiv1(TRUE, x0, x1) 92.73/27.86 Cond_isdiv2(TRUE, x0, x1) 92.73/27.86 Cond_isdiv3(TRUE, x0, x1) 92.73/27.86 Cond_isdiv4(TRUE, x0, x1) 92.73/27.86 92.73/27.86 ---------------------------------------- 92.73/27.86 92.73/27.86 (24) IDPNonInfProof (SOUND) 92.73/27.86 Used the following options for this NonInfProof: 92.73/27.86 92.73/27.86 IDPGPoloSolver: 92.73/27.86 Range: [(-1,2)] 92.73/27.86 IsNat: false 92.73/27.86 Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@1fec38b 92.73/27.86 Constraint Generator: NonInfConstraintGenerator: 92.73/27.86 PathGenerator: MetricPathGenerator: 92.73/27.86 Max Left Steps: 3 92.73/27.86 Max Right Steps: 2 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 The constraints were generated the following way: 92.73/27.86 92.73/27.86 The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: 92.73/27.86 92.73/27.86 Note that final constraints are written in bold face. 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 For Pair ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) the following chains were created: 92.73/27.86 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] ==> ISDIV(x[24], y[24])_>=_NonInfC & ISDIV(x[24], y[24])_>=_COND_ISDIV3(>(0, y[24]), x[24], y[24]) & (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rule (IV) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>(0, y[24])=TRUE ==> ISDIV(x[24], y[24])_>=_NonInfC & ISDIV(x[24], y[24])_>=_COND_ISDIV3(>(0, y[24]), x[24], y[24]) & (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-1)bni_17]x[24] >= 0 & [(-1)bso_18] + [-2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-1)bni_17]x[24] >= 0 & [(-1)bso_18] + [-2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-1)bni_17]x[24] >= 0 & [(-1)bso_18] + [-2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (6) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_17] = 0 & [(-1)bni_17 + (-1)Bound*bni_17] >= 0 & [(-1)bso_18] + [-2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.86 92.73/27.86 (7) ([-1] + y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_17] = 0 & [(-1)bni_17 + (-1)Bound*bni_17] >= 0 & [(-1)bso_18] + [2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 For Pair COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) the following chains were created: 92.73/27.86 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[22]1 & +(-(x[23]), y[23])=y[22]1 & &&(>=(y[22]1, x[22]1), >(x[22]1, 0))=TRUE & x[22]1=x[23]1 & y[22]1=y[23]1 & x[23]1=x[22]2 & +(-(x[23]1), y[23]1)=y[22]2 & &&(>=(y[22]2, x[22]2), >(x[22]2, 0))=TRUE & x[22]2=x[23]2 & y[22]2=y[23]2 ==> COND_ISDIV2(TRUE, x[23]1, y[23]1)_>=_NonInfC & COND_ISDIV2(TRUE, x[23]1, y[23]1)_>=_ISDIV(x[23]1, +(-(x[23]1), y[23]1)) & (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE & >=(+(-(x[22]), y[22]), x[22])=TRUE & >=(+(-(x[22]), +(-(x[22]), y[22])), x[22])=TRUE ==> COND_ISDIV2(TRUE, x[22], +(-(x[22]), y[22]))_>=_NonInfC & COND_ISDIV2(TRUE, x[22], +(-(x[22]), y[22]))_>=_ISDIV(x[22], +(-(x[22]), +(-(x[22]), y[22]))) & (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 & [-3]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 & [-3]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 & [-3]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[22]1 & +(-(x[23]), y[23])=y[22]1 & &&(>=(y[22]1, x[22]1), >(x[22]1, 0))=TRUE & x[22]1=x[23]1 & y[22]1=y[23]1 & x[23]1=x[24] & +(-(x[23]1), y[23]1)=y[24] & >(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] ==> COND_ISDIV2(TRUE, x[23]1, y[23]1)_>=_NonInfC & COND_ISDIV2(TRUE, x[23]1, y[23]1)_>=_ISDIV(x[23]1, +(-(x[23]1), y[23]1)) & (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>(0, +(-(x[22]), +(-(x[22]), y[22])))=TRUE & >=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE & >=(+(-(x[22]), y[22]), x[22])=TRUE ==> COND_ISDIV2(TRUE, x[22], +(-(x[22]), y[22]))_>=_NonInfC & COND_ISDIV2(TRUE, x[22], +(-(x[22]), y[22]))_>=_ISDIV(x[22], +(-(x[22]), +(-(x[22]), y[22]))) & (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) ([-1] + [2]x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) ([-1] + [2]x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) ([-1] + [2]x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We solved constraint (5) using rule (IDP_SMT_SPLIT). 92.73/27.86 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[22] & -(y[25])=y[22] & &&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[22]1 & +(-(x[23]), y[23])=y[22]1 & &&(>=(y[22]1, x[22]1), >(x[22]1, 0))=TRUE & x[22]1=x[23]1 & y[22]1=y[23]1 ==> COND_ISDIV2(TRUE, x[23], y[23])_>=_NonInfC & COND_ISDIV2(TRUE, x[23], y[23])_>=_ISDIV(x[23], +(-(x[23]), y[23])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>(0, y[24])=TRUE & >=(-(y[24]), x[22])=TRUE & >(x[22], 0)=TRUE & >=(+(-(x[22]), -(y[24])), x[22])=TRUE ==> COND_ISDIV2(TRUE, x[22], -(y[24]))_>=_NonInfC & COND_ISDIV2(TRUE, x[22], -(y[24]))_>=_ISDIV(x[22], +(-(x[22]), -(y[24]))) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) ([-1] + [-1]y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) ([-1] + [-1]y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) ([-1] + [-1]y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.86 92.73/27.86 (6) ([-1] + y[24] >= 0 & y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[24] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[22] & -(y[25])=y[22] & &&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[24]1 & +(-(x[23]), y[23])=y[24]1 & >(0, y[24]1)=TRUE & x[24]1=x[25]1 & y[24]1=y[25]1 ==> COND_ISDIV2(TRUE, x[23], y[23])_>=_NonInfC & COND_ISDIV2(TRUE, x[23], y[23])_>=_ISDIV(x[23], +(-(x[23]), y[23])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>(0, y[24])=TRUE & >(0, +(-(x[22]), -(y[24])))=TRUE & >=(-(y[24]), x[22])=TRUE & >(x[22], 0)=TRUE ==> COND_ISDIV2(TRUE, x[22], -(y[24]))_>=_NonInfC & COND_ISDIV2(TRUE, x[22], -(y[24]))_>=_ISDIV(x[22], +(-(x[22]), -(y[24]))) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) ([-1] + [-1]y[24] >= 0 & [-1] + x[22] + y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) ([-1] + [-1]y[24] >= 0 & [-1] + x[22] + y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) ([-1] + [-1]y[24] >= 0 & [-1] + x[22] + y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We solved constraint (5) using rule (IDP_SMT_SPLIT). 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 For Pair ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) the following chains were created: 92.73/27.86 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] ==> ISDIV(x[22], y[22])_>=_NonInfC & ISDIV(x[22], y[22])_>=_COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) & (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> ISDIV(x[22], y[22])_>=_NonInfC & ISDIV(x[22], y[22])_>=_COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) & (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 For Pair COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) the following chains were created: 92.73/27.86 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[24] & +(-(x[23]), y[23])=y[24] & >(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[22]1 & -(y[25])=y[22]1 & &&(>=(y[22]1, x[22]1), >(x[22]1, 0))=TRUE & x[22]1=x[23]1 & y[22]1=y[23]1 ==> COND_ISDIV3(TRUE, x[25], y[25])_>=_NonInfC & COND_ISDIV3(TRUE, x[25], y[25])_>=_ISDIV(x[25], -(y[25])) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>(0, +(-(x[22]), y[22]))=TRUE & >=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE & >=(-(+(-(x[22]), y[22])), x[22])=TRUE ==> COND_ISDIV3(TRUE, x[22], +(-(x[22]), y[22]))_>=_NonInfC & COND_ISDIV3(TRUE, x[22], +(-(x[22]), y[22]))_>=_ISDIV(x[22], -(+(-(x[22]), y[22]))) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) ([-1] + x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-1]y[22] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-3)bni_23]x[22] + [(2)bni_23]y[22] >= 0 & [(-1)bso_24] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) ([-1] + x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-1]y[22] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-3)bni_23]x[22] + [(2)bni_23]y[22] >= 0 & [(-1)bso_24] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) ([-1] + x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-1]y[22] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-3)bni_23]x[22] + [(2)bni_23]y[22] >= 0 & [(-1)bso_24] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We solved constraint (5) using rule (IDP_SMT_SPLIT). 92.73/27.86 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[24] & +(-(x[23]), y[23])=y[24] & >(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[24]1 & -(y[25])=y[24]1 & >(0, y[24]1)=TRUE & x[24]1=x[25]1 & y[24]1=y[25]1 ==> COND_ISDIV3(TRUE, x[25], y[25])_>=_NonInfC & COND_ISDIV3(TRUE, x[25], y[25])_>=_ISDIV(x[25], -(y[25])) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>(0, +(-(x[22]), y[22]))=TRUE & >(0, -(+(-(x[22]), y[22])))=TRUE & >=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> COND_ISDIV3(TRUE, x[22], +(-(x[22]), y[22]))_>=_NonInfC & COND_ISDIV3(TRUE, x[22], +(-(x[22]), y[22]))_>=_ISDIV(x[22], -(+(-(x[22]), y[22]))) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) ([-1] + x[22] + [-1]y[22] >= 0 & [-1] + [-1]x[22] + y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-3)bni_23]x[22] + [(2)bni_23]y[22] >= 0 & [(-1)bso_24] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) ([-1] + x[22] + [-1]y[22] >= 0 & [-1] + [-1]x[22] + y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-3)bni_23]x[22] + [(2)bni_23]y[22] >= 0 & [(-1)bso_24] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) ([-1] + x[22] + [-1]y[22] >= 0 & [-1] + [-1]x[22] + y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-3)bni_23]x[22] + [(2)bni_23]y[22] >= 0 & [(-1)bso_24] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We solved constraint (5) using rule (IDP_SMT_SPLIT). 92.73/27.86 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[24]1 & -(y[25])=y[24]1 & >(0, y[24]1)=TRUE & x[24]1=x[25]1 & y[24]1=y[25]1 & x[25]1=x[22] & -(y[25]1)=y[22] & &&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] ==> COND_ISDIV3(TRUE, x[25]1, y[25]1)_>=_NonInfC & COND_ISDIV3(TRUE, x[25]1, y[25]1)_>=_ISDIV(x[25]1, -(y[25]1)) & (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>(0, y[24])=TRUE & >(0, -(y[24]))=TRUE & >=(-(-(y[24])), x[22])=TRUE & >(x[22], 0)=TRUE ==> COND_ISDIV3(TRUE, x[22], -(y[24]))_>=_NonInfC & COND_ISDIV3(TRUE, x[22], -(y[24]))_>=_ISDIV(x[22], -(-(y[24]))) & (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-2)bni_23]y[24] + [(-1)bni_23]x[22] >= 0 & [(-1)bso_24] + [-2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-2)bni_23]y[24] + [(-1)bni_23]x[22] >= 0 & [(-1)bso_24] + [-2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-2)bni_23]y[24] + [(-1)bni_23]x[22] >= 0 & [(-1)bso_24] + [-2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We solved constraint (5) using rule (IDP_SMT_SPLIT). 92.73/27.86 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) which results in the following constraint: 92.73/27.86 92.73/27.86 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[24]1 & -(y[25])=y[24]1 & >(0, y[24]1)=TRUE & x[24]1=x[25]1 & y[24]1=y[25]1 & x[25]1=x[24]2 & -(y[25]1)=y[24]2 & >(0, y[24]2)=TRUE & x[24]2=x[25]2 & y[24]2=y[25]2 ==> COND_ISDIV3(TRUE, x[25]1, y[25]1)_>=_NonInfC & COND_ISDIV3(TRUE, x[25]1, y[25]1)_>=_ISDIV(x[25]1, -(y[25]1)) & (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.86 92.73/27.86 (2) (>(0, y[24])=TRUE & >(0, -(y[24]))=TRUE & >(0, -(-(y[24])))=TRUE ==> COND_ISDIV3(TRUE, x[24], -(y[24]))_>=_NonInfC & COND_ISDIV3(TRUE, x[24], -(y[24]))_>=_ISDIV(x[24], -(-(y[24]))) & (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=)) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (3) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & [-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-2)bni_23]y[24] + [(-1)bni_23]x[24] >= 0 & [(-1)bso_24] + [-2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.86 92.73/27.86 (4) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & [-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-2)bni_23]y[24] + [(-1)bni_23]x[24] >= 0 & [(-1)bso_24] + [-2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.86 92.73/27.86 (5) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & [-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-2)bni_23]y[24] + [(-1)bni_23]x[24] >= 0 & [(-1)bso_24] + [-2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.86 92.73/27.86 (6) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & [-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_23] = 0 & [(-1)bni_23 + (-1)Bound*bni_23] + [(-2)bni_23]y[24] >= 0 & [(-1)bso_24] + [-2]y[24] >= 0) 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 We solved constraint (6) using rule (IDP_SMT_SPLIT). 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 92.73/27.86 To summarize, we get the following constraints P__>=_ for the following pairs. 92.73/27.86 92.73/27.86 *ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) 92.73/27.87 92.73/27.87 *([-1] + y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_17] = 0 & [(-1)bni_17 + (-1)Bound*bni_17] >= 0 & [(-1)bso_18] + [2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.87 92.73/27.87 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 & [-3]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 *([-1] + y[24] >= 0 & y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[24] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[22] >= 0 & [(-1)bso_20] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.87 92.73/27.87 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 92.73/27.87 92.73/27.87 Using the following integer polynomial ordering the resulting constraints can be solved 92.73/27.87 92.73/27.87 Polynomial interpretation over integers[POLO]: 92.73/27.87 92.73/27.87 POL(TRUE) = 0 92.73/27.87 POL(FALSE) = [1] 92.73/27.87 POL(ISDIV(x_1, x_2)) = [-1] + [-1]x_1 92.73/27.87 POL(COND_ISDIV3(x_1, x_2, x_3)) = [-1] + [2]x_3 + [-1]x_2 92.73/27.87 POL(>(x_1, x_2)) = [1] 92.73/27.87 POL(0) = 0 92.73/27.87 POL(COND_ISDIV2(x_1, x_2, x_3)) = [-1] + [-1]x_2 + [-1]x_1 92.73/27.87 POL(+(x_1, x_2)) = x_1 + x_2 92.73/27.87 POL(-(x_1)) = [-1]x_1 92.73/27.87 POL(&&(x_1, x_2)) = 0 92.73/27.87 POL(>=(x_1, x_2)) = [-1] 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_>: 92.73/27.87 92.73/27.87 92.73/27.87 ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) 92.73/27.87 COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_bound: 92.73/27.87 92.73/27.87 92.73/27.87 COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_>=: 92.73/27.87 92.73/27.87 92.73/27.87 COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.87 ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.87 92.73/27.87 92.73/27.87 At least the following rules have been oriented under context sensitive arithmetic replacement: 92.73/27.87 92.73/27.87 TRUE^1 -> &&(TRUE, TRUE)^1 92.73/27.87 FALSE^1 -> &&(TRUE, FALSE)^1 92.73/27.87 FALSE^1 -> &&(FALSE, TRUE)^1 92.73/27.87 FALSE^1 -> &&(FALSE, FALSE)^1 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (25) 92.73/27.87 Obligation: 92.73/27.87 IDP problem: 92.73/27.87 The following function symbols are pre-defined: 92.73/27.87 <<< 92.73/27.87 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.87 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.87 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.87 / ~ Div: (Integer, Integer) -> Integer 92.73/27.87 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.87 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.87 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.87 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.87 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.87 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.87 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.87 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.87 + ~ Add: (Integer, Integer) -> Integer 92.73/27.87 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.87 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.87 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.87 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.87 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.87 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.87 >>> 92.73/27.87 92.73/27.87 92.73/27.87 The following domains are used: 92.73/27.87 Integer, Boolean 92.73/27.87 92.73/27.87 R is empty. 92.73/27.87 92.73/27.87 The integer pair graph contains the following rules and edges: 92.73/27.87 (24): ISDIV(x[24], y[24]) -> COND_ISDIV3(0 > y[24], x[24], y[24]) 92.73/27.87 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.87 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.87 92.73/27.87 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.87 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.87 (23) -> (24), if (x[23] ->^* x[24] & -(x[23]) + y[23] ->^* y[24]) 92.73/27.87 92.73/27.87 The set Q consists of the following terms: 92.73/27.87 isprime(x0) 92.73/27.87 mem(x0, nil) 92.73/27.87 mem(x0, cons(x1, x2)) 92.73/27.87 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.87 primes(x0) 92.73/27.87 nats(x0, x1) 92.73/27.87 Cond_nats(TRUE, x0, x1) 92.73/27.87 Cond_nats1(TRUE, x0, x1) 92.73/27.87 Cond_nats2(TRUE, x0, x1) 92.73/27.87 sieve(nil) 92.73/27.87 sieve(cons(x0, x1)) 92.73/27.87 filter(x0, nil) 92.73/27.87 filter(x0, cons(x1, x2)) 92.73/27.87 if_1(TRUE, x0, x1, x2) 92.73/27.87 if_2(FALSE, x0, x1, x2) 92.73/27.87 Cond_isdiv(TRUE, x0, 0) 92.73/27.87 isdiv(x0, x1) 92.73/27.87 Cond_isdiv1(TRUE, x0, x1) 92.73/27.87 Cond_isdiv2(TRUE, x0, x1) 92.73/27.87 Cond_isdiv3(TRUE, x0, x1) 92.73/27.87 Cond_isdiv4(TRUE, x0, x1) 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (26) IDependencyGraphProof (EQUIVALENT) 92.73/27.87 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (27) 92.73/27.87 Obligation: 92.73/27.87 IDP problem: 92.73/27.87 The following function symbols are pre-defined: 92.73/27.87 <<< 92.73/27.87 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.87 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.87 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.87 / ~ Div: (Integer, Integer) -> Integer 92.73/27.87 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.87 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.87 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.87 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.87 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.87 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.87 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.87 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.87 + ~ Add: (Integer, Integer) -> Integer 92.73/27.87 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.87 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.87 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.87 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.87 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.87 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.87 >>> 92.73/27.87 92.73/27.87 92.73/27.87 The following domains are used: 92.73/27.87 Boolean, Integer 92.73/27.87 92.73/27.87 R is empty. 92.73/27.87 92.73/27.87 The integer pair graph contains the following rules and edges: 92.73/27.87 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.87 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.87 92.73/27.87 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.87 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.87 92.73/27.87 The set Q consists of the following terms: 92.73/27.87 isprime(x0) 92.73/27.87 mem(x0, nil) 92.73/27.87 mem(x0, cons(x1, x2)) 92.73/27.87 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.87 primes(x0) 92.73/27.87 nats(x0, x1) 92.73/27.87 Cond_nats(TRUE, x0, x1) 92.73/27.87 Cond_nats1(TRUE, x0, x1) 92.73/27.87 Cond_nats2(TRUE, x0, x1) 92.73/27.87 sieve(nil) 92.73/27.87 sieve(cons(x0, x1)) 92.73/27.87 filter(x0, nil) 92.73/27.87 filter(x0, cons(x1, x2)) 92.73/27.87 if_1(TRUE, x0, x1, x2) 92.73/27.87 if_2(FALSE, x0, x1, x2) 92.73/27.87 Cond_isdiv(TRUE, x0, 0) 92.73/27.87 isdiv(x0, x1) 92.73/27.87 Cond_isdiv1(TRUE, x0, x1) 92.73/27.87 Cond_isdiv2(TRUE, x0, x1) 92.73/27.87 Cond_isdiv3(TRUE, x0, x1) 92.73/27.87 Cond_isdiv4(TRUE, x0, x1) 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (28) IDPNonInfProof (SOUND) 92.73/27.87 Used the following options for this NonInfProof: 92.73/27.87 92.73/27.87 IDPGPoloSolver: 92.73/27.87 Range: [(-1,2)] 92.73/27.87 IsNat: false 92.73/27.87 Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@54a124c6 92.73/27.87 Constraint Generator: NonInfConstraintGenerator: 92.73/27.87 PathGenerator: MetricPathGenerator: 92.73/27.87 Max Left Steps: 1 92.73/27.87 Max Right Steps: 1 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 The constraints were generated the following way: 92.73/27.87 92.73/27.87 The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: 92.73/27.87 92.73/27.87 Note that final constraints are written in bold face. 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 For Pair ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) the following chains were created: 92.73/27.87 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] ==> ISDIV(x[22], y[22])_>=_NonInfC & ISDIV(x[22], y[22])_>=_COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) & (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> ISDIV(x[22], y[22])_>=_NonInfC & ISDIV(x[22], y[22])_>=_COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) & (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_13 + (-1)Bound*bni_13] + [(2)bni_13]y[22] >= 0 & [(-1)bso_14] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_13 + (-1)Bound*bni_13] + [(2)bni_13]y[22] >= 0 & [(-1)bso_14] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_13 + (-1)Bound*bni_13] + [(2)bni_13]y[22] >= 0 & [(-1)bso_14] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 For Pair COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) the following chains were created: 92.73/27.87 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[22]1 & +(-(x[23]), y[23])=y[22]1 ==> COND_ISDIV2(TRUE, x[23], y[23])_>=_NonInfC & COND_ISDIV2(TRUE, x[23], y[23])_>=_ISDIV(x[23], +(-(x[23]), y[23])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> COND_ISDIV2(TRUE, x[22], y[22])_>=_NonInfC & COND_ISDIV2(TRUE, x[22], y[22])_>=_ISDIV(x[22], +(-(x[22]), y[22])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_15 + (-1)Bound*bni_15] + [(2)bni_15]y[22] + [(-1)bni_15]x[22] >= 0 & [(-1)bso_16] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_15 + (-1)Bound*bni_15] + [(2)bni_15]y[22] + [(-1)bni_15]x[22] >= 0 & [(-1)bso_16] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_15 + (-1)Bound*bni_15] + [(2)bni_15]y[22] + [(-1)bni_15]x[22] >= 0 & [(-1)bso_16] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 To summarize, we get the following constraints P__>=_ for the following pairs. 92.73/27.87 92.73/27.87 *ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.87 92.73/27.87 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_13 + (-1)Bound*bni_13] + [(2)bni_13]y[22] >= 0 & [(-1)bso_14] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.87 92.73/27.87 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_15 + (-1)Bound*bni_15] + [(2)bni_15]y[22] + [(-1)bni_15]x[22] >= 0 & [(-1)bso_16] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 92.73/27.87 92.73/27.87 Using the following integer polynomial ordering the resulting constraints can be solved 92.73/27.87 92.73/27.87 Polynomial interpretation over integers[POLO]: 92.73/27.87 92.73/27.87 POL(TRUE) = 0 92.73/27.87 POL(FALSE) = [2] 92.73/27.87 POL(ISDIV(x_1, x_2)) = [-1] + [2]x_2 92.73/27.87 POL(COND_ISDIV2(x_1, x_2, x_3)) = [-1] + [2]x_3 + [-1]x_2 + [-1]x_1 92.73/27.87 POL(&&(x_1, x_2)) = 0 92.73/27.87 POL(>=(x_1, x_2)) = [-1] 92.73/27.87 POL(>(x_1, x_2)) = [-1] 92.73/27.87 POL(0) = 0 92.73/27.87 POL(+(x_1, x_2)) = x_1 + x_2 92.73/27.87 POL(-(x_1)) = [-1]x_1 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_>: 92.73/27.87 92.73/27.87 92.73/27.87 ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.87 COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_bound: 92.73/27.87 92.73/27.87 92.73/27.87 ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.87 COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_>=: 92.73/27.87 92.73/27.87 none 92.73/27.87 92.73/27.87 92.73/27.87 At least the following rules have been oriented under context sensitive arithmetic replacement: 92.73/27.87 92.73/27.87 TRUE^1 -> &&(TRUE, TRUE)^1 92.73/27.87 FALSE^1 -> &&(TRUE, FALSE)^1 92.73/27.87 FALSE^1 -> &&(FALSE, TRUE)^1 92.73/27.87 FALSE^1 -> &&(FALSE, FALSE)^1 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (29) 92.73/27.87 Obligation: 92.73/27.87 IDP problem: 92.73/27.87 The following function symbols are pre-defined: 92.73/27.87 <<< 92.73/27.87 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.87 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.87 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.87 / ~ Div: (Integer, Integer) -> Integer 92.73/27.87 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.87 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.87 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.87 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.87 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.87 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.87 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.87 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.87 + ~ Add: (Integer, Integer) -> Integer 92.73/27.87 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.87 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.87 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.87 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.87 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.87 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.87 >>> 92.73/27.87 92.73/27.87 92.73/27.87 The following domains are used: 92.73/27.87 none 92.73/27.87 92.73/27.87 R is empty. 92.73/27.87 92.73/27.87 The integer pair graph is empty. 92.73/27.87 92.73/27.87 The set Q consists of the following terms: 92.73/27.87 isprime(x0) 92.73/27.87 mem(x0, nil) 92.73/27.87 mem(x0, cons(x1, x2)) 92.73/27.87 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.87 primes(x0) 92.73/27.87 nats(x0, x1) 92.73/27.87 Cond_nats(TRUE, x0, x1) 92.73/27.87 Cond_nats1(TRUE, x0, x1) 92.73/27.87 Cond_nats2(TRUE, x0, x1) 92.73/27.87 sieve(nil) 92.73/27.87 sieve(cons(x0, x1)) 92.73/27.87 filter(x0, nil) 92.73/27.87 filter(x0, cons(x1, x2)) 92.73/27.87 if_1(TRUE, x0, x1, x2) 92.73/27.87 if_2(FALSE, x0, x1, x2) 92.73/27.87 Cond_isdiv(TRUE, x0, 0) 92.73/27.87 isdiv(x0, x1) 92.73/27.87 Cond_isdiv1(TRUE, x0, x1) 92.73/27.87 Cond_isdiv2(TRUE, x0, x1) 92.73/27.87 Cond_isdiv3(TRUE, x0, x1) 92.73/27.87 Cond_isdiv4(TRUE, x0, x1) 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (30) PisEmptyProof (EQUIVALENT) 92.73/27.87 The TRS P is empty. Hence, there is no (P,Q,R) chain. 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (31) 92.73/27.87 YES 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (32) 92.73/27.87 Obligation: 92.73/27.87 IDP problem: 92.73/27.87 The following function symbols are pre-defined: 92.73/27.87 <<< 92.73/27.87 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.87 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.87 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.87 / ~ Div: (Integer, Integer) -> Integer 92.73/27.87 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.87 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.87 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.87 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.87 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.87 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.87 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.87 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.87 + ~ Add: (Integer, Integer) -> Integer 92.73/27.87 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.87 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.87 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.87 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.87 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.87 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.87 >>> 92.73/27.87 92.73/27.87 92.73/27.87 The following domains are used: 92.73/27.87 Integer, Boolean 92.73/27.87 92.73/27.87 R is empty. 92.73/27.87 92.73/27.87 The integer pair graph contains the following rules and edges: 92.73/27.87 (27): COND_ISDIV4(TRUE, x[27], y[27]) -> ISDIV(-(x[27]), y[27]) 92.73/27.87 (25): COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.87 (24): ISDIV(x[24], y[24]) -> COND_ISDIV3(0 > y[24], x[24], y[24]) 92.73/27.87 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.87 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.87 92.73/27.87 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.87 (25) -> (22), if (x[25] ->^* x[22] & -(y[25]) ->^* y[22]) 92.73/27.87 (27) -> (22), if (-(x[27]) ->^* x[22] & y[27] ->^* y[22]) 92.73/27.87 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.87 (23) -> (24), if (x[23] ->^* x[24] & -(x[23]) + y[23] ->^* y[24]) 92.73/27.87 (25) -> (24), if (x[25] ->^* x[24] & -(y[25]) ->^* y[24]) 92.73/27.87 (27) -> (24), if (-(x[27]) ->^* x[24] & y[27] ->^* y[24]) 92.73/27.87 (24) -> (25), if (0 > y[24] & x[24] ->^* x[25] & y[24] ->^* y[25]) 92.73/27.87 92.73/27.87 The set Q consists of the following terms: 92.73/27.87 isprime(x0) 92.73/27.87 mem(x0, nil) 92.73/27.87 mem(x0, cons(x1, x2)) 92.73/27.87 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.87 primes(x0) 92.73/27.87 nats(x0, x1) 92.73/27.87 Cond_nats(TRUE, x0, x1) 92.73/27.87 Cond_nats1(TRUE, x0, x1) 92.73/27.87 Cond_nats2(TRUE, x0, x1) 92.73/27.87 sieve(nil) 92.73/27.87 sieve(cons(x0, x1)) 92.73/27.87 filter(x0, nil) 92.73/27.87 filter(x0, cons(x1, x2)) 92.73/27.87 if_1(TRUE, x0, x1, x2) 92.73/27.87 if_2(FALSE, x0, x1, x2) 92.73/27.87 Cond_isdiv(TRUE, x0, 0) 92.73/27.87 isdiv(x0, x1) 92.73/27.87 Cond_isdiv1(TRUE, x0, x1) 92.73/27.87 Cond_isdiv2(TRUE, x0, x1) 92.73/27.87 Cond_isdiv3(TRUE, x0, x1) 92.73/27.87 Cond_isdiv4(TRUE, x0, x1) 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (33) IDependencyGraphProof (EQUIVALENT) 92.73/27.87 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (34) 92.73/27.87 Obligation: 92.73/27.87 IDP problem: 92.73/27.87 The following function symbols are pre-defined: 92.73/27.87 <<< 92.73/27.87 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.87 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.87 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.87 / ~ Div: (Integer, Integer) -> Integer 92.73/27.87 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.87 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.87 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.87 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.87 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.87 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.87 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.87 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.87 + ~ Add: (Integer, Integer) -> Integer 92.73/27.87 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.87 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.87 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.87 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.87 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.87 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.87 >>> 92.73/27.87 92.73/27.87 92.73/27.87 The following domains are used: 92.73/27.87 Integer, Boolean 92.73/27.87 92.73/27.87 R is empty. 92.73/27.87 92.73/27.87 The integer pair graph contains the following rules and edges: 92.73/27.87 (25): COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.87 (24): ISDIV(x[24], y[24]) -> COND_ISDIV3(0 > y[24], x[24], y[24]) 92.73/27.87 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.87 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.87 92.73/27.87 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.87 (25) -> (22), if (x[25] ->^* x[22] & -(y[25]) ->^* y[22]) 92.73/27.87 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.87 (23) -> (24), if (x[23] ->^* x[24] & -(x[23]) + y[23] ->^* y[24]) 92.73/27.87 (25) -> (24), if (x[25] ->^* x[24] & -(y[25]) ->^* y[24]) 92.73/27.87 (24) -> (25), if (0 > y[24] & x[24] ->^* x[25] & y[24] ->^* y[25]) 92.73/27.87 92.73/27.87 The set Q consists of the following terms: 92.73/27.87 isprime(x0) 92.73/27.87 mem(x0, nil) 92.73/27.87 mem(x0, cons(x1, x2)) 92.73/27.87 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.87 primes(x0) 92.73/27.87 nats(x0, x1) 92.73/27.87 Cond_nats(TRUE, x0, x1) 92.73/27.87 Cond_nats1(TRUE, x0, x1) 92.73/27.87 Cond_nats2(TRUE, x0, x1) 92.73/27.87 sieve(nil) 92.73/27.87 sieve(cons(x0, x1)) 92.73/27.87 filter(x0, nil) 92.73/27.87 filter(x0, cons(x1, x2)) 92.73/27.87 if_1(TRUE, x0, x1, x2) 92.73/27.87 if_2(FALSE, x0, x1, x2) 92.73/27.87 Cond_isdiv(TRUE, x0, 0) 92.73/27.87 isdiv(x0, x1) 92.73/27.87 Cond_isdiv1(TRUE, x0, x1) 92.73/27.87 Cond_isdiv2(TRUE, x0, x1) 92.73/27.87 Cond_isdiv3(TRUE, x0, x1) 92.73/27.87 Cond_isdiv4(TRUE, x0, x1) 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (35) IDPNonInfProof (SOUND) 92.73/27.87 Used the following options for this NonInfProof: 92.73/27.87 92.73/27.87 IDPGPoloSolver: 92.73/27.87 Range: [(-1,2)] 92.73/27.87 IsNat: false 92.73/27.87 Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@1fec38b 92.73/27.87 Constraint Generator: NonInfConstraintGenerator: 92.73/27.87 PathGenerator: MetricPathGenerator: 92.73/27.87 Max Left Steps: 3 92.73/27.87 Max Right Steps: 2 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 The constraints were generated the following way: 92.73/27.87 92.73/27.87 The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: 92.73/27.87 92.73/27.87 Note that final constraints are written in bold face. 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 For Pair COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) the following chains were created: 92.73/27.87 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[24] & +(-(x[23]), y[23])=y[24] & >(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[22]1 & -(y[25])=y[22]1 & &&(>=(y[22]1, x[22]1), >(x[22]1, 0))=TRUE & x[22]1=x[23]1 & y[22]1=y[23]1 ==> COND_ISDIV3(TRUE, x[25], y[25])_>=_NonInfC & COND_ISDIV3(TRUE, x[25], y[25])_>=_ISDIV(x[25], -(y[25])) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>(0, +(-(x[22]), y[22]))=TRUE & >=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE & >=(-(+(-(x[22]), y[22])), x[22])=TRUE ==> COND_ISDIV3(TRUE, x[22], +(-(x[22]), y[22]))_>=_NonInfC & COND_ISDIV3(TRUE, x[22], +(-(x[22]), y[22]))_>=_ISDIV(x[22], -(+(-(x[22]), y[22]))) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) ([-1] + x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-1]y[22] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-3)bni_17]x[22] + [(2)bni_17]y[22] >= 0 & [(-1)bso_18] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) ([-1] + x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-1]y[22] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-3)bni_17]x[22] + [(2)bni_17]y[22] >= 0 & [(-1)bso_18] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) ([-1] + x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-1]y[22] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-3)bni_17]x[22] + [(2)bni_17]y[22] >= 0 & [(-1)bso_18] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We solved constraint (5) using rule (IDP_SMT_SPLIT). 92.73/27.87 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[24] & +(-(x[23]), y[23])=y[24] & >(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[24]1 & -(y[25])=y[24]1 & >(0, y[24]1)=TRUE & x[24]1=x[25]1 & y[24]1=y[25]1 ==> COND_ISDIV3(TRUE, x[25], y[25])_>=_NonInfC & COND_ISDIV3(TRUE, x[25], y[25])_>=_ISDIV(x[25], -(y[25])) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>(0, +(-(x[22]), y[22]))=TRUE & >(0, -(+(-(x[22]), y[22])))=TRUE & >=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> COND_ISDIV3(TRUE, x[22], +(-(x[22]), y[22]))_>=_NonInfC & COND_ISDIV3(TRUE, x[22], +(-(x[22]), y[22]))_>=_ISDIV(x[22], -(+(-(x[22]), y[22]))) & (U^Increasing(ISDIV(x[25], -(y[25]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) ([-1] + x[22] + [-1]y[22] >= 0 & [-1] + [-1]x[22] + y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-3)bni_17]x[22] + [(2)bni_17]y[22] >= 0 & [(-1)bso_18] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) ([-1] + x[22] + [-1]y[22] >= 0 & [-1] + [-1]x[22] + y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-3)bni_17]x[22] + [(2)bni_17]y[22] >= 0 & [(-1)bso_18] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) ([-1] + x[22] + [-1]y[22] >= 0 & [-1] + [-1]x[22] + y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25], -(y[25]))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-3)bni_17]x[22] + [(2)bni_17]y[22] >= 0 & [(-1)bso_18] + [-2]x[22] + [2]y[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We solved constraint (5) using rule (IDP_SMT_SPLIT). 92.73/27.87 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[24]1 & -(y[25])=y[24]1 & >(0, y[24]1)=TRUE & x[24]1=x[25]1 & y[24]1=y[25]1 & x[25]1=x[22] & -(y[25]1)=y[22] & &&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] ==> COND_ISDIV3(TRUE, x[25]1, y[25]1)_>=_NonInfC & COND_ISDIV3(TRUE, x[25]1, y[25]1)_>=_ISDIV(x[25]1, -(y[25]1)) & (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>(0, y[24])=TRUE & >(0, -(y[24]))=TRUE & >=(-(-(y[24])), x[22])=TRUE & >(x[22], 0)=TRUE ==> COND_ISDIV3(TRUE, x[22], -(y[24]))_>=_NonInfC & COND_ISDIV3(TRUE, x[22], -(y[24]))_>=_ISDIV(x[22], -(-(y[24]))) & (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-2)bni_17]y[24] + [(-1)bni_17]x[22] >= 0 & [(-1)bso_18] + [-2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-2)bni_17]y[24] + [(-1)bni_17]x[22] >= 0 & [(-1)bso_18] + [-2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-2)bni_17]y[24] + [(-1)bni_17]x[22] >= 0 & [(-1)bso_18] + [-2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We solved constraint (5) using rule (IDP_SMT_SPLIT). 92.73/27.87 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[24]1 & -(y[25])=y[24]1 & >(0, y[24]1)=TRUE & x[24]1=x[25]1 & y[24]1=y[25]1 & x[25]1=x[24]2 & -(y[25]1)=y[24]2 & >(0, y[24]2)=TRUE & x[24]2=x[25]2 & y[24]2=y[25]2 ==> COND_ISDIV3(TRUE, x[25]1, y[25]1)_>=_NonInfC & COND_ISDIV3(TRUE, x[25]1, y[25]1)_>=_ISDIV(x[25]1, -(y[25]1)) & (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>(0, y[24])=TRUE & >(0, -(y[24]))=TRUE & >(0, -(-(y[24])))=TRUE ==> COND_ISDIV3(TRUE, x[24], -(y[24]))_>=_NonInfC & COND_ISDIV3(TRUE, x[24], -(y[24]))_>=_ISDIV(x[24], -(-(y[24]))) & (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & [-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-2)bni_17]y[24] + [(-1)bni_17]x[24] >= 0 & [(-1)bso_18] + [-2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & [-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-2)bni_17]y[24] + [(-1)bni_17]x[24] >= 0 & [(-1)bso_18] + [-2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & [-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_17 + (-1)Bound*bni_17] + [(-2)bni_17]y[24] + [(-1)bni_17]x[24] >= 0 & [(-1)bso_18] + [-2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (6) ([-1] + [-1]y[24] >= 0 & [-1] + y[24] >= 0 & [-1] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[25]1, -(y[25]1))), >=) & [(-1)bni_17] = 0 & [(-1)bni_17 + (-1)Bound*bni_17] + [(-2)bni_17]y[24] >= 0 & [(-1)bso_18] + [-2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We solved constraint (6) using rule (IDP_SMT_SPLIT). 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 For Pair ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) the following chains were created: 92.73/27.87 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] ==> ISDIV(x[24], y[24])_>=_NonInfC & ISDIV(x[24], y[24])_>=_COND_ISDIV3(>(0, y[24]), x[24], y[24]) & (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rule (IV) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>(0, y[24])=TRUE ==> ISDIV(x[24], y[24])_>=_NonInfC & ISDIV(x[24], y[24])_>=_COND_ISDIV3(>(0, y[24]), x[24], y[24]) & (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[24] >= 0 & [(-1)bso_20] + [-2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[24] >= 0 & [(-1)bso_20] + [-2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]x[24] >= 0 & [(-1)bso_20] + [-2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (6) ([-1] + [-1]y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_19] = 0 & [(-1)bni_19 + (-1)Bound*bni_19] >= 0 & [(-1)bso_20] + [-2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.87 92.73/27.87 (7) ([-1] + y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_19] = 0 & [(-1)bni_19 + (-1)Bound*bni_19] >= 0 & [(-1)bso_20] + [2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 For Pair COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) the following chains were created: 92.73/27.87 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[22]1 & +(-(x[23]), y[23])=y[22]1 & &&(>=(y[22]1, x[22]1), >(x[22]1, 0))=TRUE & x[22]1=x[23]1 & y[22]1=y[23]1 & x[23]1=x[22]2 & +(-(x[23]1), y[23]1)=y[22]2 & &&(>=(y[22]2, x[22]2), >(x[22]2, 0))=TRUE & x[22]2=x[23]2 & y[22]2=y[23]2 ==> COND_ISDIV2(TRUE, x[23]1, y[23]1)_>=_NonInfC & COND_ISDIV2(TRUE, x[23]1, y[23]1)_>=_ISDIV(x[23]1, +(-(x[23]1), y[23]1)) & (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE & >=(+(-(x[22]), y[22]), x[22])=TRUE & >=(+(-(x[22]), +(-(x[22]), y[22])), x[22])=TRUE ==> COND_ISDIV2(TRUE, x[22], +(-(x[22]), y[22]))_>=_NonInfC & COND_ISDIV2(TRUE, x[22], +(-(x[22]), y[22]))_>=_ISDIV(x[22], +(-(x[22]), +(-(x[22]), y[22]))) & (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 & [-3]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 & [-3]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 & [-3]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[22]1 & +(-(x[23]), y[23])=y[22]1 & &&(>=(y[22]1, x[22]1), >(x[22]1, 0))=TRUE & x[22]1=x[23]1 & y[22]1=y[23]1 & x[23]1=x[24] & +(-(x[23]1), y[23]1)=y[24] & >(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] ==> COND_ISDIV2(TRUE, x[23]1, y[23]1)_>=_NonInfC & COND_ISDIV2(TRUE, x[23]1, y[23]1)_>=_ISDIV(x[23]1, +(-(x[23]1), y[23]1)) & (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>(0, +(-(x[22]), +(-(x[22]), y[22])))=TRUE & >=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE & >=(+(-(x[22]), y[22]), x[22])=TRUE ==> COND_ISDIV2(TRUE, x[22], +(-(x[22]), y[22]))_>=_NonInfC & COND_ISDIV2(TRUE, x[22], +(-(x[22]), y[22]))_>=_ISDIV(x[22], +(-(x[22]), +(-(x[22]), y[22]))) & (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) ([-1] + [2]x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) ([-1] + [2]x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) ([-1] + [2]x[22] + [-1]y[22] >= 0 & y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We solved constraint (5) using rule (IDP_SMT_SPLIT). 92.73/27.87 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[22] & -(y[25])=y[22] & &&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[22]1 & +(-(x[23]), y[23])=y[22]1 & &&(>=(y[22]1, x[22]1), >(x[22]1, 0))=TRUE & x[22]1=x[23]1 & y[22]1=y[23]1 ==> COND_ISDIV2(TRUE, x[23], y[23])_>=_NonInfC & COND_ISDIV2(TRUE, x[23], y[23])_>=_ISDIV(x[23], +(-(x[23]), y[23])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>(0, y[24])=TRUE & >=(-(y[24]), x[22])=TRUE & >(x[22], 0)=TRUE & >=(+(-(x[22]), -(y[24])), x[22])=TRUE ==> COND_ISDIV2(TRUE, x[22], -(y[24]))_>=_NonInfC & COND_ISDIV2(TRUE, x[22], -(y[24]))_>=_ISDIV(x[22], +(-(x[22]), -(y[24]))) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) ([-1] + [-1]y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) ([-1] + [-1]y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) ([-1] + [-1]y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + [-1]y[24] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.73/27.87 92.73/27.87 (6) ([-1] + y[24] >= 0 & y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[24] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *We consider the chain ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]), COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (>(0, y[24])=TRUE & x[24]=x[25] & y[24]=y[25] & x[25]=x[22] & -(y[25])=y[22] & &&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[24]1 & +(-(x[23]), y[23])=y[24]1 & >(0, y[24]1)=TRUE & x[24]1=x[25]1 & y[24]1=y[25]1 ==> COND_ISDIV2(TRUE, x[23], y[23])_>=_NonInfC & COND_ISDIV2(TRUE, x[23], y[23])_>=_ISDIV(x[23], +(-(x[23]), y[23])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>(0, y[24])=TRUE & >(0, +(-(x[22]), -(y[24])))=TRUE & >=(-(y[24]), x[22])=TRUE & >(x[22], 0)=TRUE ==> COND_ISDIV2(TRUE, x[22], -(y[24]))_>=_NonInfC & COND_ISDIV2(TRUE, x[22], -(y[24]))_>=_ISDIV(x[22], +(-(x[22]), -(y[24]))) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) ([-1] + [-1]y[24] >= 0 & [-1] + x[22] + y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) ([-1] + [-1]y[24] >= 0 & [-1] + x[22] + y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) ([-1] + [-1]y[24] >= 0 & [-1] + x[22] + y[24] >= 0 & [-1]y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We solved constraint (5) using rule (IDP_SMT_SPLIT). 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 For Pair ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) the following chains were created: 92.73/27.87 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] ==> ISDIV(x[22], y[22])_>=_NonInfC & ISDIV(x[22], y[22])_>=_COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) & (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> ISDIV(x[22], y[22])_>=_NonInfC & ISDIV(x[22], y[22])_>=_COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) & (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x[22] >= 0 & [(-1)bso_24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x[22] >= 0 & [(-1)bso_24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x[22] >= 0 & [(-1)bso_24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 To summarize, we get the following constraints P__>=_ for the following pairs. 92.73/27.87 92.73/27.87 *COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) 92.73/27.87 92.73/27.87 *([-1] + y[24] >= 0 ==> (U^Increasing(COND_ISDIV3(>(0, y[24]), x[24], y[24])), >=) & [(-1)bni_19] = 0 & [(-1)bni_19 + (-1)Bound*bni_19] >= 0 & [(-1)bso_20] + [2]y[24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.87 92.73/27.87 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[22] >= 0 & [-3]x[22] + y[22] >= 0 ==> (U^Increasing(ISDIV(x[23]1, +(-(x[23]1), y[23]1))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 *([-1] + y[24] >= 0 & y[24] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 & [-2]x[22] + y[24] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)bni_21 + (-1)Bound*bni_21] + [(-1)bni_21]x[22] >= 0 & [(-1)bso_22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.87 92.73/27.87 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_23 + (-1)Bound*bni_23] + [(-1)bni_23]x[22] >= 0 & [(-1)bso_24] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 92.73/27.87 92.73/27.87 Using the following integer polynomial ordering the resulting constraints can be solved 92.73/27.87 92.73/27.87 Polynomial interpretation over integers[POLO]: 92.73/27.87 92.73/27.87 POL(TRUE) = 0 92.73/27.87 POL(FALSE) = [1] 92.73/27.87 POL(COND_ISDIV3(x_1, x_2, x_3)) = [-1] + [2]x_3 + [-1]x_2 92.73/27.87 POL(ISDIV(x_1, x_2)) = [-1] + [-1]x_1 92.73/27.87 POL(-(x_1)) = [-1]x_1 92.73/27.87 POL(>(x_1, x_2)) = [-1] 92.73/27.87 POL(0) = 0 92.73/27.87 POL(COND_ISDIV2(x_1, x_2, x_3)) = [-1] + [-1]x_2 92.73/27.87 POL(+(x_1, x_2)) = x_1 + x_2 92.73/27.87 POL(&&(x_1, x_2)) = [-1] 92.73/27.87 POL(>=(x_1, x_2)) = [-1] 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_>: 92.73/27.87 92.73/27.87 92.73/27.87 COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.87 ISDIV(x[24], y[24]) -> COND_ISDIV3(>(0, y[24]), x[24], y[24]) 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_bound: 92.73/27.87 92.73/27.87 92.73/27.87 COND_ISDIV3(TRUE, x[25], y[25]) -> ISDIV(x[25], -(y[25])) 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_>=: 92.73/27.87 92.73/27.87 92.73/27.87 COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.87 ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.87 92.73/27.87 92.73/27.87 At least the following rules have been oriented under context sensitive arithmetic replacement: 92.73/27.87 92.73/27.87 TRUE^1 -> &&(TRUE, TRUE)^1 92.73/27.87 FALSE^1 -> &&(FALSE, TRUE)^1 92.73/27.87 FALSE^1 -> &&(FALSE, FALSE)^1 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (36) 92.73/27.87 Obligation: 92.73/27.87 IDP problem: 92.73/27.87 The following function symbols are pre-defined: 92.73/27.87 <<< 92.73/27.87 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.87 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.87 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.87 / ~ Div: (Integer, Integer) -> Integer 92.73/27.87 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.87 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.87 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.87 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.87 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.87 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.87 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.87 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.87 + ~ Add: (Integer, Integer) -> Integer 92.73/27.87 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.87 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.87 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.87 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.87 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.87 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.87 >>> 92.73/27.87 92.73/27.87 92.73/27.87 The following domains are used: 92.73/27.87 Integer, Boolean 92.73/27.87 92.73/27.87 R is empty. 92.73/27.87 92.73/27.87 The integer pair graph contains the following rules and edges: 92.73/27.87 (24): ISDIV(x[24], y[24]) -> COND_ISDIV3(0 > y[24], x[24], y[24]) 92.73/27.87 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.87 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.87 92.73/27.87 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.87 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.87 (23) -> (24), if (x[23] ->^* x[24] & -(x[23]) + y[23] ->^* y[24]) 92.73/27.87 92.73/27.87 The set Q consists of the following terms: 92.73/27.87 isprime(x0) 92.73/27.87 mem(x0, nil) 92.73/27.87 mem(x0, cons(x1, x2)) 92.73/27.87 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.87 primes(x0) 92.73/27.87 nats(x0, x1) 92.73/27.87 Cond_nats(TRUE, x0, x1) 92.73/27.87 Cond_nats1(TRUE, x0, x1) 92.73/27.87 Cond_nats2(TRUE, x0, x1) 92.73/27.87 sieve(nil) 92.73/27.87 sieve(cons(x0, x1)) 92.73/27.87 filter(x0, nil) 92.73/27.87 filter(x0, cons(x1, x2)) 92.73/27.87 if_1(TRUE, x0, x1, x2) 92.73/27.87 if_2(FALSE, x0, x1, x2) 92.73/27.87 Cond_isdiv(TRUE, x0, 0) 92.73/27.87 isdiv(x0, x1) 92.73/27.87 Cond_isdiv1(TRUE, x0, x1) 92.73/27.87 Cond_isdiv2(TRUE, x0, x1) 92.73/27.87 Cond_isdiv3(TRUE, x0, x1) 92.73/27.87 Cond_isdiv4(TRUE, x0, x1) 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (37) IDependencyGraphProof (EQUIVALENT) 92.73/27.87 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (38) 92.73/27.87 Obligation: 92.73/27.87 IDP problem: 92.73/27.87 The following function symbols are pre-defined: 92.73/27.87 <<< 92.73/27.87 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.87 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.87 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.87 / ~ Div: (Integer, Integer) -> Integer 92.73/27.87 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.87 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.87 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.87 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.87 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.87 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.87 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.87 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.87 + ~ Add: (Integer, Integer) -> Integer 92.73/27.87 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.87 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.87 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.87 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.87 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.87 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.87 >>> 92.73/27.87 92.73/27.87 92.73/27.87 The following domains are used: 92.73/27.87 Boolean, Integer 92.73/27.87 92.73/27.87 R is empty. 92.73/27.87 92.73/27.87 The integer pair graph contains the following rules and edges: 92.73/27.87 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.87 (23): COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], -(x[23]) + y[23]) 92.73/27.87 92.73/27.87 (23) -> (22), if (x[23] ->^* x[22] & -(x[23]) + y[23] ->^* y[22]) 92.73/27.87 (22) -> (23), if (y[22] >= x[22] && x[22] > 0 & x[22] ->^* x[23] & y[22] ->^* y[23]) 92.73/27.87 92.73/27.87 The set Q consists of the following terms: 92.73/27.87 isprime(x0) 92.73/27.87 mem(x0, nil) 92.73/27.87 mem(x0, cons(x1, x2)) 92.73/27.87 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.87 primes(x0) 92.73/27.87 nats(x0, x1) 92.73/27.87 Cond_nats(TRUE, x0, x1) 92.73/27.87 Cond_nats1(TRUE, x0, x1) 92.73/27.87 Cond_nats2(TRUE, x0, x1) 92.73/27.87 sieve(nil) 92.73/27.87 sieve(cons(x0, x1)) 92.73/27.87 filter(x0, nil) 92.73/27.87 filter(x0, cons(x1, x2)) 92.73/27.87 if_1(TRUE, x0, x1, x2) 92.73/27.87 if_2(FALSE, x0, x1, x2) 92.73/27.87 Cond_isdiv(TRUE, x0, 0) 92.73/27.87 isdiv(x0, x1) 92.73/27.87 Cond_isdiv1(TRUE, x0, x1) 92.73/27.87 Cond_isdiv2(TRUE, x0, x1) 92.73/27.87 Cond_isdiv3(TRUE, x0, x1) 92.73/27.87 Cond_isdiv4(TRUE, x0, x1) 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (39) IDPNonInfProof (SOUND) 92.73/27.87 Used the following options for this NonInfProof: 92.73/27.87 92.73/27.87 IDPGPoloSolver: 92.73/27.87 Range: [(-1,2)] 92.73/27.87 IsNat: false 92.73/27.87 Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@54a124c6 92.73/27.87 Constraint Generator: NonInfConstraintGenerator: 92.73/27.87 PathGenerator: MetricPathGenerator: 92.73/27.87 Max Left Steps: 1 92.73/27.87 Max Right Steps: 1 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 The constraints were generated the following way: 92.73/27.87 92.73/27.87 The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: 92.73/27.87 92.73/27.87 Note that final constraints are written in bold face. 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 For Pair ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) the following chains were created: 92.73/27.87 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] ==> ISDIV(x[22], y[22])_>=_NonInfC & ISDIV(x[22], y[22])_>=_COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) & (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> ISDIV(x[22], y[22])_>=_NonInfC & ISDIV(x[22], y[22])_>=_COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) & (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_13 + (-1)Bound*bni_13] + [(2)bni_13]y[22] >= 0 & [-1 + (-1)bso_14] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_13 + (-1)Bound*bni_13] + [(2)bni_13]y[22] >= 0 & [-1 + (-1)bso_14] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_13 + (-1)Bound*bni_13] + [(2)bni_13]y[22] >= 0 & [-1 + (-1)bso_14] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 For Pair COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) the following chains were created: 92.73/27.87 *We consider the chain ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]), COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])), ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (&&(>=(y[22], x[22]), >(x[22], 0))=TRUE & x[22]=x[23] & y[22]=y[23] & x[23]=x[22]1 & +(-(x[23]), y[23])=y[22]1 ==> COND_ISDIV2(TRUE, x[23], y[23])_>=_NonInfC & COND_ISDIV2(TRUE, x[23], y[23])_>=_ISDIV(x[23], +(-(x[23]), y[23])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (>=(y[22], x[22])=TRUE & >(x[22], 0)=TRUE ==> COND_ISDIV2(TRUE, x[22], y[22])_>=_NonInfC & COND_ISDIV2(TRUE, x[22], y[22])_>=_ISDIV(x[22], +(-(x[22]), y[22])) & (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)Bound*bni_15] + [(2)bni_15]y[22] + [(-1)bni_15]x[22] >= 0 & [1 + (-1)bso_16] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)Bound*bni_15] + [(2)bni_15]y[22] + [(-1)bni_15]x[22] >= 0 & [1 + (-1)bso_16] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) (y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)Bound*bni_15] + [(2)bni_15]y[22] + [(-1)bni_15]x[22] >= 0 & [1 + (-1)bso_16] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 To summarize, we get the following constraints P__>=_ for the following pairs. 92.73/27.87 92.73/27.87 *ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.87 92.73/27.87 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22])), >=) & [(-1)bni_13 + (-1)Bound*bni_13] + [(2)bni_13]y[22] >= 0 & [-1 + (-1)bso_14] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.87 92.73/27.87 *(y[22] + [-1]x[22] >= 0 & x[22] + [-1] >= 0 ==> (U^Increasing(ISDIV(x[23], +(-(x[23]), y[23]))), >=) & [(-1)Bound*bni_15] + [(2)bni_15]y[22] + [(-1)bni_15]x[22] >= 0 & [1 + (-1)bso_16] + x[22] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 92.73/27.87 92.73/27.87 Using the following integer polynomial ordering the resulting constraints can be solved 92.73/27.87 92.73/27.87 Polynomial interpretation over integers[POLO]: 92.73/27.87 92.73/27.87 POL(TRUE) = 0 92.73/27.87 POL(FALSE) = [1] 92.73/27.87 POL(ISDIV(x_1, x_2)) = [-1] + [2]x_2 92.73/27.87 POL(COND_ISDIV2(x_1, x_2, x_3)) = [2]x_3 + [-1]x_2 92.73/27.87 POL(&&(x_1, x_2)) = [-1] 92.73/27.87 POL(>=(x_1, x_2)) = [-1] 92.73/27.87 POL(>(x_1, x_2)) = [-1] 92.73/27.87 POL(0) = 0 92.73/27.87 POL(+(x_1, x_2)) = x_1 + x_2 92.73/27.87 POL(-(x_1)) = [-1]x_1 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_>: 92.73/27.87 92.73/27.87 92.73/27.87 COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_bound: 92.73/27.87 92.73/27.87 92.73/27.87 ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.87 COND_ISDIV2(TRUE, x[23], y[23]) -> ISDIV(x[23], +(-(x[23]), y[23])) 92.73/27.87 92.73/27.87 92.73/27.87 The following pairs are in P_>=: 92.73/27.87 92.73/27.87 92.73/27.87 ISDIV(x[22], y[22]) -> COND_ISDIV2(&&(>=(y[22], x[22]), >(x[22], 0)), x[22], y[22]) 92.73/27.87 92.73/27.87 92.73/27.87 At least the following rules have been oriented under context sensitive arithmetic replacement: 92.73/27.87 92.73/27.87 TRUE^1 -> &&(TRUE, TRUE)^1 92.73/27.87 FALSE^1 -> &&(TRUE, FALSE)^1 92.73/27.87 FALSE^1 -> &&(FALSE, TRUE)^1 92.73/27.87 FALSE^1 -> &&(FALSE, FALSE)^1 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (40) 92.73/27.87 Obligation: 92.73/27.87 IDP problem: 92.73/27.87 The following function symbols are pre-defined: 92.73/27.87 <<< 92.73/27.87 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.87 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.87 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.87 / ~ Div: (Integer, Integer) -> Integer 92.73/27.87 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.87 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.87 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.87 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.87 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.87 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.87 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.87 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.87 + ~ Add: (Integer, Integer) -> Integer 92.73/27.87 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.87 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.87 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.87 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.87 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.87 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.87 >>> 92.73/27.87 92.73/27.87 92.73/27.87 The following domains are used: 92.73/27.87 Boolean, Integer 92.73/27.87 92.73/27.87 R is empty. 92.73/27.87 92.73/27.87 The integer pair graph contains the following rules and edges: 92.73/27.87 (22): ISDIV(x[22], y[22]) -> COND_ISDIV2(y[22] >= x[22] && x[22] > 0, x[22], y[22]) 92.73/27.87 92.73/27.87 92.73/27.87 The set Q consists of the following terms: 92.73/27.87 isprime(x0) 92.73/27.87 mem(x0, nil) 92.73/27.87 mem(x0, cons(x1, x2)) 92.73/27.87 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.87 primes(x0) 92.73/27.87 nats(x0, x1) 92.73/27.87 Cond_nats(TRUE, x0, x1) 92.73/27.87 Cond_nats1(TRUE, x0, x1) 92.73/27.87 Cond_nats2(TRUE, x0, x1) 92.73/27.87 sieve(nil) 92.73/27.87 sieve(cons(x0, x1)) 92.73/27.87 filter(x0, nil) 92.73/27.87 filter(x0, cons(x1, x2)) 92.73/27.87 if_1(TRUE, x0, x1, x2) 92.73/27.87 if_2(FALSE, x0, x1, x2) 92.73/27.87 Cond_isdiv(TRUE, x0, 0) 92.73/27.87 isdiv(x0, x1) 92.73/27.87 Cond_isdiv1(TRUE, x0, x1) 92.73/27.87 Cond_isdiv2(TRUE, x0, x1) 92.73/27.87 Cond_isdiv3(TRUE, x0, x1) 92.73/27.87 Cond_isdiv4(TRUE, x0, x1) 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (41) IDependencyGraphProof (EQUIVALENT) 92.73/27.87 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (42) 92.73/27.87 TRUE 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (43) 92.73/27.87 Obligation: 92.73/27.87 IDP problem: 92.73/27.87 The following function symbols are pre-defined: 92.73/27.87 <<< 92.73/27.87 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.87 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.87 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.87 / ~ Div: (Integer, Integer) -> Integer 92.73/27.87 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.87 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.87 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.87 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.87 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.87 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.87 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.87 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.87 + ~ Add: (Integer, Integer) -> Integer 92.73/27.87 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.87 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.87 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.87 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.87 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.87 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.87 >>> 92.73/27.87 92.73/27.87 92.73/27.87 The following domains are used: 92.73/27.87 Integer, Boolean 92.73/27.87 92.73/27.87 The ITRS R consists of the following rules: 92.73/27.87 primes(x) -> sieve(nats(2, x)) 92.73/27.87 nats(x, y) -> Cond_nats(x > y, x, y) 92.73/27.87 nats(x, y) -> Cond_nats1(x = y, x, y) 92.73/27.87 nats(x, y) -> Cond_nats2(y > x, x, y) 92.73/27.87 filter(x, nil) -> nil 92.73/27.87 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.73/27.87 if_1(TRUE, x, y, zs) -> filter(x, zs) 92.73/27.87 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.73/27.87 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.73/27.87 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.73/27.87 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.73/27.87 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.73/27.87 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.73/27.87 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.73/27.87 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.73/27.87 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.73/27.87 sieve(nil) -> nil 92.73/27.87 sieve(cons(x, ys)) -> cons(x, sieve(filter(x, ys))) 92.73/27.87 Cond_nats2(TRUE, x, y) -> cons(x, nats(x + 1, y)) 92.73/27.87 Cond_nats(TRUE, x, y) -> nil 92.73/27.87 Cond_nats1(TRUE, x, y) -> cons(x, nil) 92.73/27.87 if_2(FALSE, x, y, zs) -> cons(x, filter(x, zs)) 92.73/27.87 Cond_isdiv(TRUE, x, 0) -> TRUE 92.73/27.87 Cond_isdiv1(TRUE, x, y) -> FALSE 92.73/27.87 92.73/27.87 The integer pair graph contains the following rules and edges: 92.73/27.87 (19): IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]) 92.73/27.87 (18): FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) 92.73/27.87 (17): IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]) 92.73/27.87 (15): FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) 92.73/27.87 92.73/27.87 (17) -> (15), if (x[17] ->^* x[15] & zs[17] ->^* cons(y[15], zs[15])) 92.73/27.87 (19) -> (15), if (x[19] ->^* x[15] & zs[19] ->^* cons(y[15], zs[15])) 92.73/27.87 (15) -> (17), if (isdiv(x[15], y[15]) & x[15] ->^* x[17] & y[15] ->^* y[17] & zs[15] ->^* zs[17]) 92.73/27.87 (17) -> (18), if (x[17] ->^* x[18] & zs[17] ->^* cons(y[18], zs[18])) 92.73/27.87 (19) -> (18), if (x[19] ->^* x[18] & zs[19] ->^* cons(y[18], zs[18])) 92.73/27.87 (18) -> (19), if (isdiv(x[18], y[18]) ->^* FALSE & x[18] ->^* x[19] & y[18] ->^* y[19] & zs[18] ->^* zs[19]) 92.73/27.87 92.73/27.87 The set Q consists of the following terms: 92.73/27.87 isprime(x0) 92.73/27.87 mem(x0, nil) 92.73/27.87 mem(x0, cons(x1, x2)) 92.73/27.87 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.87 primes(x0) 92.73/27.87 nats(x0, x1) 92.73/27.87 Cond_nats(TRUE, x0, x1) 92.73/27.87 Cond_nats1(TRUE, x0, x1) 92.73/27.87 Cond_nats2(TRUE, x0, x1) 92.73/27.87 sieve(nil) 92.73/27.87 sieve(cons(x0, x1)) 92.73/27.87 filter(x0, nil) 92.73/27.87 filter(x0, cons(x1, x2)) 92.73/27.87 if_1(TRUE, x0, x1, x2) 92.73/27.87 if_2(FALSE, x0, x1, x2) 92.73/27.87 Cond_isdiv(TRUE, x0, 0) 92.73/27.87 isdiv(x0, x1) 92.73/27.87 Cond_isdiv1(TRUE, x0, x1) 92.73/27.87 Cond_isdiv2(TRUE, x0, x1) 92.73/27.87 Cond_isdiv3(TRUE, x0, x1) 92.73/27.87 Cond_isdiv4(TRUE, x0, x1) 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (44) UsableRulesProof (EQUIVALENT) 92.73/27.87 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (45) 92.73/27.87 Obligation: 92.73/27.87 IDP problem: 92.73/27.87 The following function symbols are pre-defined: 92.73/27.87 <<< 92.73/27.87 & ~ Bwand: (Integer, Integer) -> Integer 92.73/27.87 >= ~ Ge: (Integer, Integer) -> Boolean 92.73/27.87 | ~ Bwor: (Integer, Integer) -> Integer 92.73/27.87 / ~ Div: (Integer, Integer) -> Integer 92.73/27.87 != ~ Neq: (Integer, Integer) -> Boolean 92.73/27.87 && ~ Land: (Boolean, Boolean) -> Boolean 92.73/27.87 ! ~ Lnot: (Boolean) -> Boolean 92.73/27.87 = ~ Eq: (Integer, Integer) -> Boolean 92.73/27.87 <= ~ Le: (Integer, Integer) -> Boolean 92.73/27.87 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.73/27.87 % ~ Mod: (Integer, Integer) -> Integer 92.73/27.87 > ~ Gt: (Integer, Integer) -> Boolean 92.73/27.87 + ~ Add: (Integer, Integer) -> Integer 92.73/27.87 -1 ~ Sub: (Integer, Integer) -> Integer 92.73/27.87 < ~ Lt: (Integer, Integer) -> Boolean 92.73/27.87 || ~ Lor: (Boolean, Boolean) -> Boolean 92.73/27.87 - ~ UnaryMinus: (Integer) -> Integer 92.73/27.87 ~ ~ Bwnot: (Integer) -> Integer 92.73/27.87 * ~ Mul: (Integer, Integer) -> Integer 92.73/27.87 >>> 92.73/27.87 92.73/27.87 92.73/27.87 The following domains are used: 92.73/27.87 Integer, Boolean 92.73/27.87 92.73/27.87 The ITRS R consists of the following rules: 92.73/27.87 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.73/27.87 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.73/27.87 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.73/27.87 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.73/27.87 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.73/27.87 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.73/27.87 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.73/27.87 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.73/27.87 Cond_isdiv(TRUE, x, 0) -> TRUE 92.73/27.87 Cond_isdiv1(TRUE, x, y) -> FALSE 92.73/27.87 92.73/27.87 The integer pair graph contains the following rules and edges: 92.73/27.87 (19): IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]) 92.73/27.87 (18): FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) 92.73/27.87 (17): IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]) 92.73/27.87 (15): FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) 92.73/27.87 92.73/27.87 (17) -> (15), if (x[17] ->^* x[15] & zs[17] ->^* cons(y[15], zs[15])) 92.73/27.87 (19) -> (15), if (x[19] ->^* x[15] & zs[19] ->^* cons(y[15], zs[15])) 92.73/27.87 (15) -> (17), if (isdiv(x[15], y[15]) & x[15] ->^* x[17] & y[15] ->^* y[17] & zs[15] ->^* zs[17]) 92.73/27.87 (17) -> (18), if (x[17] ->^* x[18] & zs[17] ->^* cons(y[18], zs[18])) 92.73/27.87 (19) -> (18), if (x[19] ->^* x[18] & zs[19] ->^* cons(y[18], zs[18])) 92.73/27.87 (18) -> (19), if (isdiv(x[18], y[18]) ->^* FALSE & x[18] ->^* x[19] & y[18] ->^* y[19] & zs[18] ->^* zs[19]) 92.73/27.87 92.73/27.87 The set Q consists of the following terms: 92.73/27.87 isprime(x0) 92.73/27.87 mem(x0, nil) 92.73/27.87 mem(x0, cons(x1, x2)) 92.73/27.87 Cond_mem(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.73/27.87 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.73/27.87 primes(x0) 92.73/27.87 nats(x0, x1) 92.73/27.87 Cond_nats(TRUE, x0, x1) 92.73/27.87 Cond_nats1(TRUE, x0, x1) 92.73/27.87 Cond_nats2(TRUE, x0, x1) 92.73/27.87 sieve(nil) 92.73/27.87 sieve(cons(x0, x1)) 92.73/27.87 filter(x0, nil) 92.73/27.87 filter(x0, cons(x1, x2)) 92.73/27.87 if_1(TRUE, x0, x1, x2) 92.73/27.87 if_2(FALSE, x0, x1, x2) 92.73/27.87 Cond_isdiv(TRUE, x0, 0) 92.73/27.87 isdiv(x0, x1) 92.73/27.87 Cond_isdiv1(TRUE, x0, x1) 92.73/27.87 Cond_isdiv2(TRUE, x0, x1) 92.73/27.87 Cond_isdiv3(TRUE, x0, x1) 92.73/27.87 Cond_isdiv4(TRUE, x0, x1) 92.73/27.87 92.73/27.87 ---------------------------------------- 92.73/27.87 92.73/27.87 (46) IDPNonInfProof (SOUND) 92.73/27.87 Used the following options for this NonInfProof: 92.73/27.87 92.73/27.87 IDPGPoloSolver: 92.73/27.87 Range: [(-1,2)] 92.73/27.87 IsNat: true 92.73/27.87 Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@67e24a14 92.73/27.87 Constraint Generator: NonInfConstraintGenerator: 92.73/27.87 PathGenerator: MetricPathGenerator: 92.73/27.87 Max Left Steps: 1 92.73/27.87 Max Right Steps: 1 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 The constraints were generated the following way: 92.73/27.87 92.73/27.87 The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: 92.73/27.87 92.73/27.87 Note that final constraints are written in bold face. 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 For Pair IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]) the following chains were created: 92.73/27.87 *We consider the chain IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]), FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (x[19]=x[15] & zs[19]=cons(y[15], zs[15]) ==> IF_2(FALSE, x[19], y[19], zs[19])_>=_NonInfC & IF_2(FALSE, x[19], y[19], zs[19])_>=_FILTER(x[19], zs[19]) & (U^Increasing(FILTER(x[19], zs[19])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (IF_2(FALSE, x[19], y[19], cons(y[15], zs[15]))_>=_NonInfC & IF_2(FALSE, x[19], y[19], cons(y[15], zs[15]))_>=_FILTER(x[19], cons(y[15], zs[15])) & (U^Increasing(FILTER(x[19], zs[19])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) ((U^Increasing(FILTER(x[19], zs[19])), >=) & [bni_40] = 0 & [1 + (-1)bso_41] + y[19] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) ((U^Increasing(FILTER(x[19], zs[19])), >=) & [bni_40] = 0 & [1 + (-1)bso_41] + y[19] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) ((U^Increasing(FILTER(x[19], zs[19])), >=) & [bni_40] = 0 & [1 + (-1)bso_41] + y[19] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (6) ((U^Increasing(FILTER(x[19], zs[19])), >=) & [bni_40] = 0 & [1] >= 0 & [1 + (-1)bso_41] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *We consider the chain IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]), FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (x[19]=x[18] & zs[19]=cons(y[18], zs[18]) ==> IF_2(FALSE, x[19], y[19], zs[19])_>=_NonInfC & IF_2(FALSE, x[19], y[19], zs[19])_>=_FILTER(x[19], zs[19]) & (U^Increasing(FILTER(x[19], zs[19])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (IF_2(FALSE, x[19], y[19], cons(y[18], zs[18]))_>=_NonInfC & IF_2(FALSE, x[19], y[19], cons(y[18], zs[18]))_>=_FILTER(x[19], cons(y[18], zs[18])) & (U^Increasing(FILTER(x[19], zs[19])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (3) ((U^Increasing(FILTER(x[19], zs[19])), >=) & [bni_40] = 0 & [1 + (-1)bso_41] + y[19] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (4) ((U^Increasing(FILTER(x[19], zs[19])), >=) & [bni_40] = 0 & [1 + (-1)bso_41] + y[19] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (5) ((U^Increasing(FILTER(x[19], zs[19])), >=) & [bni_40] = 0 & [1 + (-1)bso_41] + y[19] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (6) ((U^Increasing(FILTER(x[19], zs[19])), >=) & [bni_40] = 0 & [1] >= 0 & [1 + (-1)bso_41] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 For Pair FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) the following chains were created: 92.73/27.87 *We consider the chain IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]), FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]), IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (x[17]=x[18] & zs[17]=cons(y[18], zs[18]) & isdiv(x[18], y[18])=FALSE & x[18]=x[19] & y[18]=y[19] & zs[18]=zs[19] ==> FILTER(x[18], cons(y[18], zs[18]))_>=_NonInfC & FILTER(x[18], cons(y[18], zs[18]))_>=_IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (isdiv(x[18], y[18])=FALSE ==> FILTER(x[18], cons(y[18], zs[18]))_>=_NonInfC & FILTER(x[18], cons(y[18], zs[18]))_>=_IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on isdiv(x[18], y[18])=FALSE which results in the following new constraints: 92.73/27.87 92.73/27.87 (3) (Cond_isdiv(>(x0, 0), x0, 0)=FALSE ==> FILTER(x0, cons(0, zs[18]))_>=_NonInfC & FILTER(x0, cons(0, zs[18]))_>=_IF_2(isdiv(x0, 0), x0, 0, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 (4) (Cond_isdiv1(&&(>(x2, x1), >(x1, 0)), x2, x1)=FALSE ==> FILTER(x2, cons(x1, zs[18]))_>=_NonInfC & FILTER(x2, cons(x1, zs[18]))_>=_IF_2(isdiv(x2, x1), x2, x1, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 (5) (Cond_isdiv2(&&(>=(x3, x4), >(x4, 0)), x4, x3)=FALSE ==> FILTER(x4, cons(x3, zs[18]))_>=_NonInfC & FILTER(x4, cons(x3, zs[18]))_>=_IF_2(isdiv(x4, x3), x4, x3, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 (6) (Cond_isdiv3(>(0, x5), x6, x5)=FALSE ==> FILTER(x6, cons(x5, zs[18]))_>=_NonInfC & FILTER(x6, cons(x5, zs[18]))_>=_IF_2(isdiv(x6, x5), x6, x5, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 (7) (Cond_isdiv4(>(0, x8), x8, x7)=FALSE ==> FILTER(x8, cons(x7, zs[18]))_>=_NonInfC & FILTER(x8, cons(x7, zs[18]))_>=_IF_2(isdiv(x8, x7), x8, x7, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (3) using rules (III), (VII) which results in the following new constraint: 92.73/27.87 92.73/27.87 (8) (Cond_isdiv(>(x0, 0), x0, 0)=FALSE ==> FILTER(x0, cons(0, zs[18]))_>=_NonInfC & FILTER(x0, cons(0, zs[18]))_>=_IF_2(isdiv(x0, 0), x0, 0, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (4) using rules (III), (VII) which results in the following new constraint: 92.73/27.87 92.73/27.87 (9) (Cond_isdiv1(&&(>(x2, x1), >(x1, 0)), x2, x1)=FALSE ==> FILTER(x2, cons(x1, zs[18]))_>=_NonInfC & FILTER(x2, cons(x1, zs[18]))_>=_IF_2(isdiv(x2, x1), x2, x1, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (5) using rules (III), (VII) which results in the following new constraint: 92.73/27.87 92.73/27.87 (10) (Cond_isdiv2(&&(>=(x3, x4), >(x4, 0)), x4, x3)=FALSE ==> FILTER(x4, cons(x3, zs[18]))_>=_NonInfC & FILTER(x4, cons(x3, zs[18]))_>=_IF_2(isdiv(x4, x3), x4, x3, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (6) using rules (III), (VII) which results in the following new constraint: 92.73/27.87 92.73/27.87 (11) (Cond_isdiv3(>(0, x5), x6, x5)=FALSE ==> FILTER(x6, cons(x5, zs[18]))_>=_NonInfC & FILTER(x6, cons(x5, zs[18]))_>=_IF_2(isdiv(x6, x5), x6, x5, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (7) using rules (III), (VII) which results in the following new constraint: 92.73/27.87 92.73/27.87 (12) (Cond_isdiv4(>(0, x8), x8, x7)=FALSE ==> FILTER(x8, cons(x7, zs[18]))_>=_NonInfC & FILTER(x8, cons(x7, zs[18]))_>=_IF_2(isdiv(x8, x7), x8, x7, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (13) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [bni_42]x0 >= 0 & [3 + (-1)bso_43] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (14) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x1 + [bni_42]x2 >= 0 & [3 + (-1)bso_43] + [5]x1 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (10) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (15) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x3 + [bni_42]x4 >= 0 & [3 + (-1)bso_43] + [5]x3 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (11) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (16) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x5 + [bni_42]x6 >= 0 & [3 + (-1)bso_43] + [5]x5 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (17) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x7 + [bni_42]x8 >= 0 & [3 + (-1)bso_43] + [5]x7 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (14) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (18) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x1 + [bni_42]x2 >= 0 & [3 + (-1)bso_43] + [5]x1 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (19) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x3 + [bni_42]x4 >= 0 & [3 + (-1)bso_43] + [5]x3 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (16) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (20) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x5 + [bni_42]x6 >= 0 & [3 + (-1)bso_43] + [5]x5 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (21) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x7 + [bni_42]x8 >= 0 & [3 + (-1)bso_43] + [5]x7 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.87 92.73/27.87 (22) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [bni_42]x0 >= 0 & [3 + (-1)bso_43] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (23) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x1 + [bni_42]x2 >= 0 & [3 + (-1)bso_43] + [5]x1 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (19) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (24) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x3 + [bni_42]x4 >= 0 & [3 + (-1)bso_43] + [5]x3 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (20) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (25) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x5 + [bni_42]x6 >= 0 & [3 + (-1)bso_43] + [5]x5 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (21) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (26) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x7 + [bni_42]x8 >= 0 & [3 + (-1)bso_43] + [5]x7 >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.87 92.73/27.87 (27) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [bni_42]x0 >= 0 & [3 + (-1)bso_43] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (23) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.73/27.87 92.73/27.87 (28) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (24) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.73/27.87 92.73/27.87 (29) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (25) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.73/27.87 92.73/27.87 (30) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (26) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.73/27.87 92.73/27.87 (31) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (27) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.73/27.87 92.73/27.87 (32) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 *We consider the chain IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]), FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]), IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]) which results in the following constraint: 92.73/27.87 92.73/27.87 (1) (x[19]=x[18] & zs[19]=cons(y[18], zs[18]) & isdiv(x[18], y[18])=FALSE & x[18]=x[19]1 & y[18]=y[19]1 & zs[18]=zs[19]1 ==> FILTER(x[18], cons(y[18], zs[18]))_>=_NonInfC & FILTER(x[18], cons(y[18], zs[18]))_>=_IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.73/27.87 92.73/27.87 (2) (isdiv(x[18], y[18])=FALSE ==> FILTER(x[18], cons(y[18], zs[18]))_>=_NonInfC & FILTER(x[18], cons(y[18], zs[18]))_>=_IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 92.73/27.87 92.73/27.87 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on isdiv(x[18], y[18])=FALSE which results in the following new constraints: 92.73/27.87 92.73/27.87 (3) (Cond_isdiv(>(x15, 0), x15, 0)=FALSE ==> FILTER(x15, cons(0, zs[18]))_>=_NonInfC & FILTER(x15, cons(0, zs[18]))_>=_IF_2(isdiv(x15, 0), x15, 0, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 (4) (Cond_isdiv1(&&(>(x17, x16), >(x16, 0)), x17, x16)=FALSE ==> FILTER(x17, cons(x16, zs[18]))_>=_NonInfC & FILTER(x17, cons(x16, zs[18]))_>=_IF_2(isdiv(x17, x16), x17, x16, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 (5) (Cond_isdiv2(&&(>=(x18, x19), >(x19, 0)), x19, x18)=FALSE ==> FILTER(x19, cons(x18, zs[18]))_>=_NonInfC & FILTER(x19, cons(x18, zs[18]))_>=_IF_2(isdiv(x19, x18), x19, x18, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 (6) (Cond_isdiv3(>(0, x20), x21, x20)=FALSE ==> FILTER(x21, cons(x20, zs[18]))_>=_NonInfC & FILTER(x21, cons(x20, zs[18]))_>=_IF_2(isdiv(x21, x20), x21, x20, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.87 92.73/27.87 (7) (Cond_isdiv4(>(0, x23), x23, x22)=FALSE ==> FILTER(x23, cons(x22, zs[18]))_>=_NonInfC & FILTER(x23, cons(x22, zs[18]))_>=_IF_2(isdiv(x23, x22), x23, x22, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (3) using rules (III), (VII) which results in the following new constraint: 92.73/27.88 92.73/27.88 (8) (Cond_isdiv(>(x15, 0), x15, 0)=FALSE ==> FILTER(x15, cons(0, zs[18]))_>=_NonInfC & FILTER(x15, cons(0, zs[18]))_>=_IF_2(isdiv(x15, 0), x15, 0, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (4) using rules (III), (VII) which results in the following new constraint: 92.73/27.88 92.73/27.88 (9) (Cond_isdiv1(&&(>(x17, x16), >(x16, 0)), x17, x16)=FALSE ==> FILTER(x17, cons(x16, zs[18]))_>=_NonInfC & FILTER(x17, cons(x16, zs[18]))_>=_IF_2(isdiv(x17, x16), x17, x16, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (5) using rules (III), (VII) which results in the following new constraint: 92.73/27.88 92.73/27.88 (10) (Cond_isdiv2(&&(>=(x18, x19), >(x19, 0)), x19, x18)=FALSE ==> FILTER(x19, cons(x18, zs[18]))_>=_NonInfC & FILTER(x19, cons(x18, zs[18]))_>=_IF_2(isdiv(x19, x18), x19, x18, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (6) using rules (III), (VII) which results in the following new constraint: 92.73/27.88 92.73/27.88 (11) (Cond_isdiv3(>(0, x20), x21, x20)=FALSE ==> FILTER(x21, cons(x20, zs[18]))_>=_NonInfC & FILTER(x21, cons(x20, zs[18]))_>=_IF_2(isdiv(x21, x20), x21, x20, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (7) using rules (III), (VII) which results in the following new constraint: 92.73/27.88 92.73/27.88 (12) (Cond_isdiv4(>(0, x23), x23, x22)=FALSE ==> FILTER(x23, cons(x22, zs[18]))_>=_NonInfC & FILTER(x23, cons(x22, zs[18]))_>=_IF_2(isdiv(x23, x22), x23, x22, zs[18]) & (U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=)) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.88 92.73/27.88 (13) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [bni_42]x15 >= 0 & [3 + (-1)bso_43] >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.88 92.73/27.88 (14) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x16 + [bni_42]x17 >= 0 & [3 + (-1)bso_43] + [5]x16 >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (10) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.88 92.73/27.88 (15) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x18 + [bni_42]x19 >= 0 & [3 + (-1)bso_43] + [5]x18 >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (11) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.88 92.73/27.88 (16) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x20 + [bni_42]x21 >= 0 & [3 + (-1)bso_43] + [5]x20 >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.73/27.88 92.73/27.88 (17) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x22 + [bni_42]x23 >= 0 & [3 + (-1)bso_43] + [5]x22 >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (14) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.88 92.73/27.88 (18) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x16 + [bni_42]x17 >= 0 & [3 + (-1)bso_43] + [5]x16 >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.88 92.73/27.88 (19) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x18 + [bni_42]x19 >= 0 & [3 + (-1)bso_43] + [5]x18 >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (16) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.88 92.73/27.88 (20) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x20 + [bni_42]x21 >= 0 & [3 + (-1)bso_43] + [5]x20 >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.88 92.73/27.88 (21) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x22 + [bni_42]x23 >= 0 & [3 + (-1)bso_43] + [5]x22 >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.73/27.88 92.73/27.88 (22) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [bni_42]x15 >= 0 & [3 + (-1)bso_43] >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.88 92.73/27.88 (23) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x16 + [bni_42]x17 >= 0 & [3 + (-1)bso_43] + [5]x16 >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (19) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.88 92.73/27.88 (24) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x18 + [bni_42]x19 >= 0 & [3 + (-1)bso_43] + [5]x18 >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (20) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.88 92.73/27.88 (25) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x20 + [bni_42]x21 >= 0 & [3 + (-1)bso_43] + [5]x20 >= 0) 92.73/27.88 92.73/27.88 92.73/27.88 92.73/27.88 We simplified constraint (21) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.73/27.88 92.73/27.88 (26) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [(6)bni_42]x22 + [bni_42]x23 >= 0 & [3 + (-1)bso_43] + [5]x22 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (27) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(5)bni_42 + (-1)Bound*bni_42] + [(2)bni_42]zs[18] + [bni_42]x15 >= 0 & [3 + (-1)bso_43] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (23) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (28) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (24) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (29) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (25) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (30) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (26) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (31) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (27) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (32) ((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 For Pair IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]) the following chains were created: 92.95/27.88 *We consider the chain IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]), FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) which results in the following constraint: 92.95/27.88 92.95/27.88 (1) (x[17]=x[15] & zs[17]=cons(y[15], zs[15]) ==> IF_1(TRUE, x[17], y[17], zs[17])_>=_NonInfC & IF_1(TRUE, x[17], y[17], zs[17])_>=_FILTER(x[17], zs[17]) & (U^Increasing(FILTER(x[17], zs[17])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.95/27.88 92.95/27.88 (2) (IF_1(TRUE, x[17], y[17], cons(y[15], zs[15]))_>=_NonInfC & IF_1(TRUE, x[17], y[17], cons(y[15], zs[15]))_>=_FILTER(x[17], cons(y[15], zs[15])) & (U^Increasing(FILTER(x[17], zs[17])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (3) ((U^Increasing(FILTER(x[17], zs[17])), >=) & [bni_44] = 0 & [(-1)bso_45] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (4) ((U^Increasing(FILTER(x[17], zs[17])), >=) & [bni_44] = 0 & [(-1)bso_45] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (5) ((U^Increasing(FILTER(x[17], zs[17])), >=) & [bni_44] = 0 & [(-1)bso_45] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (6) ((U^Increasing(FILTER(x[17], zs[17])), >=) & [bni_44] = 0 & 0 >= 0 & [(-1)bso_45] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 *We consider the chain IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]), FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) which results in the following constraint: 92.95/27.88 92.95/27.88 (1) (x[17]=x[18] & zs[17]=cons(y[18], zs[18]) ==> IF_1(TRUE, x[17], y[17], zs[17])_>=_NonInfC & IF_1(TRUE, x[17], y[17], zs[17])_>=_FILTER(x[17], zs[17]) & (U^Increasing(FILTER(x[17], zs[17])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.95/27.88 92.95/27.88 (2) (IF_1(TRUE, x[17], y[17], cons(y[18], zs[18]))_>=_NonInfC & IF_1(TRUE, x[17], y[17], cons(y[18], zs[18]))_>=_FILTER(x[17], cons(y[18], zs[18])) & (U^Increasing(FILTER(x[17], zs[17])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (3) ((U^Increasing(FILTER(x[17], zs[17])), >=) & [bni_44] = 0 & [(-1)bso_45] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (4) ((U^Increasing(FILTER(x[17], zs[17])), >=) & [bni_44] = 0 & [(-1)bso_45] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (5) ((U^Increasing(FILTER(x[17], zs[17])), >=) & [bni_44] = 0 & [(-1)bso_45] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (6) ((U^Increasing(FILTER(x[17], zs[17])), >=) & [bni_44] = 0 & 0 >= 0 & [(-1)bso_45] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 For Pair FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) the following chains were created: 92.95/27.88 *We consider the chain IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]), FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]), IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]) which results in the following constraint: 92.95/27.88 92.95/27.88 (1) (x[17]=x[15] & zs[17]=cons(y[15], zs[15]) & isdiv(x[15], y[15])=TRUE & x[15]=x[17]1 & y[15]=y[17]1 & zs[15]=zs[17]1 ==> FILTER(x[15], cons(y[15], zs[15]))_>=_NonInfC & FILTER(x[15], cons(y[15], zs[15]))_>=_IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.95/27.88 92.95/27.88 (2) (isdiv(x[15], y[15])=TRUE ==> FILTER(x[15], cons(y[15], zs[15]))_>=_NonInfC & FILTER(x[15], cons(y[15], zs[15]))_>=_IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on isdiv(x[15], y[15])=TRUE which results in the following new constraints: 92.95/27.88 92.95/27.88 (3) (Cond_isdiv(>(x30, 0), x30, 0)=TRUE ==> FILTER(x30, cons(0, zs[15]))_>=_NonInfC & FILTER(x30, cons(0, zs[15]))_>=_IF_1(isdiv(x30, 0), x30, 0, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 (4) (Cond_isdiv1(&&(>(x32, x31), >(x31, 0)), x32, x31)=TRUE ==> FILTER(x32, cons(x31, zs[15]))_>=_NonInfC & FILTER(x32, cons(x31, zs[15]))_>=_IF_1(isdiv(x32, x31), x32, x31, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 (5) (Cond_isdiv2(&&(>=(x33, x34), >(x34, 0)), x34, x33)=TRUE ==> FILTER(x34, cons(x33, zs[15]))_>=_NonInfC & FILTER(x34, cons(x33, zs[15]))_>=_IF_1(isdiv(x34, x33), x34, x33, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 (6) (Cond_isdiv3(>(0, x35), x36, x35)=TRUE ==> FILTER(x36, cons(x35, zs[15]))_>=_NonInfC & FILTER(x36, cons(x35, zs[15]))_>=_IF_1(isdiv(x36, x35), x36, x35, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 (7) (Cond_isdiv4(>(0, x38), x38, x37)=TRUE ==> FILTER(x38, cons(x37, zs[15]))_>=_NonInfC & FILTER(x38, cons(x37, zs[15]))_>=_IF_1(isdiv(x38, x37), x38, x37, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (3) using rules (III), (VII) which results in the following new constraint: 92.95/27.88 92.95/27.88 (8) (Cond_isdiv(>(x30, 0), x30, 0)=TRUE ==> FILTER(x30, cons(0, zs[15]))_>=_NonInfC & FILTER(x30, cons(0, zs[15]))_>=_IF_1(isdiv(x30, 0), x30, 0, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (4) using rules (III), (VII) which results in the following new constraint: 92.95/27.88 92.95/27.88 (9) (Cond_isdiv1(&&(>(x32, x31), >(x31, 0)), x32, x31)=TRUE ==> FILTER(x32, cons(x31, zs[15]))_>=_NonInfC & FILTER(x32, cons(x31, zs[15]))_>=_IF_1(isdiv(x32, x31), x32, x31, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (5) using rules (III), (VII) which results in the following new constraint: 92.95/27.88 92.95/27.88 (10) (Cond_isdiv2(&&(>=(x33, x34), >(x34, 0)), x34, x33)=TRUE ==> FILTER(x34, cons(x33, zs[15]))_>=_NonInfC & FILTER(x34, cons(x33, zs[15]))_>=_IF_1(isdiv(x34, x33), x34, x33, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (6) using rules (III), (VII) which results in the following new constraint: 92.95/27.88 92.95/27.88 (11) (Cond_isdiv3(>(0, x35), x36, x35)=TRUE ==> FILTER(x36, cons(x35, zs[15]))_>=_NonInfC & FILTER(x36, cons(x35, zs[15]))_>=_IF_1(isdiv(x36, x35), x36, x35, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (7) using rules (III), (VII) which results in the following new constraint: 92.95/27.88 92.95/27.88 (12) (Cond_isdiv4(>(0, x38), x38, x37)=TRUE ==> FILTER(x38, cons(x37, zs[15]))_>=_NonInfC & FILTER(x38, cons(x37, zs[15]))_>=_IF_1(isdiv(x38, x37), x38, x37, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (13) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [bni_46]x30 >= 0 & [4 + (-1)bso_47] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (14) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x31 + [bni_46]x32 >= 0 & [4 + (-1)bso_47] + [6]x31 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (10) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (15) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x33 + [bni_46]x34 >= 0 & [4 + (-1)bso_47] + [6]x33 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (11) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (16) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x35 + [bni_46]x36 >= 0 & [4 + (-1)bso_47] + [6]x35 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (17) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x37 + [bni_46]x38 >= 0 & [4 + (-1)bso_47] + [6]x37 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (14) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (18) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x31 + [bni_46]x32 >= 0 & [4 + (-1)bso_47] + [6]x31 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (19) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x33 + [bni_46]x34 >= 0 & [4 + (-1)bso_47] + [6]x33 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (16) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (20) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x35 + [bni_46]x36 >= 0 & [4 + (-1)bso_47] + [6]x35 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (21) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x37 + [bni_46]x38 >= 0 & [4 + (-1)bso_47] + [6]x37 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (22) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [bni_46]x30 >= 0 & [4 + (-1)bso_47] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (23) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x31 + [bni_46]x32 >= 0 & [4 + (-1)bso_47] + [6]x31 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (19) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (24) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x33 + [bni_46]x34 >= 0 & [4 + (-1)bso_47] + [6]x33 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (20) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (25) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x35 + [bni_46]x36 >= 0 & [4 + (-1)bso_47] + [6]x35 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (21) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (26) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x37 + [bni_46]x38 >= 0 & [4 + (-1)bso_47] + [6]x37 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (27) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [bni_46]x30 >= 0 & [4 + (-1)bso_47] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (23) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (28) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (24) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (29) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (25) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (30) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (26) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (31) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (27) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (32) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 *We consider the chain IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]), FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]), IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]) which results in the following constraint: 92.95/27.88 92.95/27.88 (1) (x[19]=x[15] & zs[19]=cons(y[15], zs[15]) & isdiv(x[15], y[15])=TRUE & x[15]=x[17] & y[15]=y[17] & zs[15]=zs[17] ==> FILTER(x[15], cons(y[15], zs[15]))_>=_NonInfC & FILTER(x[15], cons(y[15], zs[15]))_>=_IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.95/27.88 92.95/27.88 (2) (isdiv(x[15], y[15])=TRUE ==> FILTER(x[15], cons(y[15], zs[15]))_>=_NonInfC & FILTER(x[15], cons(y[15], zs[15]))_>=_IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on isdiv(x[15], y[15])=TRUE which results in the following new constraints: 92.95/27.88 92.95/27.88 (3) (Cond_isdiv(>(x45, 0), x45, 0)=TRUE ==> FILTER(x45, cons(0, zs[15]))_>=_NonInfC & FILTER(x45, cons(0, zs[15]))_>=_IF_1(isdiv(x45, 0), x45, 0, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 (4) (Cond_isdiv1(&&(>(x47, x46), >(x46, 0)), x47, x46)=TRUE ==> FILTER(x47, cons(x46, zs[15]))_>=_NonInfC & FILTER(x47, cons(x46, zs[15]))_>=_IF_1(isdiv(x47, x46), x47, x46, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 (5) (Cond_isdiv2(&&(>=(x48, x49), >(x49, 0)), x49, x48)=TRUE ==> FILTER(x49, cons(x48, zs[15]))_>=_NonInfC & FILTER(x49, cons(x48, zs[15]))_>=_IF_1(isdiv(x49, x48), x49, x48, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 (6) (Cond_isdiv3(>(0, x50), x51, x50)=TRUE ==> FILTER(x51, cons(x50, zs[15]))_>=_NonInfC & FILTER(x51, cons(x50, zs[15]))_>=_IF_1(isdiv(x51, x50), x51, x50, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 (7) (Cond_isdiv4(>(0, x53), x53, x52)=TRUE ==> FILTER(x53, cons(x52, zs[15]))_>=_NonInfC & FILTER(x53, cons(x52, zs[15]))_>=_IF_1(isdiv(x53, x52), x53, x52, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (3) using rules (III), (VII) which results in the following new constraint: 92.95/27.88 92.95/27.88 (8) (Cond_isdiv(>(x45, 0), x45, 0)=TRUE ==> FILTER(x45, cons(0, zs[15]))_>=_NonInfC & FILTER(x45, cons(0, zs[15]))_>=_IF_1(isdiv(x45, 0), x45, 0, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (4) using rules (III), (VII) which results in the following new constraint: 92.95/27.88 92.95/27.88 (9) (Cond_isdiv1(&&(>(x47, x46), >(x46, 0)), x47, x46)=TRUE ==> FILTER(x47, cons(x46, zs[15]))_>=_NonInfC & FILTER(x47, cons(x46, zs[15]))_>=_IF_1(isdiv(x47, x46), x47, x46, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (5) using rules (III), (VII) which results in the following new constraint: 92.95/27.88 92.95/27.88 (10) (Cond_isdiv2(&&(>=(x48, x49), >(x49, 0)), x49, x48)=TRUE ==> FILTER(x49, cons(x48, zs[15]))_>=_NonInfC & FILTER(x49, cons(x48, zs[15]))_>=_IF_1(isdiv(x49, x48), x49, x48, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (6) using rules (III), (VII) which results in the following new constraint: 92.95/27.88 92.95/27.88 (11) (Cond_isdiv3(>(0, x50), x51, x50)=TRUE ==> FILTER(x51, cons(x50, zs[15]))_>=_NonInfC & FILTER(x51, cons(x50, zs[15]))_>=_IF_1(isdiv(x51, x50), x51, x50, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (7) using rules (III), (VII) which results in the following new constraint: 92.95/27.88 92.95/27.88 (12) (Cond_isdiv4(>(0, x53), x53, x52)=TRUE ==> FILTER(x53, cons(x52, zs[15]))_>=_NonInfC & FILTER(x53, cons(x52, zs[15]))_>=_IF_1(isdiv(x53, x52), x53, x52, zs[15]) & (U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (13) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [bni_46]x45 >= 0 & [4 + (-1)bso_47] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (14) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x46 + [bni_46]x47 >= 0 & [4 + (-1)bso_47] + [6]x46 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (10) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (15) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x48 + [bni_46]x49 >= 0 & [4 + (-1)bso_47] + [6]x48 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (11) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (16) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x50 + [bni_46]x51 >= 0 & [4 + (-1)bso_47] + [6]x50 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (17) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x52 + [bni_46]x53 >= 0 & [4 + (-1)bso_47] + [6]x52 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (14) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (18) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x46 + [bni_46]x47 >= 0 & [4 + (-1)bso_47] + [6]x46 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (19) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x48 + [bni_46]x49 >= 0 & [4 + (-1)bso_47] + [6]x48 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (16) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (20) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x50 + [bni_46]x51 >= 0 & [4 + (-1)bso_47] + [6]x50 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (21) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x52 + [bni_46]x53 >= 0 & [4 + (-1)bso_47] + [6]x52 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (22) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [bni_46]x45 >= 0 & [4 + (-1)bso_47] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (23) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x46 + [bni_46]x47 >= 0 & [4 + (-1)bso_47] + [6]x46 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (19) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (24) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x48 + [bni_46]x49 >= 0 & [4 + (-1)bso_47] + [6]x48 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (20) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (25) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x50 + [bni_46]x51 >= 0 & [4 + (-1)bso_47] + [6]x50 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (21) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (26) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [(6)bni_46]x52 + [bni_46]x53 >= 0 & [4 + (-1)bso_47] + [6]x52 >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (27) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(5)bni_46 + (-1)Bound*bni_46] + [(2)bni_46]zs[15] + [bni_46]x45 >= 0 & [4 + (-1)bso_47] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (23) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (28) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (24) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (29) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (25) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (30) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (26) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint: 92.95/27.88 92.95/27.88 (31) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (27) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (32) ((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 To summarize, we get the following constraints P__>=_ for the following pairs. 92.95/27.88 92.95/27.88 *IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]) 92.95/27.88 92.95/27.88 *((U^Increasing(FILTER(x[19], zs[19])), >=) & [bni_40] = 0 & [1] >= 0 & [1 + (-1)bso_41] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(FILTER(x[19], zs[19])), >=) & [bni_40] = 0 & [1] >= 0 & [1 + (-1)bso_41] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 *FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) 92.95/27.88 92.95/27.88 *((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18])), >=) & [(2)bni_42] >= 0 & [(6)bni_42] >= 0 & [bni_42] >= 0 & [(5)bni_42 + (-1)Bound*bni_42] >= 0 & [3 + (-1)bso_43] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 *IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]) 92.95/27.88 92.95/27.88 *((U^Increasing(FILTER(x[17], zs[17])), >=) & [bni_44] = 0 & 0 >= 0 & [(-1)bso_45] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(FILTER(x[17], zs[17])), >=) & [bni_44] = 0 & 0 >= 0 & [(-1)bso_45] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 *FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) 92.95/27.88 92.95/27.88 *((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 *((U^Increasing(IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15])), >=) & [(2)bni_46] >= 0 & [(6)bni_46] >= 0 & [bni_46] >= 0 & [(5)bni_46 + (-1)Bound*bni_46] >= 0 & [4 + (-1)bso_47] >= 0 & [1] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 92.95/27.88 92.95/27.88 Using the following integer polynomial ordering the resulting constraints can be solved 92.95/27.88 92.95/27.88 Polynomial interpretation over integers with natural coefficients for non-tuple symbols [NONINF][POLO]: 92.95/27.88 92.95/27.88 POL(TRUE) = 0 92.95/27.88 POL(FALSE) = 0 92.95/27.88 POL(isdiv(x_1, x_2)) = 0 92.95/27.88 POL(0) = 0 92.95/27.88 POL(Cond_isdiv(x_1, x_2, x_3)) = 0 92.95/27.88 POL(>(x_1, x_2)) = 0 92.95/27.88 POL(Cond_isdiv1(x_1, x_2, x_3)) = 0 92.95/27.88 POL(&&(x_1, x_2)) = 0 92.95/27.88 POL(Cond_isdiv2(x_1, x_2, x_3)) = 0 92.95/27.88 POL(>=(x_1, x_2)) = 0 92.95/27.88 POL(+(x_1, x_2)) = 0 92.95/27.88 POL(-(x_1)) = 0 92.95/27.88 POL(Cond_isdiv3(x_1, x_2, x_3)) = 0 92.95/27.88 POL(Cond_isdiv4(x_1, x_2, x_3)) = 0 92.95/27.88 POL(IF_2(x_1, x_2, x_3, x_4)) = [2] + [2]x_4 + x_3 + x_2 + [-1]x_1 92.95/27.88 POL(FILTER(x_1, x_2)) = [1] + [2]x_2 + x_1 92.95/27.88 POL(cons(x_1, x_2)) = [2] + x_2 + [3]x_1 92.95/27.88 POL(IF_1(x_1, x_2, x_3, x_4)) = [1] + [2]x_4 + x_2 + [-1]x_1 92.95/27.88 92.95/27.88 92.95/27.88 The following pairs are in P_>: 92.95/27.88 92.95/27.88 92.95/27.88 IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]) 92.95/27.88 FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) 92.95/27.88 FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) 92.95/27.88 92.95/27.88 92.95/27.88 The following pairs are in P_bound: 92.95/27.88 92.95/27.88 92.95/27.88 FILTER(x[18], cons(y[18], zs[18])) -> IF_2(isdiv(x[18], y[18]), x[18], y[18], zs[18]) 92.95/27.88 FILTER(x[15], cons(y[15], zs[15])) -> IF_1(isdiv(x[15], y[15]), x[15], y[15], zs[15]) 92.95/27.88 92.95/27.88 92.95/27.88 The following pairs are in P_>=: 92.95/27.88 92.95/27.88 92.95/27.88 IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]) 92.95/27.88 92.95/27.88 92.95/27.88 At least the following rules have been oriented under context sensitive arithmetic replacement: 92.95/27.88 92.95/27.88 isdiv(x, 0)^1 <-> Cond_isdiv(>(x, 0), x, 0)^1 92.95/27.88 isdiv(x, y)^1 <-> Cond_isdiv1(&&(>(x, y), >(y, 0)), x, y)^1 92.95/27.88 isdiv(x, y)^1 <-> Cond_isdiv2(&&(>=(y, x), >(x, 0)), x, y)^1 92.95/27.88 Cond_isdiv2(TRUE, x, y)^1 <-> isdiv(x, +(-(x), y))^1 92.95/27.88 isdiv(x, y)^1 <-> Cond_isdiv3(>(0, y), x, y)^1 92.95/27.88 Cond_isdiv3(TRUE, x, y)^1 <-> isdiv(x, -(y))^1 92.95/27.88 isdiv(x, y)^1 <-> Cond_isdiv4(>(0, x), x, y)^1 92.95/27.88 Cond_isdiv4(TRUE, x, y)^1 <-> isdiv(-(x), y)^1 92.95/27.88 &&(TRUE, TRUE)^1 <-> TRUE^1 92.95/27.88 &&(TRUE, FALSE)^1 <-> FALSE^1 92.95/27.88 &&(FALSE, TRUE)^1 <-> FALSE^1 92.95/27.88 &&(FALSE, FALSE)^1 <-> FALSE^1 92.95/27.88 Cond_isdiv(TRUE, x, 0)^1 <-> TRUE^1 92.95/27.88 Cond_isdiv1(TRUE, x, y)^1 <-> FALSE^1 92.95/27.88 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (47) 92.95/27.88 Obligation: 92.95/27.88 IDP problem: 92.95/27.88 The following function symbols are pre-defined: 92.95/27.88 <<< 92.95/27.88 & ~ Bwand: (Integer, Integer) -> Integer 92.95/27.88 >= ~ Ge: (Integer, Integer) -> Boolean 92.95/27.88 | ~ Bwor: (Integer, Integer) -> Integer 92.95/27.88 / ~ Div: (Integer, Integer) -> Integer 92.95/27.88 != ~ Neq: (Integer, Integer) -> Boolean 92.95/27.88 && ~ Land: (Boolean, Boolean) -> Boolean 92.95/27.88 ! ~ Lnot: (Boolean) -> Boolean 92.95/27.88 = ~ Eq: (Integer, Integer) -> Boolean 92.95/27.88 <= ~ Le: (Integer, Integer) -> Boolean 92.95/27.88 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.95/27.88 % ~ Mod: (Integer, Integer) -> Integer 92.95/27.88 > ~ Gt: (Integer, Integer) -> Boolean 92.95/27.88 + ~ Add: (Integer, Integer) -> Integer 92.95/27.88 -1 ~ Sub: (Integer, Integer) -> Integer 92.95/27.88 < ~ Lt: (Integer, Integer) -> Boolean 92.95/27.88 || ~ Lor: (Boolean, Boolean) -> Boolean 92.95/27.88 - ~ UnaryMinus: (Integer) -> Integer 92.95/27.88 ~ ~ Bwnot: (Integer) -> Integer 92.95/27.88 * ~ Mul: (Integer, Integer) -> Integer 92.95/27.88 >>> 92.95/27.88 92.95/27.88 92.95/27.88 The following domains are used: 92.95/27.88 Integer, Boolean 92.95/27.88 92.95/27.88 The ITRS R consists of the following rules: 92.95/27.88 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.95/27.88 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.95/27.88 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.95/27.88 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.95/27.88 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.95/27.88 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.95/27.88 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.95/27.88 Cond_isdiv(TRUE, x, 0) -> TRUE 92.95/27.88 Cond_isdiv1(TRUE, x, y) -> FALSE 92.95/27.88 92.95/27.88 The integer pair graph contains the following rules and edges: 92.95/27.88 (19): IF_2(FALSE, x[19], y[19], zs[19]) -> FILTER(x[19], zs[19]) 92.95/27.88 (17): IF_1(TRUE, x[17], y[17], zs[17]) -> FILTER(x[17], zs[17]) 92.95/27.88 92.95/27.88 92.95/27.88 The set Q consists of the following terms: 92.95/27.88 isprime(x0) 92.95/27.88 mem(x0, nil) 92.95/27.88 mem(x0, cons(x1, x2)) 92.95/27.88 Cond_mem(TRUE, x0, cons(x1, x2)) 92.95/27.88 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.95/27.88 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.95/27.88 primes(x0) 92.95/27.88 nats(x0, x1) 92.95/27.88 Cond_nats(TRUE, x0, x1) 92.95/27.88 Cond_nats1(TRUE, x0, x1) 92.95/27.88 Cond_nats2(TRUE, x0, x1) 92.95/27.88 sieve(nil) 92.95/27.88 sieve(cons(x0, x1)) 92.95/27.88 filter(x0, nil) 92.95/27.88 filter(x0, cons(x1, x2)) 92.95/27.88 if_1(TRUE, x0, x1, x2) 92.95/27.88 if_2(FALSE, x0, x1, x2) 92.95/27.88 Cond_isdiv(TRUE, x0, 0) 92.95/27.88 isdiv(x0, x1) 92.95/27.88 Cond_isdiv1(TRUE, x0, x1) 92.95/27.88 Cond_isdiv2(TRUE, x0, x1) 92.95/27.88 Cond_isdiv3(TRUE, x0, x1) 92.95/27.88 Cond_isdiv4(TRUE, x0, x1) 92.95/27.88 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (48) IDependencyGraphProof (EQUIVALENT) 92.95/27.88 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes. 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (49) 92.95/27.88 TRUE 92.95/27.88 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (50) 92.95/27.88 Obligation: 92.95/27.88 IDP problem: 92.95/27.88 The following function symbols are pre-defined: 92.95/27.88 <<< 92.95/27.88 & ~ Bwand: (Integer, Integer) -> Integer 92.95/27.88 >= ~ Ge: (Integer, Integer) -> Boolean 92.95/27.88 | ~ Bwor: (Integer, Integer) -> Integer 92.95/27.88 / ~ Div: (Integer, Integer) -> Integer 92.95/27.88 != ~ Neq: (Integer, Integer) -> Boolean 92.95/27.88 && ~ Land: (Boolean, Boolean) -> Boolean 92.95/27.88 ! ~ Lnot: (Boolean) -> Boolean 92.95/27.88 = ~ Eq: (Integer, Integer) -> Boolean 92.95/27.88 <= ~ Le: (Integer, Integer) -> Boolean 92.95/27.88 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.95/27.88 % ~ Mod: (Integer, Integer) -> Integer 92.95/27.88 > ~ Gt: (Integer, Integer) -> Boolean 92.95/27.88 + ~ Add: (Integer, Integer) -> Integer 92.95/27.88 -1 ~ Sub: (Integer, Integer) -> Integer 92.95/27.88 < ~ Lt: (Integer, Integer) -> Boolean 92.95/27.88 || ~ Lor: (Boolean, Boolean) -> Boolean 92.95/27.88 - ~ UnaryMinus: (Integer) -> Integer 92.95/27.88 ~ ~ Bwnot: (Integer) -> Integer 92.95/27.88 * ~ Mul: (Integer, Integer) -> Integer 92.95/27.88 >>> 92.95/27.88 92.95/27.88 92.95/27.88 The following domains are used: 92.95/27.88 Integer, Boolean 92.95/27.88 92.95/27.88 The ITRS R consists of the following rules: 92.95/27.88 primes(x) -> sieve(nats(2, x)) 92.95/27.88 nats(x, y) -> Cond_nats(x > y, x, y) 92.95/27.88 nats(x, y) -> Cond_nats1(x = y, x, y) 92.95/27.88 nats(x, y) -> Cond_nats2(y > x, x, y) 92.95/27.88 filter(x, nil) -> nil 92.95/27.88 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.95/27.88 if_1(TRUE, x, y, zs) -> filter(x, zs) 92.95/27.88 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.95/27.88 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.95/27.88 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.95/27.88 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.95/27.88 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.95/27.88 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.95/27.88 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.95/27.88 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.95/27.88 sieve(nil) -> nil 92.95/27.88 sieve(cons(x, ys)) -> cons(x, sieve(filter(x, ys))) 92.95/27.88 Cond_nats2(TRUE, x, y) -> cons(x, nats(x + 1, y)) 92.95/27.88 Cond_nats(TRUE, x, y) -> nil 92.95/27.88 Cond_nats1(TRUE, x, y) -> cons(x, nil) 92.95/27.88 if_2(FALSE, x, y, zs) -> cons(x, filter(x, zs)) 92.95/27.88 Cond_isdiv(TRUE, x, 0) -> TRUE 92.95/27.88 Cond_isdiv1(TRUE, x, y) -> FALSE 92.95/27.88 92.95/27.88 The integer pair graph contains the following rules and edges: 92.95/27.88 (13): SIEVE(cons(x[13], ys[13])) -> SIEVE(filter(x[13], ys[13])) 92.95/27.88 92.95/27.88 (13) -> (13), if (filter(x[13], ys[13]) ->^* cons(x[13]', ys[13]')) 92.95/27.88 92.95/27.88 The set Q consists of the following terms: 92.95/27.88 isprime(x0) 92.95/27.88 mem(x0, nil) 92.95/27.88 mem(x0, cons(x1, x2)) 92.95/27.88 Cond_mem(TRUE, x0, cons(x1, x2)) 92.95/27.88 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.95/27.88 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.95/27.88 primes(x0) 92.95/27.88 nats(x0, x1) 92.95/27.88 Cond_nats(TRUE, x0, x1) 92.95/27.88 Cond_nats1(TRUE, x0, x1) 92.95/27.88 Cond_nats2(TRUE, x0, x1) 92.95/27.88 sieve(nil) 92.95/27.88 sieve(cons(x0, x1)) 92.95/27.88 filter(x0, nil) 92.95/27.88 filter(x0, cons(x1, x2)) 92.95/27.88 if_1(TRUE, x0, x1, x2) 92.95/27.88 if_2(FALSE, x0, x1, x2) 92.95/27.88 Cond_isdiv(TRUE, x0, 0) 92.95/27.88 isdiv(x0, x1) 92.95/27.88 Cond_isdiv1(TRUE, x0, x1) 92.95/27.88 Cond_isdiv2(TRUE, x0, x1) 92.95/27.88 Cond_isdiv3(TRUE, x0, x1) 92.95/27.88 Cond_isdiv4(TRUE, x0, x1) 92.95/27.88 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (51) UsableRulesProof (EQUIVALENT) 92.95/27.88 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (52) 92.95/27.88 Obligation: 92.95/27.88 IDP problem: 92.95/27.88 The following function symbols are pre-defined: 92.95/27.88 <<< 92.95/27.88 & ~ Bwand: (Integer, Integer) -> Integer 92.95/27.88 >= ~ Ge: (Integer, Integer) -> Boolean 92.95/27.88 | ~ Bwor: (Integer, Integer) -> Integer 92.95/27.88 / ~ Div: (Integer, Integer) -> Integer 92.95/27.88 != ~ Neq: (Integer, Integer) -> Boolean 92.95/27.88 && ~ Land: (Boolean, Boolean) -> Boolean 92.95/27.88 ! ~ Lnot: (Boolean) -> Boolean 92.95/27.88 = ~ Eq: (Integer, Integer) -> Boolean 92.95/27.88 <= ~ Le: (Integer, Integer) -> Boolean 92.95/27.88 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.95/27.88 % ~ Mod: (Integer, Integer) -> Integer 92.95/27.88 > ~ Gt: (Integer, Integer) -> Boolean 92.95/27.88 + ~ Add: (Integer, Integer) -> Integer 92.95/27.88 -1 ~ Sub: (Integer, Integer) -> Integer 92.95/27.88 < ~ Lt: (Integer, Integer) -> Boolean 92.95/27.88 || ~ Lor: (Boolean, Boolean) -> Boolean 92.95/27.88 - ~ UnaryMinus: (Integer) -> Integer 92.95/27.88 ~ ~ Bwnot: (Integer) -> Integer 92.95/27.88 * ~ Mul: (Integer, Integer) -> Integer 92.95/27.88 >>> 92.95/27.88 92.95/27.88 92.95/27.88 The following domains are used: 92.95/27.88 Integer, Boolean 92.95/27.88 92.95/27.88 The ITRS R consists of the following rules: 92.95/27.88 filter(x, nil) -> nil 92.95/27.88 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.95/27.88 if_1(TRUE, x, y, zs) -> filter(x, zs) 92.95/27.88 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.95/27.88 if_2(FALSE, x, y, zs) -> cons(x, filter(x, zs)) 92.95/27.88 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.95/27.88 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.95/27.88 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.95/27.88 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.95/27.88 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.95/27.88 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.95/27.88 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.95/27.88 Cond_isdiv(TRUE, x, 0) -> TRUE 92.95/27.88 Cond_isdiv1(TRUE, x, y) -> FALSE 92.95/27.88 92.95/27.88 The integer pair graph contains the following rules and edges: 92.95/27.88 (13): SIEVE(cons(x[13], ys[13])) -> SIEVE(filter(x[13], ys[13])) 92.95/27.88 92.95/27.88 (13) -> (13), if (filter(x[13], ys[13]) ->^* cons(x[13]', ys[13]')) 92.95/27.88 92.95/27.88 The set Q consists of the following terms: 92.95/27.88 isprime(x0) 92.95/27.88 mem(x0, nil) 92.95/27.88 mem(x0, cons(x1, x2)) 92.95/27.88 Cond_mem(TRUE, x0, cons(x1, x2)) 92.95/27.88 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.95/27.88 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.95/27.88 primes(x0) 92.95/27.88 nats(x0, x1) 92.95/27.88 Cond_nats(TRUE, x0, x1) 92.95/27.88 Cond_nats1(TRUE, x0, x1) 92.95/27.88 Cond_nats2(TRUE, x0, x1) 92.95/27.88 sieve(nil) 92.95/27.88 sieve(cons(x0, x1)) 92.95/27.88 filter(x0, nil) 92.95/27.88 filter(x0, cons(x1, x2)) 92.95/27.88 if_1(TRUE, x0, x1, x2) 92.95/27.88 if_2(FALSE, x0, x1, x2) 92.95/27.88 Cond_isdiv(TRUE, x0, 0) 92.95/27.88 isdiv(x0, x1) 92.95/27.88 Cond_isdiv1(TRUE, x0, x1) 92.95/27.88 Cond_isdiv2(TRUE, x0, x1) 92.95/27.88 Cond_isdiv3(TRUE, x0, x1) 92.95/27.88 Cond_isdiv4(TRUE, x0, x1) 92.95/27.88 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (53) IDPtoQDPProof (SOUND) 92.95/27.88 Represented integers and predefined function symbols by Terms 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (54) 92.95/27.88 Obligation: 92.95/27.88 Q DP problem: 92.95/27.88 The TRS P consists of the following rules: 92.95/27.88 92.95/27.88 SIEVE(cons(x[13], ys[13])) -> SIEVE(filter(x[13], ys[13])) 92.95/27.88 92.95/27.88 The TRS R consists of the following rules: 92.95/27.88 92.95/27.88 filter(x, nil) -> nil 92.95/27.88 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.95/27.88 if_1(true, x, y, zs) -> filter(x, zs) 92.95/27.88 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.95/27.88 if_2(false, x, y, zs) -> cons(x, filter(x, zs)) 92.95/27.88 isdiv(x, pos(01)) -> Cond_isdiv(greater_int(x, pos(01)), x, pos(01)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv1(and(greater_int(x, y), greater_int(y, pos(01))), x, y) 92.95/27.88 isdiv(x, y) -> Cond_isdiv2(and(greatereq_int(y, x), greater_int(x, pos(01))), x, y) 92.95/27.88 Cond_isdiv2(true, x, y) -> isdiv(x, plus_int(neg_int(x), y)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv3(greater_int(pos(01), y), x, y) 92.95/27.88 Cond_isdiv3(true, x, y) -> isdiv(x, neg_int(y)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv4(greater_int(pos(01), x), x, y) 92.95/27.88 Cond_isdiv4(true, x, y) -> isdiv(neg_int(x), y) 92.95/27.88 Cond_isdiv(true, x, pos(01)) -> true 92.95/27.88 Cond_isdiv1(true, x, y) -> false 92.95/27.88 greater_int(pos(01), pos(01)) -> false 92.95/27.88 greater_int(pos(01), neg(01)) -> false 92.95/27.88 greater_int(neg(01), pos(01)) -> false 92.95/27.88 greater_int(neg(01), neg(01)) -> false 92.95/27.88 greater_int(pos(01), pos(s(y))) -> false 92.95/27.88 greater_int(neg(01), pos(s(y))) -> false 92.95/27.88 greater_int(pos(01), neg(s(y))) -> true 92.95/27.88 greater_int(neg(01), neg(s(y))) -> true 92.95/27.88 greater_int(pos(s(x)), pos(01)) -> true 92.95/27.88 greater_int(neg(s(x)), pos(01)) -> false 92.95/27.88 greater_int(pos(s(x)), neg(01)) -> true 92.95/27.88 greater_int(neg(s(x)), neg(01)) -> false 92.95/27.88 greater_int(pos(s(x)), neg(s(y))) -> true 92.95/27.88 greater_int(neg(s(x)), pos(s(y))) -> false 92.95/27.88 greater_int(pos(s(x)), pos(s(y))) -> greater_int(pos(x), pos(y)) 92.95/27.88 greater_int(neg(s(x)), neg(s(y))) -> greater_int(neg(x), neg(y)) 92.95/27.88 and(false, false) -> false 92.95/27.88 and(false, true) -> false 92.95/27.88 and(true, false) -> false 92.95/27.88 and(true, true) -> true 92.95/27.88 greatereq_int(pos(x), pos(01)) -> true 92.95/27.88 greatereq_int(neg(01), pos(01)) -> true 92.95/27.88 greatereq_int(neg(01), neg(y)) -> true 92.95/27.88 greatereq_int(pos(x), neg(y)) -> true 92.95/27.88 greatereq_int(pos(01), pos(s(y))) -> false 92.95/27.88 greatereq_int(neg(x), pos(s(y))) -> false 92.95/27.88 greatereq_int(neg(s(x)), pos(01)) -> false 92.95/27.88 greatereq_int(neg(s(x)), neg(01)) -> false 92.95/27.88 greatereq_int(pos(s(x)), pos(s(y))) -> greatereq_int(pos(x), pos(y)) 92.95/27.88 greatereq_int(neg(s(x)), neg(s(y))) -> greatereq_int(neg(x), neg(y)) 92.95/27.88 plus_int(pos(x), neg(y)) -> minus_nat(x, y) 92.95/27.88 plus_int(neg(x), pos(y)) -> minus_nat(y, x) 92.95/27.88 plus_int(neg(x), neg(y)) -> neg(plus_nat(x, y)) 92.95/27.88 plus_int(pos(x), pos(y)) -> pos(plus_nat(x, y)) 92.95/27.88 plus_nat(01, x) -> x 92.95/27.88 plus_nat(s(x), y) -> s(plus_nat(x, y)) 92.95/27.88 minus_nat(01, 01) -> pos(01) 92.95/27.88 minus_nat(01, s(y)) -> neg(s(y)) 92.95/27.88 minus_nat(s(x), 01) -> pos(s(x)) 92.95/27.88 minus_nat(s(x), s(y)) -> minus_nat(x, y) 92.95/27.88 neg_int(pos(x)) -> neg(x) 92.95/27.88 neg_int(neg(x)) -> pos(x) 92.95/27.88 92.95/27.88 The set Q consists of the following terms: 92.95/27.88 92.95/27.88 isprime(x0) 92.95/27.88 mem(x0, nil) 92.95/27.88 mem(x0, cons(x1, x2)) 92.95/27.88 Cond_mem(true, x0, cons(x1, x2)) 92.95/27.88 Cond_mem1(true, x0, cons(x1, x2)) 92.95/27.88 Cond_mem2(true, x0, cons(x1, x2)) 92.95/27.88 primes(x0) 92.95/27.88 nats(x0, x1) 92.95/27.88 Cond_nats(true, x0, x1) 92.95/27.88 Cond_nats1(true, x0, x1) 92.95/27.88 Cond_nats2(true, x0, x1) 92.95/27.88 sieve(nil) 92.95/27.88 sieve(cons(x0, x1)) 92.95/27.88 filter(x0, nil) 92.95/27.88 filter(x0, cons(x1, x2)) 92.95/27.88 if_1(true, x0, x1, x2) 92.95/27.88 if_2(false, x0, x1, x2) 92.95/27.88 Cond_isdiv(true, x0, pos(01)) 92.95/27.88 isdiv(x0, x1) 92.95/27.88 Cond_isdiv1(true, x0, x1) 92.95/27.88 Cond_isdiv2(true, x0, x1) 92.95/27.88 Cond_isdiv3(true, x0, x1) 92.95/27.88 Cond_isdiv4(true, x0, x1) 92.95/27.88 greater_int(pos(01), pos(01)) 92.95/27.88 greater_int(pos(01), neg(01)) 92.95/27.88 greater_int(neg(01), pos(01)) 92.95/27.88 greater_int(neg(01), neg(01)) 92.95/27.88 greater_int(pos(01), pos(s(x0))) 92.95/27.88 greater_int(neg(01), pos(s(x0))) 92.95/27.88 greater_int(pos(01), neg(s(x0))) 92.95/27.88 greater_int(neg(01), neg(s(x0))) 92.95/27.88 greater_int(pos(s(x0)), pos(01)) 92.95/27.88 greater_int(neg(s(x0)), pos(01)) 92.95/27.88 greater_int(pos(s(x0)), neg(01)) 92.95/27.88 greater_int(neg(s(x0)), neg(01)) 92.95/27.88 greater_int(pos(s(x0)), neg(s(x1))) 92.95/27.88 greater_int(neg(s(x0)), pos(s(x1))) 92.95/27.88 greater_int(pos(s(x0)), pos(s(x1))) 92.95/27.88 greater_int(neg(s(x0)), neg(s(x1))) 92.95/27.88 and(false, false) 92.95/27.88 and(false, true) 92.95/27.88 and(true, false) 92.95/27.88 and(true, true) 92.95/27.88 greatereq_int(pos(x0), pos(01)) 92.95/27.88 greatereq_int(neg(01), pos(01)) 92.95/27.88 greatereq_int(neg(01), neg(x0)) 92.95/27.88 greatereq_int(pos(x0), neg(x1)) 92.95/27.88 greatereq_int(pos(01), pos(s(x0))) 92.95/27.88 greatereq_int(neg(x0), pos(s(x1))) 92.95/27.88 greatereq_int(neg(s(x0)), pos(01)) 92.95/27.88 greatereq_int(neg(s(x0)), neg(01)) 92.95/27.88 greatereq_int(pos(s(x0)), pos(s(x1))) 92.95/27.88 greatereq_int(neg(s(x0)), neg(s(x1))) 92.95/27.88 plus_int(pos(x0), neg(x1)) 92.95/27.88 plus_int(neg(x0), pos(x1)) 92.95/27.88 plus_int(neg(x0), neg(x1)) 92.95/27.88 plus_int(pos(x0), pos(x1)) 92.95/27.88 plus_nat(01, x0) 92.95/27.88 plus_nat(s(x0), x1) 92.95/27.88 minus_nat(01, 01) 92.95/27.88 minus_nat(01, s(x0)) 92.95/27.88 minus_nat(s(x0), 01) 92.95/27.88 minus_nat(s(x0), s(x1)) 92.95/27.88 neg_int(pos(x0)) 92.95/27.88 neg_int(neg(x0)) 92.95/27.88 92.95/27.88 We have to consider all minimal (P,Q,R)-chains. 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (55) QReductionProof (EQUIVALENT) 92.95/27.88 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 92.95/27.88 92.95/27.88 isprime(x0) 92.95/27.88 mem(x0, nil) 92.95/27.88 mem(x0, cons(x1, x2)) 92.95/27.88 Cond_mem(true, x0, cons(x1, x2)) 92.95/27.88 Cond_mem1(true, x0, cons(x1, x2)) 92.95/27.88 Cond_mem2(true, x0, cons(x1, x2)) 92.95/27.88 primes(x0) 92.95/27.88 nats(x0, x1) 92.95/27.88 Cond_nats(true, x0, x1) 92.95/27.88 Cond_nats1(true, x0, x1) 92.95/27.88 Cond_nats2(true, x0, x1) 92.95/27.88 sieve(nil) 92.95/27.88 sieve(cons(x0, x1)) 92.95/27.88 92.95/27.88 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (56) 92.95/27.88 Obligation: 92.95/27.88 Q DP problem: 92.95/27.88 The TRS P consists of the following rules: 92.95/27.88 92.95/27.88 SIEVE(cons(x[13], ys[13])) -> SIEVE(filter(x[13], ys[13])) 92.95/27.88 92.95/27.88 The TRS R consists of the following rules: 92.95/27.88 92.95/27.88 filter(x, nil) -> nil 92.95/27.88 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.95/27.88 if_1(true, x, y, zs) -> filter(x, zs) 92.95/27.88 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.95/27.88 if_2(false, x, y, zs) -> cons(x, filter(x, zs)) 92.95/27.88 isdiv(x, pos(01)) -> Cond_isdiv(greater_int(x, pos(01)), x, pos(01)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv1(and(greater_int(x, y), greater_int(y, pos(01))), x, y) 92.95/27.88 isdiv(x, y) -> Cond_isdiv2(and(greatereq_int(y, x), greater_int(x, pos(01))), x, y) 92.95/27.88 Cond_isdiv2(true, x, y) -> isdiv(x, plus_int(neg_int(x), y)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv3(greater_int(pos(01), y), x, y) 92.95/27.88 Cond_isdiv3(true, x, y) -> isdiv(x, neg_int(y)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv4(greater_int(pos(01), x), x, y) 92.95/27.88 Cond_isdiv4(true, x, y) -> isdiv(neg_int(x), y) 92.95/27.88 Cond_isdiv(true, x, pos(01)) -> true 92.95/27.88 Cond_isdiv1(true, x, y) -> false 92.95/27.88 greater_int(pos(01), pos(01)) -> false 92.95/27.88 greater_int(pos(01), neg(01)) -> false 92.95/27.88 greater_int(neg(01), pos(01)) -> false 92.95/27.88 greater_int(neg(01), neg(01)) -> false 92.95/27.88 greater_int(pos(01), pos(s(y))) -> false 92.95/27.88 greater_int(neg(01), pos(s(y))) -> false 92.95/27.88 greater_int(pos(01), neg(s(y))) -> true 92.95/27.88 greater_int(neg(01), neg(s(y))) -> true 92.95/27.88 greater_int(pos(s(x)), pos(01)) -> true 92.95/27.88 greater_int(neg(s(x)), pos(01)) -> false 92.95/27.88 greater_int(pos(s(x)), neg(01)) -> true 92.95/27.88 greater_int(neg(s(x)), neg(01)) -> false 92.95/27.88 greater_int(pos(s(x)), neg(s(y))) -> true 92.95/27.88 greater_int(neg(s(x)), pos(s(y))) -> false 92.95/27.88 greater_int(pos(s(x)), pos(s(y))) -> greater_int(pos(x), pos(y)) 92.95/27.88 greater_int(neg(s(x)), neg(s(y))) -> greater_int(neg(x), neg(y)) 92.95/27.88 and(false, false) -> false 92.95/27.88 and(false, true) -> false 92.95/27.88 and(true, false) -> false 92.95/27.88 and(true, true) -> true 92.95/27.88 greatereq_int(pos(x), pos(01)) -> true 92.95/27.88 greatereq_int(neg(01), pos(01)) -> true 92.95/27.88 greatereq_int(neg(01), neg(y)) -> true 92.95/27.88 greatereq_int(pos(x), neg(y)) -> true 92.95/27.88 greatereq_int(pos(01), pos(s(y))) -> false 92.95/27.88 greatereq_int(neg(x), pos(s(y))) -> false 92.95/27.88 greatereq_int(neg(s(x)), pos(01)) -> false 92.95/27.88 greatereq_int(neg(s(x)), neg(01)) -> false 92.95/27.88 greatereq_int(pos(s(x)), pos(s(y))) -> greatereq_int(pos(x), pos(y)) 92.95/27.88 greatereq_int(neg(s(x)), neg(s(y))) -> greatereq_int(neg(x), neg(y)) 92.95/27.88 plus_int(pos(x), neg(y)) -> minus_nat(x, y) 92.95/27.88 plus_int(neg(x), pos(y)) -> minus_nat(y, x) 92.95/27.88 plus_int(neg(x), neg(y)) -> neg(plus_nat(x, y)) 92.95/27.88 plus_int(pos(x), pos(y)) -> pos(plus_nat(x, y)) 92.95/27.88 plus_nat(01, x) -> x 92.95/27.88 plus_nat(s(x), y) -> s(plus_nat(x, y)) 92.95/27.88 minus_nat(01, 01) -> pos(01) 92.95/27.88 minus_nat(01, s(y)) -> neg(s(y)) 92.95/27.88 minus_nat(s(x), 01) -> pos(s(x)) 92.95/27.88 minus_nat(s(x), s(y)) -> minus_nat(x, y) 92.95/27.88 neg_int(pos(x)) -> neg(x) 92.95/27.88 neg_int(neg(x)) -> pos(x) 92.95/27.88 92.95/27.88 The set Q consists of the following terms: 92.95/27.88 92.95/27.88 filter(x0, nil) 92.95/27.88 filter(x0, cons(x1, x2)) 92.95/27.88 if_1(true, x0, x1, x2) 92.95/27.88 if_2(false, x0, x1, x2) 92.95/27.88 Cond_isdiv(true, x0, pos(01)) 92.95/27.88 isdiv(x0, x1) 92.95/27.88 Cond_isdiv1(true, x0, x1) 92.95/27.88 Cond_isdiv2(true, x0, x1) 92.95/27.88 Cond_isdiv3(true, x0, x1) 92.95/27.88 Cond_isdiv4(true, x0, x1) 92.95/27.88 greater_int(pos(01), pos(01)) 92.95/27.88 greater_int(pos(01), neg(01)) 92.95/27.88 greater_int(neg(01), pos(01)) 92.95/27.88 greater_int(neg(01), neg(01)) 92.95/27.88 greater_int(pos(01), pos(s(x0))) 92.95/27.88 greater_int(neg(01), pos(s(x0))) 92.95/27.88 greater_int(pos(01), neg(s(x0))) 92.95/27.88 greater_int(neg(01), neg(s(x0))) 92.95/27.88 greater_int(pos(s(x0)), pos(01)) 92.95/27.88 greater_int(neg(s(x0)), pos(01)) 92.95/27.88 greater_int(pos(s(x0)), neg(01)) 92.95/27.88 greater_int(neg(s(x0)), neg(01)) 92.95/27.88 greater_int(pos(s(x0)), neg(s(x1))) 92.95/27.88 greater_int(neg(s(x0)), pos(s(x1))) 92.95/27.88 greater_int(pos(s(x0)), pos(s(x1))) 92.95/27.88 greater_int(neg(s(x0)), neg(s(x1))) 92.95/27.88 and(false, false) 92.95/27.88 and(false, true) 92.95/27.88 and(true, false) 92.95/27.88 and(true, true) 92.95/27.88 greatereq_int(pos(x0), pos(01)) 92.95/27.88 greatereq_int(neg(01), pos(01)) 92.95/27.88 greatereq_int(neg(01), neg(x0)) 92.95/27.88 greatereq_int(pos(x0), neg(x1)) 92.95/27.88 greatereq_int(pos(01), pos(s(x0))) 92.95/27.88 greatereq_int(neg(x0), pos(s(x1))) 92.95/27.88 greatereq_int(neg(s(x0)), pos(01)) 92.95/27.88 greatereq_int(neg(s(x0)), neg(01)) 92.95/27.88 greatereq_int(pos(s(x0)), pos(s(x1))) 92.95/27.88 greatereq_int(neg(s(x0)), neg(s(x1))) 92.95/27.88 plus_int(pos(x0), neg(x1)) 92.95/27.88 plus_int(neg(x0), pos(x1)) 92.95/27.88 plus_int(neg(x0), neg(x1)) 92.95/27.88 plus_int(pos(x0), pos(x1)) 92.95/27.88 plus_nat(01, x0) 92.95/27.88 plus_nat(s(x0), x1) 92.95/27.88 minus_nat(01, 01) 92.95/27.88 minus_nat(01, s(x0)) 92.95/27.88 minus_nat(s(x0), 01) 92.95/27.88 minus_nat(s(x0), s(x1)) 92.95/27.88 neg_int(pos(x0)) 92.95/27.88 neg_int(neg(x0)) 92.95/27.88 92.95/27.88 We have to consider all minimal (P,Q,R)-chains. 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (57) QDPQMonotonicMRRProof (EQUIVALENT) 92.95/27.88 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 92.95/27.88 92.95/27.88 Strictly oriented dependency pairs: 92.95/27.88 92.95/27.88 SIEVE(cons(x[13], ys[13])) -> SIEVE(filter(x[13], ys[13])) 92.95/27.88 92.95/27.88 Strictly oriented rules of the TRS R: 92.95/27.88 92.95/27.88 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.95/27.88 92.95/27.88 Used ordering: Polynomial interpretation [POLO]: 92.95/27.88 92.95/27.88 POL(01) = 0 92.95/27.88 POL(Cond_isdiv(x_1, x_2, x_3)) = 0 92.95/27.88 POL(Cond_isdiv1(x_1, x_2, x_3)) = 0 92.95/27.88 POL(Cond_isdiv2(x_1, x_2, x_3)) = 0 92.95/27.88 POL(Cond_isdiv3(x_1, x_2, x_3)) = 0 92.95/27.88 POL(Cond_isdiv4(x_1, x_2, x_3)) = 0 92.95/27.88 POL(SIEVE(x_1)) = x_1 92.95/27.88 POL(and(x_1, x_2)) = 0 92.95/27.88 POL(cons(x_1, x_2)) = 1 + 2*x_2 92.95/27.88 POL(false) = 0 92.95/27.88 POL(filter(x_1, x_2)) = x_2 92.95/27.88 POL(greater_int(x_1, x_2)) = 0 92.95/27.88 POL(greatereq_int(x_1, x_2)) = 0 92.95/27.88 POL(if_1(x_1, x_2, x_3, x_4)) = x_4 92.95/27.88 POL(if_2(x_1, x_2, x_3, x_4)) = 1 + 2*x_4 92.95/27.88 POL(isdiv(x_1, x_2)) = 0 92.95/27.88 POL(minus_nat(x_1, x_2)) = 0 92.95/27.88 POL(neg(x_1)) = 0 92.95/27.88 POL(neg_int(x_1)) = 0 92.95/27.88 POL(nil) = 0 92.95/27.88 POL(plus_int(x_1, x_2)) = 0 92.95/27.88 POL(plus_nat(x_1, x_2)) = 2*x_2 92.95/27.88 POL(pos(x_1)) = 0 92.95/27.88 POL(s(x_1)) = 0 92.95/27.88 POL(true) = 0 92.95/27.88 92.95/27.88 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (58) 92.95/27.88 Obligation: 92.95/27.88 Q DP problem: 92.95/27.88 P is empty. 92.95/27.88 The TRS R consists of the following rules: 92.95/27.88 92.95/27.88 filter(x, nil) -> nil 92.95/27.88 if_1(true, x, y, zs) -> filter(x, zs) 92.95/27.88 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.95/27.88 if_2(false, x, y, zs) -> cons(x, filter(x, zs)) 92.95/27.88 isdiv(x, pos(01)) -> Cond_isdiv(greater_int(x, pos(01)), x, pos(01)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv1(and(greater_int(x, y), greater_int(y, pos(01))), x, y) 92.95/27.88 isdiv(x, y) -> Cond_isdiv2(and(greatereq_int(y, x), greater_int(x, pos(01))), x, y) 92.95/27.88 Cond_isdiv2(true, x, y) -> isdiv(x, plus_int(neg_int(x), y)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv3(greater_int(pos(01), y), x, y) 92.95/27.88 Cond_isdiv3(true, x, y) -> isdiv(x, neg_int(y)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv4(greater_int(pos(01), x), x, y) 92.95/27.88 Cond_isdiv4(true, x, y) -> isdiv(neg_int(x), y) 92.95/27.88 Cond_isdiv(true, x, pos(01)) -> true 92.95/27.88 Cond_isdiv1(true, x, y) -> false 92.95/27.88 greater_int(pos(01), pos(01)) -> false 92.95/27.88 greater_int(pos(01), neg(01)) -> false 92.95/27.88 greater_int(neg(01), pos(01)) -> false 92.95/27.88 greater_int(neg(01), neg(01)) -> false 92.95/27.88 greater_int(pos(01), pos(s(y))) -> false 92.95/27.88 greater_int(neg(01), pos(s(y))) -> false 92.95/27.88 greater_int(pos(01), neg(s(y))) -> true 92.95/27.88 greater_int(neg(01), neg(s(y))) -> true 92.95/27.88 greater_int(pos(s(x)), pos(01)) -> true 92.95/27.88 greater_int(neg(s(x)), pos(01)) -> false 92.95/27.88 greater_int(pos(s(x)), neg(01)) -> true 92.95/27.88 greater_int(neg(s(x)), neg(01)) -> false 92.95/27.88 greater_int(pos(s(x)), neg(s(y))) -> true 92.95/27.88 greater_int(neg(s(x)), pos(s(y))) -> false 92.95/27.88 greater_int(pos(s(x)), pos(s(y))) -> greater_int(pos(x), pos(y)) 92.95/27.88 greater_int(neg(s(x)), neg(s(y))) -> greater_int(neg(x), neg(y)) 92.95/27.88 and(false, false) -> false 92.95/27.88 and(false, true) -> false 92.95/27.88 and(true, false) -> false 92.95/27.88 and(true, true) -> true 92.95/27.88 greatereq_int(pos(x), pos(01)) -> true 92.95/27.88 greatereq_int(neg(01), pos(01)) -> true 92.95/27.88 greatereq_int(neg(01), neg(y)) -> true 92.95/27.88 greatereq_int(pos(x), neg(y)) -> true 92.95/27.88 greatereq_int(pos(01), pos(s(y))) -> false 92.95/27.88 greatereq_int(neg(x), pos(s(y))) -> false 92.95/27.88 greatereq_int(neg(s(x)), pos(01)) -> false 92.95/27.88 greatereq_int(neg(s(x)), neg(01)) -> false 92.95/27.88 greatereq_int(pos(s(x)), pos(s(y))) -> greatereq_int(pos(x), pos(y)) 92.95/27.88 greatereq_int(neg(s(x)), neg(s(y))) -> greatereq_int(neg(x), neg(y)) 92.95/27.88 plus_int(pos(x), neg(y)) -> minus_nat(x, y) 92.95/27.88 plus_int(neg(x), pos(y)) -> minus_nat(y, x) 92.95/27.88 plus_int(neg(x), neg(y)) -> neg(plus_nat(x, y)) 92.95/27.88 plus_int(pos(x), pos(y)) -> pos(plus_nat(x, y)) 92.95/27.88 plus_nat(01, x) -> x 92.95/27.88 plus_nat(s(x), y) -> s(plus_nat(x, y)) 92.95/27.88 minus_nat(01, 01) -> pos(01) 92.95/27.88 minus_nat(01, s(y)) -> neg(s(y)) 92.95/27.88 minus_nat(s(x), 01) -> pos(s(x)) 92.95/27.88 minus_nat(s(x), s(y)) -> minus_nat(x, y) 92.95/27.88 neg_int(pos(x)) -> neg(x) 92.95/27.88 neg_int(neg(x)) -> pos(x) 92.95/27.88 92.95/27.88 The set Q consists of the following terms: 92.95/27.88 92.95/27.88 filter(x0, nil) 92.95/27.88 filter(x0, cons(x1, x2)) 92.95/27.88 if_1(true, x0, x1, x2) 92.95/27.88 if_2(false, x0, x1, x2) 92.95/27.88 Cond_isdiv(true, x0, pos(01)) 92.95/27.88 isdiv(x0, x1) 92.95/27.88 Cond_isdiv1(true, x0, x1) 92.95/27.88 Cond_isdiv2(true, x0, x1) 92.95/27.88 Cond_isdiv3(true, x0, x1) 92.95/27.88 Cond_isdiv4(true, x0, x1) 92.95/27.88 greater_int(pos(01), pos(01)) 92.95/27.88 greater_int(pos(01), neg(01)) 92.95/27.88 greater_int(neg(01), pos(01)) 92.95/27.88 greater_int(neg(01), neg(01)) 92.95/27.88 greater_int(pos(01), pos(s(x0))) 92.95/27.88 greater_int(neg(01), pos(s(x0))) 92.95/27.88 greater_int(pos(01), neg(s(x0))) 92.95/27.88 greater_int(neg(01), neg(s(x0))) 92.95/27.88 greater_int(pos(s(x0)), pos(01)) 92.95/27.88 greater_int(neg(s(x0)), pos(01)) 92.95/27.88 greater_int(pos(s(x0)), neg(01)) 92.95/27.88 greater_int(neg(s(x0)), neg(01)) 92.95/27.88 greater_int(pos(s(x0)), neg(s(x1))) 92.95/27.88 greater_int(neg(s(x0)), pos(s(x1))) 92.95/27.88 greater_int(pos(s(x0)), pos(s(x1))) 92.95/27.88 greater_int(neg(s(x0)), neg(s(x1))) 92.95/27.88 and(false, false) 92.95/27.88 and(false, true) 92.95/27.88 and(true, false) 92.95/27.88 and(true, true) 92.95/27.88 greatereq_int(pos(x0), pos(01)) 92.95/27.88 greatereq_int(neg(01), pos(01)) 92.95/27.88 greatereq_int(neg(01), neg(x0)) 92.95/27.88 greatereq_int(pos(x0), neg(x1)) 92.95/27.88 greatereq_int(pos(01), pos(s(x0))) 92.95/27.88 greatereq_int(neg(x0), pos(s(x1))) 92.95/27.88 greatereq_int(neg(s(x0)), pos(01)) 92.95/27.88 greatereq_int(neg(s(x0)), neg(01)) 92.95/27.88 greatereq_int(pos(s(x0)), pos(s(x1))) 92.95/27.88 greatereq_int(neg(s(x0)), neg(s(x1))) 92.95/27.88 plus_int(pos(x0), neg(x1)) 92.95/27.88 plus_int(neg(x0), pos(x1)) 92.95/27.88 plus_int(neg(x0), neg(x1)) 92.95/27.88 plus_int(pos(x0), pos(x1)) 92.95/27.88 plus_nat(01, x0) 92.95/27.88 plus_nat(s(x0), x1) 92.95/27.88 minus_nat(01, 01) 92.95/27.88 minus_nat(01, s(x0)) 92.95/27.88 minus_nat(s(x0), 01) 92.95/27.88 minus_nat(s(x0), s(x1)) 92.95/27.88 neg_int(pos(x0)) 92.95/27.88 neg_int(neg(x0)) 92.95/27.88 92.95/27.88 We have to consider all minimal (P,Q,R)-chains. 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (59) PisEmptyProof (EQUIVALENT) 92.95/27.88 The TRS P is empty. Hence, there is no (P,Q,R) chain. 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (60) 92.95/27.88 YES 92.95/27.88 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (61) 92.95/27.88 Obligation: 92.95/27.88 IDP problem: 92.95/27.88 The following function symbols are pre-defined: 92.95/27.88 <<< 92.95/27.88 & ~ Bwand: (Integer, Integer) -> Integer 92.95/27.88 >= ~ Ge: (Integer, Integer) -> Boolean 92.95/27.88 | ~ Bwor: (Integer, Integer) -> Integer 92.95/27.88 / ~ Div: (Integer, Integer) -> Integer 92.95/27.88 != ~ Neq: (Integer, Integer) -> Boolean 92.95/27.88 && ~ Land: (Boolean, Boolean) -> Boolean 92.95/27.88 ! ~ Lnot: (Boolean) -> Boolean 92.95/27.88 = ~ Eq: (Integer, Integer) -> Boolean 92.95/27.88 <= ~ Le: (Integer, Integer) -> Boolean 92.95/27.88 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.95/27.88 % ~ Mod: (Integer, Integer) -> Integer 92.95/27.88 > ~ Gt: (Integer, Integer) -> Boolean 92.95/27.88 + ~ Add: (Integer, Integer) -> Integer 92.95/27.88 -1 ~ Sub: (Integer, Integer) -> Integer 92.95/27.88 < ~ Lt: (Integer, Integer) -> Boolean 92.95/27.88 || ~ Lor: (Boolean, Boolean) -> Boolean 92.95/27.88 - ~ UnaryMinus: (Integer) -> Integer 92.95/27.88 ~ ~ Bwnot: (Integer) -> Integer 92.95/27.88 * ~ Mul: (Integer, Integer) -> Integer 92.95/27.88 >>> 92.95/27.88 92.95/27.88 92.95/27.88 The following domains are used: 92.95/27.88 Integer, Boolean 92.95/27.88 92.95/27.88 The ITRS R consists of the following rules: 92.95/27.88 primes(x) -> sieve(nats(2, x)) 92.95/27.88 nats(x, y) -> Cond_nats(x > y, x, y) 92.95/27.88 nats(x, y) -> Cond_nats1(x = y, x, y) 92.95/27.88 nats(x, y) -> Cond_nats2(y > x, x, y) 92.95/27.88 filter(x, nil) -> nil 92.95/27.88 filter(x, cons(y, zs)) -> if_1(isdiv(x, y), x, y, zs) 92.95/27.88 if_1(TRUE, x, y, zs) -> filter(x, zs) 92.95/27.88 filter(x, cons(y, zs)) -> if_2(isdiv(x, y), x, y, zs) 92.95/27.88 isdiv(x, 0) -> Cond_isdiv(x > 0, x, 0) 92.95/27.88 isdiv(x, y) -> Cond_isdiv1(x > y && y > 0, x, y) 92.95/27.88 isdiv(x, y) -> Cond_isdiv2(y >= x && x > 0, x, y) 92.95/27.88 Cond_isdiv2(TRUE, x, y) -> isdiv(x, -(x) + y) 92.95/27.88 isdiv(x, y) -> Cond_isdiv3(0 > y, x, y) 92.95/27.88 Cond_isdiv3(TRUE, x, y) -> isdiv(x, -(y)) 92.95/27.88 isdiv(x, y) -> Cond_isdiv4(0 > x, x, y) 92.95/27.88 Cond_isdiv4(TRUE, x, y) -> isdiv(-(x), y) 92.95/27.88 sieve(nil) -> nil 92.95/27.88 sieve(cons(x, ys)) -> cons(x, sieve(filter(x, ys))) 92.95/27.88 Cond_nats2(TRUE, x, y) -> cons(x, nats(x + 1, y)) 92.95/27.88 Cond_nats(TRUE, x, y) -> nil 92.95/27.88 Cond_nats1(TRUE, x, y) -> cons(x, nil) 92.95/27.88 if_2(FALSE, x, y, zs) -> cons(x, filter(x, zs)) 92.95/27.88 Cond_isdiv(TRUE, x, 0) -> TRUE 92.95/27.88 Cond_isdiv1(TRUE, x, y) -> FALSE 92.95/27.88 92.95/27.88 The integer pair graph contains the following rules and edges: 92.95/27.88 (12): COND_NATS2(TRUE, x[12], y[12]) -> NATS(x[12] + 1, y[12]) 92.95/27.88 (11): NATS(x[11], y[11]) -> COND_NATS2(y[11] > x[11], x[11], y[11]) 92.95/27.88 92.95/27.88 (12) -> (11), if (x[12] + 1 ->^* x[11] & y[12] ->^* y[11]) 92.95/27.88 (11) -> (12), if (y[11] > x[11] & x[11] ->^* x[12] & y[11] ->^* y[12]) 92.95/27.88 92.95/27.88 The set Q consists of the following terms: 92.95/27.88 isprime(x0) 92.95/27.88 mem(x0, nil) 92.95/27.88 mem(x0, cons(x1, x2)) 92.95/27.88 Cond_mem(TRUE, x0, cons(x1, x2)) 92.95/27.88 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.95/27.88 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.95/27.88 primes(x0) 92.95/27.88 nats(x0, x1) 92.95/27.88 Cond_nats(TRUE, x0, x1) 92.95/27.88 Cond_nats1(TRUE, x0, x1) 92.95/27.88 Cond_nats2(TRUE, x0, x1) 92.95/27.88 sieve(nil) 92.95/27.88 sieve(cons(x0, x1)) 92.95/27.88 filter(x0, nil) 92.95/27.88 filter(x0, cons(x1, x2)) 92.95/27.88 if_1(TRUE, x0, x1, x2) 92.95/27.88 if_2(FALSE, x0, x1, x2) 92.95/27.88 Cond_isdiv(TRUE, x0, 0) 92.95/27.88 isdiv(x0, x1) 92.95/27.88 Cond_isdiv1(TRUE, x0, x1) 92.95/27.88 Cond_isdiv2(TRUE, x0, x1) 92.95/27.88 Cond_isdiv3(TRUE, x0, x1) 92.95/27.88 Cond_isdiv4(TRUE, x0, x1) 92.95/27.88 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (62) UsableRulesProof (EQUIVALENT) 92.95/27.88 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (63) 92.95/27.88 Obligation: 92.95/27.88 IDP problem: 92.95/27.88 The following function symbols are pre-defined: 92.95/27.88 <<< 92.95/27.88 & ~ Bwand: (Integer, Integer) -> Integer 92.95/27.88 >= ~ Ge: (Integer, Integer) -> Boolean 92.95/27.88 | ~ Bwor: (Integer, Integer) -> Integer 92.95/27.88 / ~ Div: (Integer, Integer) -> Integer 92.95/27.88 != ~ Neq: (Integer, Integer) -> Boolean 92.95/27.88 && ~ Land: (Boolean, Boolean) -> Boolean 92.95/27.88 ! ~ Lnot: (Boolean) -> Boolean 92.95/27.88 = ~ Eq: (Integer, Integer) -> Boolean 92.95/27.88 <= ~ Le: (Integer, Integer) -> Boolean 92.95/27.88 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.95/27.88 % ~ Mod: (Integer, Integer) -> Integer 92.95/27.88 > ~ Gt: (Integer, Integer) -> Boolean 92.95/27.88 + ~ Add: (Integer, Integer) -> Integer 92.95/27.88 -1 ~ Sub: (Integer, Integer) -> Integer 92.95/27.88 < ~ Lt: (Integer, Integer) -> Boolean 92.95/27.88 || ~ Lor: (Boolean, Boolean) -> Boolean 92.95/27.88 - ~ UnaryMinus: (Integer) -> Integer 92.95/27.88 ~ ~ Bwnot: (Integer) -> Integer 92.95/27.88 * ~ Mul: (Integer, Integer) -> Integer 92.95/27.88 >>> 92.95/27.88 92.95/27.88 92.95/27.88 The following domains are used: 92.95/27.88 Integer 92.95/27.88 92.95/27.88 R is empty. 92.95/27.88 92.95/27.88 The integer pair graph contains the following rules and edges: 92.95/27.88 (12): COND_NATS2(TRUE, x[12], y[12]) -> NATS(x[12] + 1, y[12]) 92.95/27.88 (11): NATS(x[11], y[11]) -> COND_NATS2(y[11] > x[11], x[11], y[11]) 92.95/27.88 92.95/27.88 (12) -> (11), if (x[12] + 1 ->^* x[11] & y[12] ->^* y[11]) 92.95/27.88 (11) -> (12), if (y[11] > x[11] & x[11] ->^* x[12] & y[11] ->^* y[12]) 92.95/27.88 92.95/27.88 The set Q consists of the following terms: 92.95/27.88 isprime(x0) 92.95/27.88 mem(x0, nil) 92.95/27.88 mem(x0, cons(x1, x2)) 92.95/27.88 Cond_mem(TRUE, x0, cons(x1, x2)) 92.95/27.88 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.95/27.88 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.95/27.88 primes(x0) 92.95/27.88 nats(x0, x1) 92.95/27.88 Cond_nats(TRUE, x0, x1) 92.95/27.88 Cond_nats1(TRUE, x0, x1) 92.95/27.88 Cond_nats2(TRUE, x0, x1) 92.95/27.88 sieve(nil) 92.95/27.88 sieve(cons(x0, x1)) 92.95/27.88 filter(x0, nil) 92.95/27.88 filter(x0, cons(x1, x2)) 92.95/27.88 if_1(TRUE, x0, x1, x2) 92.95/27.88 if_2(FALSE, x0, x1, x2) 92.95/27.88 Cond_isdiv(TRUE, x0, 0) 92.95/27.88 isdiv(x0, x1) 92.95/27.88 Cond_isdiv1(TRUE, x0, x1) 92.95/27.88 Cond_isdiv2(TRUE, x0, x1) 92.95/27.88 Cond_isdiv3(TRUE, x0, x1) 92.95/27.88 Cond_isdiv4(TRUE, x0, x1) 92.95/27.88 92.95/27.88 ---------------------------------------- 92.95/27.88 92.95/27.88 (64) IDPNonInfProof (SOUND) 92.95/27.88 Used the following options for this NonInfProof: 92.95/27.88 92.95/27.88 IDPGPoloSolver: 92.95/27.88 Range: [(-1,2)] 92.95/27.88 IsNat: false 92.95/27.88 Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@54a124c6 92.95/27.88 Constraint Generator: NonInfConstraintGenerator: 92.95/27.88 PathGenerator: MetricPathGenerator: 92.95/27.88 Max Left Steps: 1 92.95/27.88 Max Right Steps: 1 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 The constraints were generated the following way: 92.95/27.88 92.95/27.88 The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps: 92.95/27.88 92.95/27.88 Note that final constraints are written in bold face. 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 For Pair COND_NATS2(TRUE, x[12], y[12]) -> NATS(+(x[12], 1), y[12]) the following chains were created: 92.95/27.88 *We consider the chain NATS(x[11], y[11]) -> COND_NATS2(>(y[11], x[11]), x[11], y[11]), COND_NATS2(TRUE, x[12], y[12]) -> NATS(+(x[12], 1), y[12]), NATS(x[11], y[11]) -> COND_NATS2(>(y[11], x[11]), x[11], y[11]) which results in the following constraint: 92.95/27.88 92.95/27.88 (1) (>(y[11], x[11])=TRUE & x[11]=x[12] & y[11]=y[12] & +(x[12], 1)=x[11]1 & y[12]=y[11]1 ==> COND_NATS2(TRUE, x[12], y[12])_>=_NonInfC & COND_NATS2(TRUE, x[12], y[12])_>=_NATS(+(x[12], 1), y[12]) & (U^Increasing(NATS(+(x[12], 1), y[12])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (1) using rules (III), (IV) which results in the following new constraint: 92.95/27.88 92.95/27.88 (2) (>(y[11], x[11])=TRUE ==> COND_NATS2(TRUE, x[11], y[11])_>=_NonInfC & COND_NATS2(TRUE, x[11], y[11])_>=_NATS(+(x[11], 1), y[11]) & (U^Increasing(NATS(+(x[12], 1), y[12])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (3) (y[11] + [-1] + [-1]x[11] >= 0 ==> (U^Increasing(NATS(+(x[12], 1), y[12])), >=) & [(-1)bni_11 + (-1)Bound*bni_11] + [bni_11]y[11] + [(-1)bni_11]x[11] >= 0 & [1 + (-1)bso_12] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (4) (y[11] + [-1] + [-1]x[11] >= 0 ==> (U^Increasing(NATS(+(x[12], 1), y[12])), >=) & [(-1)bni_11 + (-1)Bound*bni_11] + [bni_11]y[11] + [(-1)bni_11]x[11] >= 0 & [1 + (-1)bso_12] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (5) (y[11] + [-1] + [-1]x[11] >= 0 ==> (U^Increasing(NATS(+(x[12], 1), y[12])), >=) & [(-1)bni_11 + (-1)Bound*bni_11] + [bni_11]y[11] + [(-1)bni_11]x[11] >= 0 & [1 + (-1)bso_12] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.95/27.88 92.95/27.88 (6) (y[11] >= 0 ==> (U^Increasing(NATS(+(x[12], 1), y[12])), >=) & [(-1)Bound*bni_11] + [bni_11]y[11] >= 0 & [1 + (-1)bso_12] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraints: 92.95/27.88 92.95/27.88 (7) (y[11] >= 0 & x[11] >= 0 ==> (U^Increasing(NATS(+(x[12], 1), y[12])), >=) & [(-1)Bound*bni_11] + [bni_11]y[11] >= 0 & [1 + (-1)bso_12] >= 0) 92.95/27.88 92.95/27.88 (8) (y[11] >= 0 & x[11] >= 0 ==> (U^Increasing(NATS(+(x[12], 1), y[12])), >=) & [(-1)Bound*bni_11] + [bni_11]y[11] >= 0 & [1 + (-1)bso_12] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 For Pair NATS(x[11], y[11]) -> COND_NATS2(>(y[11], x[11]), x[11], y[11]) the following chains were created: 92.95/27.88 *We consider the chain NATS(x[11], y[11]) -> COND_NATS2(>(y[11], x[11]), x[11], y[11]), COND_NATS2(TRUE, x[12], y[12]) -> NATS(+(x[12], 1), y[12]) which results in the following constraint: 92.95/27.88 92.95/27.88 (1) (>(y[11], x[11])=TRUE & x[11]=x[12] & y[11]=y[12] ==> NATS(x[11], y[11])_>=_NonInfC & NATS(x[11], y[11])_>=_COND_NATS2(>(y[11], x[11]), x[11], y[11]) & (U^Increasing(COND_NATS2(>(y[11], x[11]), x[11], y[11])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (1) using rule (IV) which results in the following new constraint: 92.95/27.88 92.95/27.88 (2) (>(y[11], x[11])=TRUE ==> NATS(x[11], y[11])_>=_NonInfC & NATS(x[11], y[11])_>=_COND_NATS2(>(y[11], x[11]), x[11], y[11]) & (U^Increasing(COND_NATS2(>(y[11], x[11]), x[11], y[11])), >=)) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint: 92.95/27.88 92.95/27.88 (3) (y[11] + [-1] + [-1]x[11] >= 0 ==> (U^Increasing(COND_NATS2(>(y[11], x[11]), x[11], y[11])), >=) & [(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]y[11] + [(-1)bni_13]x[11] >= 0 & [(-1)bso_14] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint: 92.95/27.88 92.95/27.88 (4) (y[11] + [-1] + [-1]x[11] >= 0 ==> (U^Increasing(COND_NATS2(>(y[11], x[11]), x[11], y[11])), >=) & [(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]y[11] + [(-1)bni_13]x[11] >= 0 & [(-1)bso_14] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint: 92.95/27.88 92.95/27.88 (5) (y[11] + [-1] + [-1]x[11] >= 0 ==> (U^Increasing(COND_NATS2(>(y[11], x[11]), x[11], y[11])), >=) & [(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]y[11] + [(-1)bni_13]x[11] >= 0 & [(-1)bso_14] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint: 92.95/27.88 92.95/27.88 (6) (y[11] >= 0 ==> (U^Increasing(COND_NATS2(>(y[11], x[11]), x[11], y[11])), >=) & [(-1)Bound*bni_13] + [bni_13]y[11] >= 0 & [(-1)bso_14] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraints: 92.95/27.88 92.95/27.88 (7) (y[11] >= 0 & x[11] >= 0 ==> (U^Increasing(COND_NATS2(>(y[11], x[11]), x[11], y[11])), >=) & [(-1)Bound*bni_13] + [bni_13]y[11] >= 0 & [(-1)bso_14] >= 0) 92.95/27.88 92.95/27.88 (8) (y[11] >= 0 & x[11] >= 0 ==> (U^Increasing(COND_NATS2(>(y[11], x[11]), x[11], y[11])), >=) & [(-1)Bound*bni_13] + [bni_13]y[11] >= 0 & [(-1)bso_14] >= 0) 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 92.95/27.88 To summarize, we get the following constraints P__>=_ for the following pairs. 92.95/27.88 92.95/27.88 *COND_NATS2(TRUE, x[12], y[12]) -> NATS(+(x[12], 1), y[12]) 92.95/27.88 92.95/27.88 *(y[11] >= 0 & x[11] >= 0 ==> (U^Increasing(NATS(+(x[12], 1), y[12])), >=) & [(-1)Bound*bni_11] + [bni_11]y[11] >= 0 & [1 + (-1)bso_12] >= 0) 92.95/27.89 92.95/27.89 92.95/27.89 *(y[11] >= 0 & x[11] >= 0 ==> (U^Increasing(NATS(+(x[12], 1), y[12])), >=) & [(-1)Bound*bni_11] + [bni_11]y[11] >= 0 & [1 + (-1)bso_12] >= 0) 92.95/27.89 92.95/27.89 92.95/27.89 92.95/27.89 92.95/27.89 *NATS(x[11], y[11]) -> COND_NATS2(>(y[11], x[11]), x[11], y[11]) 92.95/27.89 92.95/27.89 *(y[11] >= 0 & x[11] >= 0 ==> (U^Increasing(COND_NATS2(>(y[11], x[11]), x[11], y[11])), >=) & [(-1)Bound*bni_13] + [bni_13]y[11] >= 0 & [(-1)bso_14] >= 0) 92.95/27.89 92.95/27.89 92.95/27.89 *(y[11] >= 0 & x[11] >= 0 ==> (U^Increasing(COND_NATS2(>(y[11], x[11]), x[11], y[11])), >=) & [(-1)Bound*bni_13] + [bni_13]y[11] >= 0 & [(-1)bso_14] >= 0) 92.95/27.89 92.95/27.89 92.95/27.89 92.95/27.89 92.95/27.89 92.95/27.89 92.95/27.89 92.95/27.89 92.95/27.89 The constraints for P_> respective P_bound are constructed from P__>=_ where we just replace every occurence of "t _>=_ s" in P__>=_ by "t > s" respective "t _>=_ c". Here c stands for the fresh constant used for P_bound. 92.95/27.89 92.95/27.89 Using the following integer polynomial ordering the resulting constraints can be solved 92.95/27.89 92.95/27.89 Polynomial interpretation over integers[POLO]: 92.95/27.89 92.95/27.89 POL(TRUE) = 0 92.95/27.89 POL(FALSE) = 0 92.95/27.89 POL(COND_NATS2(x_1, x_2, x_3)) = [-1] + x_3 + [-1]x_2 92.95/27.89 POL(NATS(x_1, x_2)) = [-1] + x_2 + [-1]x_1 92.95/27.89 POL(+(x_1, x_2)) = x_1 + x_2 92.95/27.89 POL(1) = [1] 92.95/27.89 POL(>(x_1, x_2)) = [-1] 92.95/27.89 92.95/27.89 92.95/27.89 The following pairs are in P_>: 92.95/27.89 92.95/27.89 92.95/27.89 COND_NATS2(TRUE, x[12], y[12]) -> NATS(+(x[12], 1), y[12]) 92.95/27.89 92.95/27.89 92.95/27.89 The following pairs are in P_bound: 92.95/27.89 92.95/27.89 92.95/27.89 COND_NATS2(TRUE, x[12], y[12]) -> NATS(+(x[12], 1), y[12]) 92.95/27.89 NATS(x[11], y[11]) -> COND_NATS2(>(y[11], x[11]), x[11], y[11]) 92.95/27.89 92.95/27.89 92.95/27.89 The following pairs are in P_>=: 92.95/27.89 92.95/27.89 92.95/27.89 NATS(x[11], y[11]) -> COND_NATS2(>(y[11], x[11]), x[11], y[11]) 92.95/27.89 92.95/27.89 92.95/27.89 There are no usable rules. 92.95/27.89 ---------------------------------------- 92.95/27.89 92.95/27.89 (65) 92.95/27.89 Obligation: 92.95/27.89 IDP problem: 92.95/27.89 The following function symbols are pre-defined: 92.95/27.89 <<< 92.95/27.89 & ~ Bwand: (Integer, Integer) -> Integer 92.95/27.89 >= ~ Ge: (Integer, Integer) -> Boolean 92.95/27.89 | ~ Bwor: (Integer, Integer) -> Integer 92.95/27.89 / ~ Div: (Integer, Integer) -> Integer 92.95/27.89 != ~ Neq: (Integer, Integer) -> Boolean 92.95/27.89 && ~ Land: (Boolean, Boolean) -> Boolean 92.95/27.89 ! ~ Lnot: (Boolean) -> Boolean 92.95/27.89 = ~ Eq: (Integer, Integer) -> Boolean 92.95/27.89 <= ~ Le: (Integer, Integer) -> Boolean 92.95/27.89 ^ ~ Bwxor: (Integer, Integer) -> Integer 92.95/27.89 % ~ Mod: (Integer, Integer) -> Integer 92.95/27.89 > ~ Gt: (Integer, Integer) -> Boolean 92.95/27.89 + ~ Add: (Integer, Integer) -> Integer 92.95/27.89 -1 ~ Sub: (Integer, Integer) -> Integer 92.95/27.89 < ~ Lt: (Integer, Integer) -> Boolean 92.95/27.89 || ~ Lor: (Boolean, Boolean) -> Boolean 92.95/27.89 - ~ UnaryMinus: (Integer) -> Integer 92.95/27.89 ~ ~ Bwnot: (Integer) -> Integer 92.95/27.89 * ~ Mul: (Integer, Integer) -> Integer 92.95/27.89 >>> 92.95/27.89 92.95/27.89 92.95/27.89 The following domains are used: 92.95/27.89 Integer 92.95/27.89 92.95/27.89 R is empty. 92.95/27.89 92.95/27.89 The integer pair graph contains the following rules and edges: 92.95/27.89 (11): NATS(x[11], y[11]) -> COND_NATS2(y[11] > x[11], x[11], y[11]) 92.95/27.89 92.95/27.89 92.95/27.89 The set Q consists of the following terms: 92.95/27.89 isprime(x0) 92.95/27.89 mem(x0, nil) 92.95/27.89 mem(x0, cons(x1, x2)) 92.95/27.89 Cond_mem(TRUE, x0, cons(x1, x2)) 92.95/27.89 Cond_mem1(TRUE, x0, cons(x1, x2)) 92.95/27.89 Cond_mem2(TRUE, x0, cons(x1, x2)) 92.95/27.89 primes(x0) 92.95/27.89 nats(x0, x1) 92.95/27.89 Cond_nats(TRUE, x0, x1) 92.95/27.89 Cond_nats1(TRUE, x0, x1) 92.95/27.89 Cond_nats2(TRUE, x0, x1) 92.95/27.89 sieve(nil) 92.95/27.89 sieve(cons(x0, x1)) 92.95/27.89 filter(x0, nil) 92.95/27.89 filter(x0, cons(x1, x2)) 92.95/27.89 if_1(TRUE, x0, x1, x2) 92.95/27.89 if_2(FALSE, x0, x1, x2) 92.95/27.89 Cond_isdiv(TRUE, x0, 0) 92.95/27.89 isdiv(x0, x1) 92.95/27.89 Cond_isdiv1(TRUE, x0, x1) 92.95/27.89 Cond_isdiv2(TRUE, x0, x1) 92.95/27.89 Cond_isdiv3(TRUE, x0, x1) 92.95/27.89 Cond_isdiv4(TRUE, x0, x1) 92.95/27.89 92.95/27.89 ---------------------------------------- 92.95/27.89 92.95/27.89 (66) IDependencyGraphProof (EQUIVALENT) 92.95/27.89 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. 92.95/27.89 ---------------------------------------- 92.95/27.89 92.95/27.89 (67) 92.95/27.89 TRUE 92.95/27.94 EOF