WORST_CASE(Omega(n^1),O(n^2)) proof of /export/starexec/sandbox/benchmark/theBenchmark.trs # AProVE Commit ID: c69e44bd14796315568835c1ffa2502984884775 mhark 20210624 unpublished The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 2547 ms] (2) CpxRelTRS (3) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxWeightedTrs (5) CpxWeightedTrsRenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxWeightedTrs (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxTypedWeightedTrs (9) CompletionProof [UPPER BOUND(ID), 16 ms] (10) CpxTypedWeightedCompleteTrs (11) NarrowingProof [BOTH BOUNDS(ID, ID), 1746 ms] (12) CpxTypedWeightedCompleteTrs (13) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (14) CpxRNTS (15) InliningProof [UPPER BOUND(ID), 2293 ms] (16) CpxRNTS (17) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRNTS (19) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 10 ms] (20) CpxRNTS (21) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 209 ms] (24) CpxRNTS (25) IntTrsBoundProof [UPPER BOUND(ID), 67 ms] (26) CpxRNTS (27) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 214 ms] (30) CpxRNTS (31) IntTrsBoundProof [UPPER BOUND(ID), 45 ms] (32) CpxRNTS (33) ResultPropagationProof [UPPER BOUND(ID), 5 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 182 ms] (36) CpxRNTS (37) IntTrsBoundProof [UPPER BOUND(ID), 24 ms] (38) CpxRNTS (39) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 382 ms] (42) CpxRNTS (43) IntTrsBoundProof [UPPER BOUND(ID), 85 ms] (44) CpxRNTS (45) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 109 ms] (48) CpxRNTS (49) IntTrsBoundProof [UPPER BOUND(ID), 45 ms] (50) CpxRNTS (51) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (52) CpxRNTS (53) IntTrsBoundProof [UPPER BOUND(ID), 270 ms] (54) CpxRNTS (55) IntTrsBoundProof [UPPER BOUND(ID), 53 ms] (56) CpxRNTS (57) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (58) CpxRNTS (59) IntTrsBoundProof [UPPER BOUND(ID), 202 ms] (60) CpxRNTS (61) IntTrsBoundProof [UPPER BOUND(ID), 34 ms] (62) CpxRNTS (63) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (64) CpxRNTS (65) IntTrsBoundProof [UPPER BOUND(ID), 261 ms] (66) CpxRNTS (67) IntTrsBoundProof [UPPER BOUND(ID), 85 ms] (68) CpxRNTS (69) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (70) CpxRNTS (71) IntTrsBoundProof [UPPER BOUND(ID), 131 ms] (72) CpxRNTS (73) IntTrsBoundProof [UPPER BOUND(ID), 15 ms] (74) CpxRNTS (75) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (76) CpxRNTS (77) IntTrsBoundProof [UPPER BOUND(ID), 249 ms] (78) CpxRNTS (79) IntTrsBoundProof [UPPER BOUND(ID), 42 ms] (80) CpxRNTS (81) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (82) CpxRNTS (83) IntTrsBoundProof [UPPER BOUND(ID), 1828 ms] (84) CpxRNTS (85) IntTrsBoundProof [UPPER BOUND(ID), 345 ms] (86) CpxRNTS (87) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (88) CpxRNTS (89) IntTrsBoundProof [UPPER BOUND(ID), 493 ms] (90) CpxRNTS (91) IntTrsBoundProof [UPPER BOUND(ID), 45 ms] (92) CpxRNTS (93) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (94) CpxRNTS (95) IntTrsBoundProof [UPPER BOUND(ID), 583 ms] (96) CpxRNTS (97) IntTrsBoundProof [UPPER BOUND(ID), 165 ms] (98) CpxRNTS (99) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (100) CpxRNTS (101) IntTrsBoundProof [UPPER BOUND(ID), 524 ms] (102) CpxRNTS (103) IntTrsBoundProof [UPPER BOUND(ID), 276 ms] (104) CpxRNTS (105) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (106) CpxRNTS (107) IntTrsBoundProof [UPPER BOUND(ID), 4200 ms] (108) CpxRNTS (109) IntTrsBoundProof [UPPER BOUND(ID), 442 ms] (110) CpxRNTS (111) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (112) CpxRNTS (113) IntTrsBoundProof [UPPER BOUND(ID), 88 ms] (114) CpxRNTS (115) IntTrsBoundProof [UPPER BOUND(ID), 42 ms] (116) CpxRNTS (117) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (118) CpxRNTS (119) IntTrsBoundProof [UPPER BOUND(ID), 564 ms] (120) CpxRNTS (121) IntTrsBoundProof [UPPER BOUND(ID), 105 ms] (122) CpxRNTS (123) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (124) CpxRNTS (125) IntTrsBoundProof [UPPER BOUND(ID), 231 ms] (126) CpxRNTS (127) IntTrsBoundProof [UPPER BOUND(ID), 64 ms] (128) CpxRNTS (129) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (130) CpxRNTS (131) IntTrsBoundProof [UPPER BOUND(ID), 902 ms] (132) CpxRNTS (133) IntTrsBoundProof [UPPER BOUND(ID), 25 ms] (134) CpxRNTS (135) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (136) CpxRNTS (137) IntTrsBoundProof [UPPER BOUND(ID), 1482 ms] (138) CpxRNTS (139) IntTrsBoundProof [UPPER BOUND(ID), 287 ms] (140) CpxRNTS (141) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (142) CpxRNTS (143) IntTrsBoundProof [UPPER BOUND(ID), 197 ms] (144) CpxRNTS (145) IntTrsBoundProof [UPPER BOUND(ID), 13 ms] (146) CpxRNTS (147) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (148) CpxRNTS (149) IntTrsBoundProof [UPPER BOUND(ID), 260 ms] (150) CpxRNTS (151) IntTrsBoundProof [UPPER BOUND(ID), 13 ms] (152) CpxRNTS (153) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (154) CpxRNTS (155) IntTrsBoundProof [UPPER BOUND(ID), 603 ms] (156) CpxRNTS (157) IntTrsBoundProof [UPPER BOUND(ID), 45 ms] (158) CpxRNTS (159) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (160) CpxRNTS (161) IntTrsBoundProof [UPPER BOUND(ID), 199 ms] (162) CpxRNTS (163) IntTrsBoundProof [UPPER BOUND(ID), 14 ms] (164) CpxRNTS (165) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (166) CpxRNTS (167) IntTrsBoundProof [UPPER BOUND(ID), 869 ms] (168) CpxRNTS (169) IntTrsBoundProof [UPPER BOUND(ID), 85 ms] (170) CpxRNTS (171) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (172) CpxRNTS (173) IntTrsBoundProof [UPPER BOUND(ID), 211 ms] (174) CpxRNTS (175) IntTrsBoundProof [UPPER BOUND(ID), 23 ms] (176) CpxRNTS (177) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (178) CpxRNTS (179) IntTrsBoundProof [UPPER BOUND(ID), 598 ms] (180) CpxRNTS (181) IntTrsBoundProof [UPPER BOUND(ID), 4 ms] (182) CpxRNTS (183) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (184) CpxRNTS (185) IntTrsBoundProof [UPPER BOUND(ID), 139 ms] (186) CpxRNTS (187) IntTrsBoundProof [UPPER BOUND(ID), 52 ms] (188) CpxRNTS (189) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (190) CpxRNTS (191) IntTrsBoundProof [UPPER BOUND(ID), 149 ms] (192) CpxRNTS (193) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] (194) CpxRNTS (195) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (196) CpxRNTS (197) IntTrsBoundProof [UPPER BOUND(ID), 951 ms] (198) CpxRNTS (199) IntTrsBoundProof [UPPER BOUND(ID), 75 ms] (200) CpxRNTS (201) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (202) CpxRNTS (203) IntTrsBoundProof [UPPER BOUND(ID), 629 ms] (204) CpxRNTS (205) IntTrsBoundProof [UPPER BOUND(ID), 14 ms] (206) CpxRNTS (207) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (208) CpxRNTS (209) IntTrsBoundProof [UPPER BOUND(ID), 538 ms] (210) CpxRNTS (211) IntTrsBoundProof [UPPER BOUND(ID), 42 ms] (212) CpxRNTS (213) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (214) CpxRNTS (215) IntTrsBoundProof [UPPER BOUND(ID), 868 ms] (216) CpxRNTS (217) IntTrsBoundProof [UPPER BOUND(ID), 12 ms] (218) CpxRNTS (219) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (220) CpxRNTS (221) IntTrsBoundProof [UPPER BOUND(ID), 198 ms] (222) CpxRNTS (223) IntTrsBoundProof [UPPER BOUND(ID), 25 ms] (224) CpxRNTS (225) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (226) CpxRNTS (227) IntTrsBoundProof [UPPER BOUND(ID), 1206 ms] (228) CpxRNTS (229) IntTrsBoundProof [UPPER BOUND(ID), 7 ms] (230) CpxRNTS (231) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (232) CpxRNTS (233) IntTrsBoundProof [UPPER BOUND(ID), 380 ms] (234) CpxRNTS (235) IntTrsBoundProof [UPPER BOUND(ID), 35 ms] (236) CpxRNTS (237) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (238) CpxRNTS (239) IntTrsBoundProof [UPPER BOUND(ID), 1456 ms] (240) CpxRNTS (241) IntTrsBoundProof [UPPER BOUND(ID), 17 ms] (242) CpxRNTS (243) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (244) CpxRNTS (245) IntTrsBoundProof [UPPER BOUND(ID), 168 ms] (246) CpxRNTS (247) IntTrsBoundProof [UPPER BOUND(ID), 2 ms] (248) CpxRNTS (249) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (250) CpxRNTS (251) IntTrsBoundProof [UPPER BOUND(ID), 491 ms] (252) CpxRNTS (253) IntTrsBoundProof [UPPER BOUND(ID), 89 ms] (254) CpxRNTS (255) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (256) CpxRNTS (257) IntTrsBoundProof [UPPER BOUND(ID), 1496 ms] (258) CpxRNTS (259) IntTrsBoundProof [UPPER BOUND(ID), 239 ms] (260) CpxRNTS (261) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (262) CpxRNTS (263) IntTrsBoundProof [UPPER BOUND(ID), 1351 ms] (264) CpxRNTS (265) IntTrsBoundProof [UPPER BOUND(ID), 219 ms] (266) CpxRNTS (267) FinalProof [FINISHED, 0 ms] (268) BOUNDS(1, n^2) (269) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (270) TRS for Loop Detection (271) DecreasingLoopProof [LOWER BOUND(ID), 60 ms] (272) BEST (273) proven lower bound (274) LowerBoundPropagationProof [FINISHED, 0 ms] (275) BOUNDS(n^1, INF) (276) TRS for Loop Detection ---------------------------------------- (0) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: #EQUAL(z0, z1) -> c61(#EQ(z0, z1)) *'(z0, z1) -> c62(#MULT(z0, z1)) -'(z0, z1) -> c63(#SUB(z0, z1)) DIV(z0, z1) -> c64(#DIV(z0, z1)) ERATOS(z0) -> c65(ERATOS#1(z0)) ERATOS#1(::(z0, z1)) -> c66(ERATOS(filter(z0, z1)), FILTER(z0, z1)) ERATOS#1(nil) -> c67 FILTER(z0, z1) -> c68(FILTER#1(z1, z0)) FILTER#1(::(z0, z1), z2) -> c69(FILTER#2(filter(z2, z1), z2, z0), FILTER(z2, z1)) FILTER#1(nil, z0) -> c70 FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(mod(z2, z1), #0), z2, z0), #EQUAL(mod(z2, z1), #0), MOD(z2, z1)) FILTER#3(#false, z0, z1) -> c72 FILTER#3(#true, z0, z1) -> c73 MOD(z0, z1) -> c74(-'(z0, *(z0, div(z0, z1))), *'(z0, div(z0, z1)), DIV(z0, z1)) The (relative) TRS S consists of the following rules: #ADD(#0, z0) -> c #ADD(#neg(#s(#0)), z0) -> c1(#PRED(z0)) #ADD(#neg(#s(#s(z0))), z1) -> c2(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) #ADD(#pos(#s(#0)), z0) -> c3(#SUCC(z0)) #ADD(#pos(#s(#s(z0))), z1) -> c4(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) #AND(#false, #false) -> c5 #AND(#false, #true) -> c6 #AND(#true, #false) -> c7 #AND(#true, #true) -> c8 #DIV(#0, #0) -> c9 #DIV(#0, #neg(z0)) -> c10 #DIV(#0, #pos(z0)) -> c11 #DIV(#neg(z0), #0) -> c12 #DIV(#neg(z0), #neg(z1)) -> c13(#NATDIV(z0, z1)) #DIV(#neg(z0), #pos(z1)) -> c14(#NATDIV(z0, z1)) #DIV(#pos(z0), #0) -> c15 #DIV(#pos(z0), #neg(z1)) -> c16(#NATDIV(z0, z1)) #DIV(#pos(z0), #pos(z1)) -> c17(#NATDIV(z0, z1)) #EQ(#0, #0) -> c18 #EQ(#0, #neg(z0)) -> c19 #EQ(#0, #pos(z0)) -> c20 #EQ(#0, #s(z0)) -> c21 #EQ(#neg(z0), #0) -> c22 #EQ(#neg(z0), #neg(z1)) -> c23(#EQ(z0, z1)) #EQ(#neg(z0), #pos(z1)) -> c24 #EQ(#pos(z0), #0) -> c25 #EQ(#pos(z0), #neg(z1)) -> c26 #EQ(#pos(z0), #pos(z1)) -> c27(#EQ(z0, z1)) #EQ(#s(z0), #0) -> c28 #EQ(#s(z0), #s(z1)) -> c29(#EQ(z0, z1)) #EQ(::(z0, z1), ::(z2, z3)) -> c30(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z0, z2)) #EQ(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z1, z3)) #EQ(::(z0, z1), nil) -> c32 #EQ(nil, ::(z0, z1)) -> c33 #EQ(nil, nil) -> c34 #MULT(#0, #0) -> c35 #MULT(#0, #neg(z0)) -> c36 #MULT(#0, #pos(z0)) -> c37 #MULT(#neg(z0), #0) -> c38 #MULT(#neg(z0), #neg(z1)) -> c39(#NATMULT(z0, z1)) #MULT(#neg(z0), #pos(z1)) -> c40(#NATMULT(z0, z1)) #MULT(#pos(z0), #0) -> c41 #MULT(#pos(z0), #neg(z1)) -> c42(#NATMULT(z0, z1)) #MULT(#pos(z0), #pos(z1)) -> c43(#NATMULT(z0, z1)) #NATDIV(#0, #0) -> c44 #NATDIV(#s(z0), #s(z1)) -> c45(#NATDIV(#natsub(z0, z1), #s(z1)), #NATSUB(z0, z1)) #NATMULT(#0, z0) -> c46 #NATMULT(#s(z0), z1) -> c47(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1)) #NATSUB(z0, #0) -> c48 #NATSUB(#s(z0), #s(z1)) -> c49(#NATSUB(z0, z1)) #PRED(#0) -> c50 #PRED(#neg(#s(z0))) -> c51 #PRED(#pos(#s(#0))) -> c52 #PRED(#pos(#s(#s(z0)))) -> c53 #SUB(z0, #0) -> c54 #SUB(z0, #neg(z1)) -> c55(#ADD(z0, #pos(z1))) #SUB(z0, #pos(z1)) -> c56(#ADD(z0, #neg(z1))) #SUCC(#0) -> c57 #SUCC(#neg(#s(#0))) -> c58 #SUCC(#neg(#s(#s(z0)))) -> c59 #SUCC(#pos(#s(z0))) -> c60 #add(#0, z0) -> z0 #add(#neg(#s(#0)), z0) -> #pred(z0) #add(#neg(#s(#s(z0))), z1) -> #pred(#add(#pos(#s(z0)), z1)) #add(#pos(#s(#0)), z0) -> #succ(z0) #add(#pos(#s(#s(z0))), z1) -> #succ(#add(#pos(#s(z0)), z1)) #and(#false, #false) -> #false #and(#false, #true) -> #false #and(#true, #false) -> #false #and(#true, #true) -> #true #div(#0, #0) -> #divByZero #div(#0, #neg(z0)) -> #0 #div(#0, #pos(z0)) -> #0 #div(#neg(z0), #0) -> #divByZero #div(#neg(z0), #neg(z1)) -> #pos(#natdiv(z0, z1)) #div(#neg(z0), #pos(z1)) -> #neg(#natdiv(z0, z1)) #div(#pos(z0), #0) -> #divByZero #div(#pos(z0), #neg(z1)) -> #neg(#natdiv(z0, z1)) #div(#pos(z0), #pos(z1)) -> #pos(#natdiv(z0, z1)) #eq(#0, #0) -> #true #eq(#0, #neg(z0)) -> #false #eq(#0, #pos(z0)) -> #false #eq(#0, #s(z0)) -> #false #eq(#neg(z0), #0) -> #false #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) #eq(#neg(z0), #pos(z1)) -> #false #eq(#pos(z0), #0) -> #false #eq(#pos(z0), #neg(z1)) -> #false #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) #eq(#s(z0), #0) -> #false #eq(#s(z0), #s(z1)) -> #eq(z0, z1) #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) #eq(::(z0, z1), nil) -> #false #eq(nil, ::(z0, z1)) -> #false #eq(nil, nil) -> #true #mult(#0, #0) -> #0 #mult(#0, #neg(z0)) -> #0 #mult(#0, #pos(z0)) -> #0 #mult(#neg(z0), #0) -> #0 #mult(#neg(z0), #neg(z1)) -> #pos(#natmult(z0, z1)) #mult(#neg(z0), #pos(z1)) -> #neg(#natmult(z0, z1)) #mult(#pos(z0), #0) -> #0 #mult(#pos(z0), #neg(z1)) -> #neg(#natmult(z0, z1)) #mult(#pos(z0), #pos(z1)) -> #pos(#natmult(z0, z1)) #natdiv(#0, #0) -> #divByZero #natdiv(#s(z0), #s(z1)) -> #s(#natdiv(#natsub(z0, z1), #s(z1))) #natmult(#0, z0) -> #0 #natmult(#s(z0), z1) -> #add(#pos(z1), #natmult(z0, z1)) #natsub(z0, #0) -> z0 #natsub(#s(z0), #s(z1)) -> #natsub(z0, z1) #pred(#0) -> #neg(#s(#0)) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0))) -> #0 #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0, #0) -> z0 #sub(z0, #neg(z1)) -> #add(z0, #pos(z1)) #sub(z0, #pos(z1)) -> #add(z0, #neg(z1)) #succ(#0) -> #pos(#s(#0)) #succ(#neg(#s(#0))) -> #0 #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) #equal(z0, z1) -> #eq(z0, z1) *(z0, z1) -> #mult(z0, z1) -(z0, z1) -> #sub(z0, z1) div(z0, z1) -> #div(z0, z1) eratos(z0) -> eratos#1(z0) eratos#1(::(z0, z1)) -> ::(z0, eratos(filter(z0, z1))) eratos#1(nil) -> nil filter(z0, z1) -> filter#1(z1, z0) filter#1(::(z0, z1), z2) -> filter#2(filter(z2, z1), z2, z0) filter#1(nil, z0) -> nil filter#2(z0, z1, z2) -> filter#3(#equal(mod(z2, z1), #0), z2, z0) filter#3(#false, z0, z1) -> ::(z0, z1) filter#3(#true, z0, z1) -> z1 mod(z0, z1) -> -(z0, *(z0, div(z0, z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: #EQUAL(z0, z1) -> c61(#EQ(z0, z1)) *'(z0, z1) -> c62(#MULT(z0, z1)) -'(z0, z1) -> c63(#SUB(z0, z1)) DIV(z0, z1) -> c64(#DIV(z0, z1)) ERATOS(z0) -> c65(ERATOS#1(z0)) ERATOS#1(::(z0, z1)) -> c66(ERATOS(filter(z0, z1)), FILTER(z0, z1)) ERATOS#1(nil) -> c67 FILTER(z0, z1) -> c68(FILTER#1(z1, z0)) FILTER#1(::(z0, z1), z2) -> c69(FILTER#2(filter(z2, z1), z2, z0), FILTER(z2, z1)) FILTER#1(nil, z0) -> c70 FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(mod(z2, z1), #0), z2, z0), #EQUAL(mod(z2, z1), #0), MOD(z2, z1)) FILTER#3(#false, z0, z1) -> c72 FILTER#3(#true, z0, z1) -> c73 MOD(z0, z1) -> c74(-'(z0, *(z0, div(z0, z1))), *'(z0, div(z0, z1)), DIV(z0, z1)) The (relative) TRS S consists of the following rules: #ADD(#0, z0) -> c #ADD(#neg(#s(#0)), z0) -> c1(#PRED(z0)) #ADD(#neg(#s(#s(z0))), z1) -> c2(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) #ADD(#pos(#s(#0)), z0) -> c3(#SUCC(z0)) #ADD(#pos(#s(#s(z0))), z1) -> c4(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) #AND(#false, #false) -> c5 #AND(#false, #true) -> c6 #AND(#true, #false) -> c7 #AND(#true, #true) -> c8 #DIV(#0, #0) -> c9 #DIV(#0, #neg(z0)) -> c10 #DIV(#0, #pos(z0)) -> c11 #DIV(#neg(z0), #0) -> c12 #DIV(#neg(z0), #neg(z1)) -> c13(#NATDIV(z0, z1)) #DIV(#neg(z0), #pos(z1)) -> c14(#NATDIV(z0, z1)) #DIV(#pos(z0), #0) -> c15 #DIV(#pos(z0), #neg(z1)) -> c16(#NATDIV(z0, z1)) #DIV(#pos(z0), #pos(z1)) -> c17(#NATDIV(z0, z1)) #EQ(#0, #0) -> c18 #EQ(#0, #neg(z0)) -> c19 #EQ(#0, #pos(z0)) -> c20 #EQ(#0, #s(z0)) -> c21 #EQ(#neg(z0), #0) -> c22 #EQ(#neg(z0), #neg(z1)) -> c23(#EQ(z0, z1)) #EQ(#neg(z0), #pos(z1)) -> c24 #EQ(#pos(z0), #0) -> c25 #EQ(#pos(z0), #neg(z1)) -> c26 #EQ(#pos(z0), #pos(z1)) -> c27(#EQ(z0, z1)) #EQ(#s(z0), #0) -> c28 #EQ(#s(z0), #s(z1)) -> c29(#EQ(z0, z1)) #EQ(::(z0, z1), ::(z2, z3)) -> c30(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z0, z2)) #EQ(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z1, z3)) #EQ(::(z0, z1), nil) -> c32 #EQ(nil, ::(z0, z1)) -> c33 #EQ(nil, nil) -> c34 #MULT(#0, #0) -> c35 #MULT(#0, #neg(z0)) -> c36 #MULT(#0, #pos(z0)) -> c37 #MULT(#neg(z0), #0) -> c38 #MULT(#neg(z0), #neg(z1)) -> c39(#NATMULT(z0, z1)) #MULT(#neg(z0), #pos(z1)) -> c40(#NATMULT(z0, z1)) #MULT(#pos(z0), #0) -> c41 #MULT(#pos(z0), #neg(z1)) -> c42(#NATMULT(z0, z1)) #MULT(#pos(z0), #pos(z1)) -> c43(#NATMULT(z0, z1)) #NATDIV(#0, #0) -> c44 #NATDIV(#s(z0), #s(z1)) -> c45(#NATDIV(#natsub(z0, z1), #s(z1)), #NATSUB(z0, z1)) #NATMULT(#0, z0) -> c46 #NATMULT(#s(z0), z1) -> c47(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1)) #NATSUB(z0, #0) -> c48 #NATSUB(#s(z0), #s(z1)) -> c49(#NATSUB(z0, z1)) #PRED(#0) -> c50 #PRED(#neg(#s(z0))) -> c51 #PRED(#pos(#s(#0))) -> c52 #PRED(#pos(#s(#s(z0)))) -> c53 #SUB(z0, #0) -> c54 #SUB(z0, #neg(z1)) -> c55(#ADD(z0, #pos(z1))) #SUB(z0, #pos(z1)) -> c56(#ADD(z0, #neg(z1))) #SUCC(#0) -> c57 #SUCC(#neg(#s(#0))) -> c58 #SUCC(#neg(#s(#s(z0)))) -> c59 #SUCC(#pos(#s(z0))) -> c60 #add(#0, z0) -> z0 #add(#neg(#s(#0)), z0) -> #pred(z0) #add(#neg(#s(#s(z0))), z1) -> #pred(#add(#pos(#s(z0)), z1)) #add(#pos(#s(#0)), z0) -> #succ(z0) #add(#pos(#s(#s(z0))), z1) -> #succ(#add(#pos(#s(z0)), z1)) #and(#false, #false) -> #false #and(#false, #true) -> #false #and(#true, #false) -> #false #and(#true, #true) -> #true #div(#0, #0) -> #divByZero #div(#0, #neg(z0)) -> #0 #div(#0, #pos(z0)) -> #0 #div(#neg(z0), #0) -> #divByZero #div(#neg(z0), #neg(z1)) -> #pos(#natdiv(z0, z1)) #div(#neg(z0), #pos(z1)) -> #neg(#natdiv(z0, z1)) #div(#pos(z0), #0) -> #divByZero #div(#pos(z0), #neg(z1)) -> #neg(#natdiv(z0, z1)) #div(#pos(z0), #pos(z1)) -> #pos(#natdiv(z0, z1)) #eq(#0, #0) -> #true #eq(#0, #neg(z0)) -> #false #eq(#0, #pos(z0)) -> #false #eq(#0, #s(z0)) -> #false #eq(#neg(z0), #0) -> #false #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) #eq(#neg(z0), #pos(z1)) -> #false #eq(#pos(z0), #0) -> #false #eq(#pos(z0), #neg(z1)) -> #false #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) #eq(#s(z0), #0) -> #false #eq(#s(z0), #s(z1)) -> #eq(z0, z1) #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) #eq(::(z0, z1), nil) -> #false #eq(nil, ::(z0, z1)) -> #false #eq(nil, nil) -> #true #mult(#0, #0) -> #0 #mult(#0, #neg(z0)) -> #0 #mult(#0, #pos(z0)) -> #0 #mult(#neg(z0), #0) -> #0 #mult(#neg(z0), #neg(z1)) -> #pos(#natmult(z0, z1)) #mult(#neg(z0), #pos(z1)) -> #neg(#natmult(z0, z1)) #mult(#pos(z0), #0) -> #0 #mult(#pos(z0), #neg(z1)) -> #neg(#natmult(z0, z1)) #mult(#pos(z0), #pos(z1)) -> #pos(#natmult(z0, z1)) #natdiv(#0, #0) -> #divByZero #natdiv(#s(z0), #s(z1)) -> #s(#natdiv(#natsub(z0, z1), #s(z1))) #natmult(#0, z0) -> #0 #natmult(#s(z0), z1) -> #add(#pos(z1), #natmult(z0, z1)) #natsub(z0, #0) -> z0 #natsub(#s(z0), #s(z1)) -> #natsub(z0, z1) #pred(#0) -> #neg(#s(#0)) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0))) -> #0 #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0, #0) -> z0 #sub(z0, #neg(z1)) -> #add(z0, #pos(z1)) #sub(z0, #pos(z1)) -> #add(z0, #neg(z1)) #succ(#0) -> #pos(#s(#0)) #succ(#neg(#s(#0))) -> #0 #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) #equal(z0, z1) -> #eq(z0, z1) *(z0, z1) -> #mult(z0, z1) -(z0, z1) -> #sub(z0, z1) div(z0, z1) -> #div(z0, z1) eratos(z0) -> eratos#1(z0) eratos#1(::(z0, z1)) -> ::(z0, eratos(filter(z0, z1))) eratos#1(nil) -> nil filter(z0, z1) -> filter#1(z1, z0) filter#1(::(z0, z1), z2) -> filter#2(filter(z2, z1), z2, z0) filter#1(nil, z0) -> nil filter#2(z0, z1, z2) -> filter#3(#equal(mod(z2, z1), #0), z2, z0) filter#3(#false, z0, z1) -> ::(z0, z1) filter#3(#true, z0, z1) -> z1 mod(z0, z1) -> -(z0, *(z0, div(z0, z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (3) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (4) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: #EQUAL(z0, z1) -> c61(#EQ(z0, z1)) [1] *'(z0, z1) -> c62(#MULT(z0, z1)) [1] -'(z0, z1) -> c63(#SUB(z0, z1)) [1] DIV(z0, z1) -> c64(#DIV(z0, z1)) [1] ERATOS(z0) -> c65(ERATOS#1(z0)) [1] ERATOS#1(::(z0, z1)) -> c66(ERATOS(filter(z0, z1)), FILTER(z0, z1)) [1] ERATOS#1(nil) -> c67 [1] FILTER(z0, z1) -> c68(FILTER#1(z1, z0)) [1] FILTER#1(::(z0, z1), z2) -> c69(FILTER#2(filter(z2, z1), z2, z0), FILTER(z2, z1)) [1] FILTER#1(nil, z0) -> c70 [1] FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(mod(z2, z1), #0), z2, z0), #EQUAL(mod(z2, z1), #0), MOD(z2, z1)) [1] FILTER#3(#false, z0, z1) -> c72 [1] FILTER#3(#true, z0, z1) -> c73 [1] MOD(z0, z1) -> c74(-'(z0, *(z0, div(z0, z1))), *'(z0, div(z0, z1)), DIV(z0, z1)) [1] #ADD(#0, z0) -> c [0] #ADD(#neg(#s(#0)), z0) -> c1(#PRED(z0)) [0] #ADD(#neg(#s(#s(z0))), z1) -> c2(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) [0] #ADD(#pos(#s(#0)), z0) -> c3(#SUCC(z0)) [0] #ADD(#pos(#s(#s(z0))), z1) -> c4(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) [0] #AND(#false, #false) -> c5 [0] #AND(#false, #true) -> c6 [0] #AND(#true, #false) -> c7 [0] #AND(#true, #true) -> c8 [0] #DIV(#0, #0) -> c9 [0] #DIV(#0, #neg(z0)) -> c10 [0] #DIV(#0, #pos(z0)) -> c11 [0] #DIV(#neg(z0), #0) -> c12 [0] #DIV(#neg(z0), #neg(z1)) -> c13(#NATDIV(z0, z1)) [0] #DIV(#neg(z0), #pos(z1)) -> c14(#NATDIV(z0, z1)) [0] #DIV(#pos(z0), #0) -> c15 [0] #DIV(#pos(z0), #neg(z1)) -> c16(#NATDIV(z0, z1)) [0] #DIV(#pos(z0), #pos(z1)) -> c17(#NATDIV(z0, z1)) [0] #EQ(#0, #0) -> c18 [0] #EQ(#0, #neg(z0)) -> c19 [0] #EQ(#0, #pos(z0)) -> c20 [0] #EQ(#0, #s(z0)) -> c21 [0] #EQ(#neg(z0), #0) -> c22 [0] #EQ(#neg(z0), #neg(z1)) -> c23(#EQ(z0, z1)) [0] #EQ(#neg(z0), #pos(z1)) -> c24 [0] #EQ(#pos(z0), #0) -> c25 [0] #EQ(#pos(z0), #neg(z1)) -> c26 [0] #EQ(#pos(z0), #pos(z1)) -> c27(#EQ(z0, z1)) [0] #EQ(#s(z0), #0) -> c28 [0] #EQ(#s(z0), #s(z1)) -> c29(#EQ(z0, z1)) [0] #EQ(::(z0, z1), ::(z2, z3)) -> c30(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z0, z2)) [0] #EQ(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z1, z3)) [0] #EQ(::(z0, z1), nil) -> c32 [0] #EQ(nil, ::(z0, z1)) -> c33 [0] #EQ(nil, nil) -> c34 [0] #MULT(#0, #0) -> c35 [0] #MULT(#0, #neg(z0)) -> c36 [0] #MULT(#0, #pos(z0)) -> c37 [0] #MULT(#neg(z0), #0) -> c38 [0] #MULT(#neg(z0), #neg(z1)) -> c39(#NATMULT(z0, z1)) [0] #MULT(#neg(z0), #pos(z1)) -> c40(#NATMULT(z0, z1)) [0] #MULT(#pos(z0), #0) -> c41 [0] #MULT(#pos(z0), #neg(z1)) -> c42(#NATMULT(z0, z1)) [0] #MULT(#pos(z0), #pos(z1)) -> c43(#NATMULT(z0, z1)) [0] #NATDIV(#0, #0) -> c44 [0] #NATDIV(#s(z0), #s(z1)) -> c45(#NATDIV(#natsub(z0, z1), #s(z1)), #NATSUB(z0, z1)) [0] #NATMULT(#0, z0) -> c46 [0] #NATMULT(#s(z0), z1) -> c47(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1)) [0] #NATSUB(z0, #0) -> c48 [0] #NATSUB(#s(z0), #s(z1)) -> c49(#NATSUB(z0, z1)) [0] #PRED(#0) -> c50 [0] #PRED(#neg(#s(z0))) -> c51 [0] #PRED(#pos(#s(#0))) -> c52 [0] #PRED(#pos(#s(#s(z0)))) -> c53 [0] #SUB(z0, #0) -> c54 [0] #SUB(z0, #neg(z1)) -> c55(#ADD(z0, #pos(z1))) [0] #SUB(z0, #pos(z1)) -> c56(#ADD(z0, #neg(z1))) [0] #SUCC(#0) -> c57 [0] #SUCC(#neg(#s(#0))) -> c58 [0] #SUCC(#neg(#s(#s(z0)))) -> c59 [0] #SUCC(#pos(#s(z0))) -> c60 [0] #add(#0, z0) -> z0 [0] #add(#neg(#s(#0)), z0) -> #pred(z0) [0] #add(#neg(#s(#s(z0))), z1) -> #pred(#add(#pos(#s(z0)), z1)) [0] #add(#pos(#s(#0)), z0) -> #succ(z0) [0] #add(#pos(#s(#s(z0))), z1) -> #succ(#add(#pos(#s(z0)), z1)) [0] #and(#false, #false) -> #false [0] #and(#false, #true) -> #false [0] #and(#true, #false) -> #false [0] #and(#true, #true) -> #true [0] #div(#0, #0) -> #divByZero [0] #div(#0, #neg(z0)) -> #0 [0] #div(#0, #pos(z0)) -> #0 [0] #div(#neg(z0), #0) -> #divByZero [0] #div(#neg(z0), #neg(z1)) -> #pos(#natdiv(z0, z1)) [0] #div(#neg(z0), #pos(z1)) -> #neg(#natdiv(z0, z1)) [0] #div(#pos(z0), #0) -> #divByZero [0] #div(#pos(z0), #neg(z1)) -> #neg(#natdiv(z0, z1)) [0] #div(#pos(z0), #pos(z1)) -> #pos(#natdiv(z0, z1)) [0] #eq(#0, #0) -> #true [0] #eq(#0, #neg(z0)) -> #false [0] #eq(#0, #pos(z0)) -> #false [0] #eq(#0, #s(z0)) -> #false [0] #eq(#neg(z0), #0) -> #false [0] #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) [0] #eq(#neg(z0), #pos(z1)) -> #false [0] #eq(#pos(z0), #0) -> #false [0] #eq(#pos(z0), #neg(z1)) -> #false [0] #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) [0] #eq(#s(z0), #0) -> #false [0] #eq(#s(z0), #s(z1)) -> #eq(z0, z1) [0] #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) [0] #eq(::(z0, z1), nil) -> #false [0] #eq(nil, ::(z0, z1)) -> #false [0] #eq(nil, nil) -> #true [0] #mult(#0, #0) -> #0 [0] #mult(#0, #neg(z0)) -> #0 [0] #mult(#0, #pos(z0)) -> #0 [0] #mult(#neg(z0), #0) -> #0 [0] #mult(#neg(z0), #neg(z1)) -> #pos(#natmult(z0, z1)) [0] #mult(#neg(z0), #pos(z1)) -> #neg(#natmult(z0, z1)) [0] #mult(#pos(z0), #0) -> #0 [0] #mult(#pos(z0), #neg(z1)) -> #neg(#natmult(z0, z1)) [0] #mult(#pos(z0), #pos(z1)) -> #pos(#natmult(z0, z1)) [0] #natdiv(#0, #0) -> #divByZero [0] #natdiv(#s(z0), #s(z1)) -> #s(#natdiv(#natsub(z0, z1), #s(z1))) [0] #natmult(#0, z0) -> #0 [0] #natmult(#s(z0), z1) -> #add(#pos(z1), #natmult(z0, z1)) [0] #natsub(z0, #0) -> z0 [0] #natsub(#s(z0), #s(z1)) -> #natsub(z0, z1) [0] #pred(#0) -> #neg(#s(#0)) [0] #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) [0] #pred(#pos(#s(#0))) -> #0 [0] #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) [0] #sub(z0, #0) -> z0 [0] #sub(z0, #neg(z1)) -> #add(z0, #pos(z1)) [0] #sub(z0, #pos(z1)) -> #add(z0, #neg(z1)) [0] #succ(#0) -> #pos(#s(#0)) [0] #succ(#neg(#s(#0))) -> #0 [0] #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) [0] #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) [0] #equal(z0, z1) -> #eq(z0, z1) [0] *(z0, z1) -> #mult(z0, z1) [0] -(z0, z1) -> #sub(z0, z1) [0] div(z0, z1) -> #div(z0, z1) [0] eratos(z0) -> eratos#1(z0) [0] eratos#1(::(z0, z1)) -> ::(z0, eratos(filter(z0, z1))) [0] eratos#1(nil) -> nil [0] filter(z0, z1) -> filter#1(z1, z0) [0] filter#1(::(z0, z1), z2) -> filter#2(filter(z2, z1), z2, z0) [0] filter#1(nil, z0) -> nil [0] filter#2(z0, z1, z2) -> filter#3(#equal(mod(z2, z1), #0), z2, z0) [0] filter#3(#false, z0, z1) -> ::(z0, z1) [0] filter#3(#true, z0, z1) -> z1 [0] mod(z0, z1) -> -(z0, *(z0, div(z0, z1))) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (5) CpxWeightedTrsRenamingProof (BOTH BOUNDS(ID, ID)) Renamed defined symbols to avoid conflicts with arithmetic symbols: * => times - => minus ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: #EQUAL(z0, z1) -> c61(#EQ(z0, z1)) [1] *'(z0, z1) -> c62(#MULT(z0, z1)) [1] -'(z0, z1) -> c63(#SUB(z0, z1)) [1] DIV(z0, z1) -> c64(#DIV(z0, z1)) [1] ERATOS(z0) -> c65(ERATOS#1(z0)) [1] ERATOS#1(::(z0, z1)) -> c66(ERATOS(filter(z0, z1)), FILTER(z0, z1)) [1] ERATOS#1(nil) -> c67 [1] FILTER(z0, z1) -> c68(FILTER#1(z1, z0)) [1] FILTER#1(::(z0, z1), z2) -> c69(FILTER#2(filter(z2, z1), z2, z0), FILTER(z2, z1)) [1] FILTER#1(nil, z0) -> c70 [1] FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(mod(z2, z1), #0), z2, z0), #EQUAL(mod(z2, z1), #0), MOD(z2, z1)) [1] FILTER#3(#false, z0, z1) -> c72 [1] FILTER#3(#true, z0, z1) -> c73 [1] MOD(z0, z1) -> c74(-'(z0, times(z0, div(z0, z1))), *'(z0, div(z0, z1)), DIV(z0, z1)) [1] #ADD(#0, z0) -> c [0] #ADD(#neg(#s(#0)), z0) -> c1(#PRED(z0)) [0] #ADD(#neg(#s(#s(z0))), z1) -> c2(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) [0] #ADD(#pos(#s(#0)), z0) -> c3(#SUCC(z0)) [0] #ADD(#pos(#s(#s(z0))), z1) -> c4(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) [0] #AND(#false, #false) -> c5 [0] #AND(#false, #true) -> c6 [0] #AND(#true, #false) -> c7 [0] #AND(#true, #true) -> c8 [0] #DIV(#0, #0) -> c9 [0] #DIV(#0, #neg(z0)) -> c10 [0] #DIV(#0, #pos(z0)) -> c11 [0] #DIV(#neg(z0), #0) -> c12 [0] #DIV(#neg(z0), #neg(z1)) -> c13(#NATDIV(z0, z1)) [0] #DIV(#neg(z0), #pos(z1)) -> c14(#NATDIV(z0, z1)) [0] #DIV(#pos(z0), #0) -> c15 [0] #DIV(#pos(z0), #neg(z1)) -> c16(#NATDIV(z0, z1)) [0] #DIV(#pos(z0), #pos(z1)) -> c17(#NATDIV(z0, z1)) [0] #EQ(#0, #0) -> c18 [0] #EQ(#0, #neg(z0)) -> c19 [0] #EQ(#0, #pos(z0)) -> c20 [0] #EQ(#0, #s(z0)) -> c21 [0] #EQ(#neg(z0), #0) -> c22 [0] #EQ(#neg(z0), #neg(z1)) -> c23(#EQ(z0, z1)) [0] #EQ(#neg(z0), #pos(z1)) -> c24 [0] #EQ(#pos(z0), #0) -> c25 [0] #EQ(#pos(z0), #neg(z1)) -> c26 [0] #EQ(#pos(z0), #pos(z1)) -> c27(#EQ(z0, z1)) [0] #EQ(#s(z0), #0) -> c28 [0] #EQ(#s(z0), #s(z1)) -> c29(#EQ(z0, z1)) [0] #EQ(::(z0, z1), ::(z2, z3)) -> c30(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z0, z2)) [0] #EQ(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z1, z3)) [0] #EQ(::(z0, z1), nil) -> c32 [0] #EQ(nil, ::(z0, z1)) -> c33 [0] #EQ(nil, nil) -> c34 [0] #MULT(#0, #0) -> c35 [0] #MULT(#0, #neg(z0)) -> c36 [0] #MULT(#0, #pos(z0)) -> c37 [0] #MULT(#neg(z0), #0) -> c38 [0] #MULT(#neg(z0), #neg(z1)) -> c39(#NATMULT(z0, z1)) [0] #MULT(#neg(z0), #pos(z1)) -> c40(#NATMULT(z0, z1)) [0] #MULT(#pos(z0), #0) -> c41 [0] #MULT(#pos(z0), #neg(z1)) -> c42(#NATMULT(z0, z1)) [0] #MULT(#pos(z0), #pos(z1)) -> c43(#NATMULT(z0, z1)) [0] #NATDIV(#0, #0) -> c44 [0] #NATDIV(#s(z0), #s(z1)) -> c45(#NATDIV(#natsub(z0, z1), #s(z1)), #NATSUB(z0, z1)) [0] #NATMULT(#0, z0) -> c46 [0] #NATMULT(#s(z0), z1) -> c47(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1)) [0] #NATSUB(z0, #0) -> c48 [0] #NATSUB(#s(z0), #s(z1)) -> c49(#NATSUB(z0, z1)) [0] #PRED(#0) -> c50 [0] #PRED(#neg(#s(z0))) -> c51 [0] #PRED(#pos(#s(#0))) -> c52 [0] #PRED(#pos(#s(#s(z0)))) -> c53 [0] #SUB(z0, #0) -> c54 [0] #SUB(z0, #neg(z1)) -> c55(#ADD(z0, #pos(z1))) [0] #SUB(z0, #pos(z1)) -> c56(#ADD(z0, #neg(z1))) [0] #SUCC(#0) -> c57 [0] #SUCC(#neg(#s(#0))) -> c58 [0] #SUCC(#neg(#s(#s(z0)))) -> c59 [0] #SUCC(#pos(#s(z0))) -> c60 [0] #add(#0, z0) -> z0 [0] #add(#neg(#s(#0)), z0) -> #pred(z0) [0] #add(#neg(#s(#s(z0))), z1) -> #pred(#add(#pos(#s(z0)), z1)) [0] #add(#pos(#s(#0)), z0) -> #succ(z0) [0] #add(#pos(#s(#s(z0))), z1) -> #succ(#add(#pos(#s(z0)), z1)) [0] #and(#false, #false) -> #false [0] #and(#false, #true) -> #false [0] #and(#true, #false) -> #false [0] #and(#true, #true) -> #true [0] #div(#0, #0) -> #divByZero [0] #div(#0, #neg(z0)) -> #0 [0] #div(#0, #pos(z0)) -> #0 [0] #div(#neg(z0), #0) -> #divByZero [0] #div(#neg(z0), #neg(z1)) -> #pos(#natdiv(z0, z1)) [0] #div(#neg(z0), #pos(z1)) -> #neg(#natdiv(z0, z1)) [0] #div(#pos(z0), #0) -> #divByZero [0] #div(#pos(z0), #neg(z1)) -> #neg(#natdiv(z0, z1)) [0] #div(#pos(z0), #pos(z1)) -> #pos(#natdiv(z0, z1)) [0] #eq(#0, #0) -> #true [0] #eq(#0, #neg(z0)) -> #false [0] #eq(#0, #pos(z0)) -> #false [0] #eq(#0, #s(z0)) -> #false [0] #eq(#neg(z0), #0) -> #false [0] #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) [0] #eq(#neg(z0), #pos(z1)) -> #false [0] #eq(#pos(z0), #0) -> #false [0] #eq(#pos(z0), #neg(z1)) -> #false [0] #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) [0] #eq(#s(z0), #0) -> #false [0] #eq(#s(z0), #s(z1)) -> #eq(z0, z1) [0] #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) [0] #eq(::(z0, z1), nil) -> #false [0] #eq(nil, ::(z0, z1)) -> #false [0] #eq(nil, nil) -> #true [0] #mult(#0, #0) -> #0 [0] #mult(#0, #neg(z0)) -> #0 [0] #mult(#0, #pos(z0)) -> #0 [0] #mult(#neg(z0), #0) -> #0 [0] #mult(#neg(z0), #neg(z1)) -> #pos(#natmult(z0, z1)) [0] #mult(#neg(z0), #pos(z1)) -> #neg(#natmult(z0, z1)) [0] #mult(#pos(z0), #0) -> #0 [0] #mult(#pos(z0), #neg(z1)) -> #neg(#natmult(z0, z1)) [0] #mult(#pos(z0), #pos(z1)) -> #pos(#natmult(z0, z1)) [0] #natdiv(#0, #0) -> #divByZero [0] #natdiv(#s(z0), #s(z1)) -> #s(#natdiv(#natsub(z0, z1), #s(z1))) [0] #natmult(#0, z0) -> #0 [0] #natmult(#s(z0), z1) -> #add(#pos(z1), #natmult(z0, z1)) [0] #natsub(z0, #0) -> z0 [0] #natsub(#s(z0), #s(z1)) -> #natsub(z0, z1) [0] #pred(#0) -> #neg(#s(#0)) [0] #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) [0] #pred(#pos(#s(#0))) -> #0 [0] #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) [0] #sub(z0, #0) -> z0 [0] #sub(z0, #neg(z1)) -> #add(z0, #pos(z1)) [0] #sub(z0, #pos(z1)) -> #add(z0, #neg(z1)) [0] #succ(#0) -> #pos(#s(#0)) [0] #succ(#neg(#s(#0))) -> #0 [0] #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) [0] #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) [0] #equal(z0, z1) -> #eq(z0, z1) [0] times(z0, z1) -> #mult(z0, z1) [0] minus(z0, z1) -> #sub(z0, z1) [0] div(z0, z1) -> #div(z0, z1) [0] eratos(z0) -> eratos#1(z0) [0] eratos#1(::(z0, z1)) -> ::(z0, eratos(filter(z0, z1))) [0] eratos#1(nil) -> nil [0] filter(z0, z1) -> filter#1(z1, z0) [0] filter#1(::(z0, z1), z2) -> filter#2(filter(z2, z1), z2, z0) [0] filter#1(nil, z0) -> nil [0] filter#2(z0, z1, z2) -> filter#3(#equal(mod(z2, z1), #0), z2, z0) [0] filter#3(#false, z0, z1) -> ::(z0, z1) [0] filter#3(#true, z0, z1) -> z1 [0] mod(z0, z1) -> minus(z0, times(z0, div(z0, z1))) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (8) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: #EQUAL(z0, z1) -> c61(#EQ(z0, z1)) [1] *'(z0, z1) -> c62(#MULT(z0, z1)) [1] -'(z0, z1) -> c63(#SUB(z0, z1)) [1] DIV(z0, z1) -> c64(#DIV(z0, z1)) [1] ERATOS(z0) -> c65(ERATOS#1(z0)) [1] ERATOS#1(::(z0, z1)) -> c66(ERATOS(filter(z0, z1)), FILTER(z0, z1)) [1] ERATOS#1(nil) -> c67 [1] FILTER(z0, z1) -> c68(FILTER#1(z1, z0)) [1] FILTER#1(::(z0, z1), z2) -> c69(FILTER#2(filter(z2, z1), z2, z0), FILTER(z2, z1)) [1] FILTER#1(nil, z0) -> c70 [1] FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(mod(z2, z1), #0), z2, z0), #EQUAL(mod(z2, z1), #0), MOD(z2, z1)) [1] FILTER#3(#false, z0, z1) -> c72 [1] FILTER#3(#true, z0, z1) -> c73 [1] MOD(z0, z1) -> c74(-'(z0, times(z0, div(z0, z1))), *'(z0, div(z0, z1)), DIV(z0, z1)) [1] #ADD(#0, z0) -> c [0] #ADD(#neg(#s(#0)), z0) -> c1(#PRED(z0)) [0] #ADD(#neg(#s(#s(z0))), z1) -> c2(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) [0] #ADD(#pos(#s(#0)), z0) -> c3(#SUCC(z0)) [0] #ADD(#pos(#s(#s(z0))), z1) -> c4(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) [0] #AND(#false, #false) -> c5 [0] #AND(#false, #true) -> c6 [0] #AND(#true, #false) -> c7 [0] #AND(#true, #true) -> c8 [0] #DIV(#0, #0) -> c9 [0] #DIV(#0, #neg(z0)) -> c10 [0] #DIV(#0, #pos(z0)) -> c11 [0] #DIV(#neg(z0), #0) -> c12 [0] #DIV(#neg(z0), #neg(z1)) -> c13(#NATDIV(z0, z1)) [0] #DIV(#neg(z0), #pos(z1)) -> c14(#NATDIV(z0, z1)) [0] #DIV(#pos(z0), #0) -> c15 [0] #DIV(#pos(z0), #neg(z1)) -> c16(#NATDIV(z0, z1)) [0] #DIV(#pos(z0), #pos(z1)) -> c17(#NATDIV(z0, z1)) [0] #EQ(#0, #0) -> c18 [0] #EQ(#0, #neg(z0)) -> c19 [0] #EQ(#0, #pos(z0)) -> c20 [0] #EQ(#0, #s(z0)) -> c21 [0] #EQ(#neg(z0), #0) -> c22 [0] #EQ(#neg(z0), #neg(z1)) -> c23(#EQ(z0, z1)) [0] #EQ(#neg(z0), #pos(z1)) -> c24 [0] #EQ(#pos(z0), #0) -> c25 [0] #EQ(#pos(z0), #neg(z1)) -> c26 [0] #EQ(#pos(z0), #pos(z1)) -> c27(#EQ(z0, z1)) [0] #EQ(#s(z0), #0) -> c28 [0] #EQ(#s(z0), #s(z1)) -> c29(#EQ(z0, z1)) [0] #EQ(::(z0, z1), ::(z2, z3)) -> c30(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z0, z2)) [0] #EQ(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z1, z3)) [0] #EQ(::(z0, z1), nil) -> c32 [0] #EQ(nil, ::(z0, z1)) -> c33 [0] #EQ(nil, nil) -> c34 [0] #MULT(#0, #0) -> c35 [0] #MULT(#0, #neg(z0)) -> c36 [0] #MULT(#0, #pos(z0)) -> c37 [0] #MULT(#neg(z0), #0) -> c38 [0] #MULT(#neg(z0), #neg(z1)) -> c39(#NATMULT(z0, z1)) [0] #MULT(#neg(z0), #pos(z1)) -> c40(#NATMULT(z0, z1)) [0] #MULT(#pos(z0), #0) -> c41 [0] #MULT(#pos(z0), #neg(z1)) -> c42(#NATMULT(z0, z1)) [0] #MULT(#pos(z0), #pos(z1)) -> c43(#NATMULT(z0, z1)) [0] #NATDIV(#0, #0) -> c44 [0] #NATDIV(#s(z0), #s(z1)) -> c45(#NATDIV(#natsub(z0, z1), #s(z1)), #NATSUB(z0, z1)) [0] #NATMULT(#0, z0) -> c46 [0] #NATMULT(#s(z0), z1) -> c47(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1)) [0] #NATSUB(z0, #0) -> c48 [0] #NATSUB(#s(z0), #s(z1)) -> c49(#NATSUB(z0, z1)) [0] #PRED(#0) -> c50 [0] #PRED(#neg(#s(z0))) -> c51 [0] #PRED(#pos(#s(#0))) -> c52 [0] #PRED(#pos(#s(#s(z0)))) -> c53 [0] #SUB(z0, #0) -> c54 [0] #SUB(z0, #neg(z1)) -> c55(#ADD(z0, #pos(z1))) [0] #SUB(z0, #pos(z1)) -> c56(#ADD(z0, #neg(z1))) [0] #SUCC(#0) -> c57 [0] #SUCC(#neg(#s(#0))) -> c58 [0] #SUCC(#neg(#s(#s(z0)))) -> c59 [0] #SUCC(#pos(#s(z0))) -> c60 [0] #add(#0, z0) -> z0 [0] #add(#neg(#s(#0)), z0) -> #pred(z0) [0] #add(#neg(#s(#s(z0))), z1) -> #pred(#add(#pos(#s(z0)), z1)) [0] #add(#pos(#s(#0)), z0) -> #succ(z0) [0] #add(#pos(#s(#s(z0))), z1) -> #succ(#add(#pos(#s(z0)), z1)) [0] #and(#false, #false) -> #false [0] #and(#false, #true) -> #false [0] #and(#true, #false) -> #false [0] #and(#true, #true) -> #true [0] #div(#0, #0) -> #divByZero [0] #div(#0, #neg(z0)) -> #0 [0] #div(#0, #pos(z0)) -> #0 [0] #div(#neg(z0), #0) -> #divByZero [0] #div(#neg(z0), #neg(z1)) -> #pos(#natdiv(z0, z1)) [0] #div(#neg(z0), #pos(z1)) -> #neg(#natdiv(z0, z1)) [0] #div(#pos(z0), #0) -> #divByZero [0] #div(#pos(z0), #neg(z1)) -> #neg(#natdiv(z0, z1)) [0] #div(#pos(z0), #pos(z1)) -> #pos(#natdiv(z0, z1)) [0] #eq(#0, #0) -> #true [0] #eq(#0, #neg(z0)) -> #false [0] #eq(#0, #pos(z0)) -> #false [0] #eq(#0, #s(z0)) -> #false [0] #eq(#neg(z0), #0) -> #false [0] #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) [0] #eq(#neg(z0), #pos(z1)) -> #false [0] #eq(#pos(z0), #0) -> #false [0] #eq(#pos(z0), #neg(z1)) -> #false [0] #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) [0] #eq(#s(z0), #0) -> #false [0] #eq(#s(z0), #s(z1)) -> #eq(z0, z1) [0] #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) [0] #eq(::(z0, z1), nil) -> #false [0] #eq(nil, ::(z0, z1)) -> #false [0] #eq(nil, nil) -> #true [0] #mult(#0, #0) -> #0 [0] #mult(#0, #neg(z0)) -> #0 [0] #mult(#0, #pos(z0)) -> #0 [0] #mult(#neg(z0), #0) -> #0 [0] #mult(#neg(z0), #neg(z1)) -> #pos(#natmult(z0, z1)) [0] #mult(#neg(z0), #pos(z1)) -> #neg(#natmult(z0, z1)) [0] #mult(#pos(z0), #0) -> #0 [0] #mult(#pos(z0), #neg(z1)) -> #neg(#natmult(z0, z1)) [0] #mult(#pos(z0), #pos(z1)) -> #pos(#natmult(z0, z1)) [0] #natdiv(#0, #0) -> #divByZero [0] #natdiv(#s(z0), #s(z1)) -> #s(#natdiv(#natsub(z0, z1), #s(z1))) [0] #natmult(#0, z0) -> #0 [0] #natmult(#s(z0), z1) -> #add(#pos(z1), #natmult(z0, z1)) [0] #natsub(z0, #0) -> z0 [0] #natsub(#s(z0), #s(z1)) -> #natsub(z0, z1) [0] #pred(#0) -> #neg(#s(#0)) [0] #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) [0] #pred(#pos(#s(#0))) -> #0 [0] #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) [0] #sub(z0, #0) -> z0 [0] #sub(z0, #neg(z1)) -> #add(z0, #pos(z1)) [0] #sub(z0, #pos(z1)) -> #add(z0, #neg(z1)) [0] #succ(#0) -> #pos(#s(#0)) [0] #succ(#neg(#s(#0))) -> #0 [0] #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) [0] #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) [0] #equal(z0, z1) -> #eq(z0, z1) [0] times(z0, z1) -> #mult(z0, z1) [0] minus(z0, z1) -> #sub(z0, z1) [0] div(z0, z1) -> #div(z0, z1) [0] eratos(z0) -> eratos#1(z0) [0] eratos#1(::(z0, z1)) -> ::(z0, eratos(filter(z0, z1))) [0] eratos#1(nil) -> nil [0] filter(z0, z1) -> filter#1(z1, z0) [0] filter#1(::(z0, z1), z2) -> filter#2(filter(z2, z1), z2, z0) [0] filter#1(nil, z0) -> nil [0] filter#2(z0, z1, z2) -> filter#3(#equal(mod(z2, z1), #0), z2, z0) [0] filter#3(#false, z0, z1) -> ::(z0, z1) [0] filter#3(#true, z0, z1) -> z1 [0] mod(z0, z1) -> minus(z0, times(z0, div(z0, z1))) [0] The TRS has the following type information: #EQUAL :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c61 c61 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 -> c61 #EQ :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 *' :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c62 c62 :: c35:c36:c37:c38:c39:c40:c41:c42:c43 -> c62 #MULT :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c35:c36:c37:c38:c39:c40:c41:c42:c43 -' :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c63 c63 :: c54:c55:c56 -> c63 #SUB :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c54:c55:c56 DIV :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c64 c64 :: c9:c10:c11:c12:c13:c14:c15:c16:c17 -> c64 #DIV :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c9:c10:c11:c12:c13:c14:c15:c16:c17 ERATOS :: :::nil:#0:#s:#neg:#pos:#divByZero -> c65 c65 :: c66:c67 -> c65 ERATOS#1 :: :::nil:#0:#s:#neg:#pos:#divByZero -> c66:c67 :: :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero c66 :: c65 -> c68 -> c66:c67 filter :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero FILTER :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c68 nil :: :::nil:#0:#s:#neg:#pos:#divByZero c67 :: c66:c67 c68 :: c69:c70 -> c68 FILTER#1 :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c69:c70 c69 :: c71 -> c68 -> c69:c70 FILTER#2 :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c71 c70 :: c69:c70 c71 :: c72:c73 -> c61 -> c74 -> c71 FILTER#3 :: #false:#true -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c72:c73 #equal :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> #false:#true mod :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero #0 :: :::nil:#0:#s:#neg:#pos:#divByZero MOD :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c74 #false :: #false:#true c72 :: c72:c73 #true :: #false:#true c73 :: c72:c73 c74 :: c63 -> c62 -> c64 -> c74 times :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero div :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero #ADD :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c:c1:c2:c3:c4 c :: c:c1:c2:c3:c4 #neg :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero #s :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero c1 :: c50:c51:c52:c53 -> c:c1:c2:c3:c4 #PRED :: :::nil:#0:#s:#neg:#pos:#divByZero -> c50:c51:c52:c53 c2 :: c50:c51:c52:c53 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 #add :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero #pos :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero c3 :: c57:c58:c59:c60 -> c:c1:c2:c3:c4 #SUCC :: :::nil:#0:#s:#neg:#pos:#divByZero -> c57:c58:c59:c60 c4 :: c57:c58:c59:c60 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 #AND :: #false:#true -> #false:#true -> c5:c6:c7:c8 c5 :: c5:c6:c7:c8 c6 :: c5:c6:c7:c8 c7 :: c5:c6:c7:c8 c8 :: c5:c6:c7:c8 c9 :: c9:c10:c11:c12:c13:c14:c15:c16:c17 c10 :: c9:c10:c11:c12:c13:c14:c15:c16:c17 c11 :: c9:c10:c11:c12:c13:c14:c15:c16:c17 c12 :: c9:c10:c11:c12:c13:c14:c15:c16:c17 c13 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17 #NATDIV :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c44:c45 c14 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17 c15 :: c9:c10:c11:c12:c13:c14:c15:c16:c17 c16 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17 c17 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17 c18 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c19 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c20 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c21 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c22 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c23 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c24 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c25 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c26 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c27 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c28 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c29 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c30 :: c5:c6:c7:c8 -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 #eq :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> #false:#true c31 :: c5:c6:c7:c8 -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c32 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c33 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c34 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34 c35 :: c35:c36:c37:c38:c39:c40:c41:c42:c43 c36 :: c35:c36:c37:c38:c39:c40:c41:c42:c43 c37 :: c35:c36:c37:c38:c39:c40:c41:c42:c43 c38 :: c35:c36:c37:c38:c39:c40:c41:c42:c43 c39 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43 #NATMULT :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c46:c47 c40 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43 c41 :: c35:c36:c37:c38:c39:c40:c41:c42:c43 c42 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43 c43 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43 c44 :: c44:c45 c45 :: c44:c45 -> c48:c49 -> c44:c45 #natsub :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero #NATSUB :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> c48:c49 c46 :: c46:c47 c47 :: c:c1:c2:c3:c4 -> c46:c47 -> c46:c47 #natmult :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero c48 :: c48:c49 c49 :: c48:c49 -> c48:c49 c50 :: c50:c51:c52:c53 c51 :: c50:c51:c52:c53 c52 :: c50:c51:c52:c53 c53 :: c50:c51:c52:c53 c54 :: c54:c55:c56 c55 :: c:c1:c2:c3:c4 -> c54:c55:c56 c56 :: c:c1:c2:c3:c4 -> c54:c55:c56 c57 :: c57:c58:c59:c60 c58 :: c57:c58:c59:c60 c59 :: c57:c58:c59:c60 c60 :: c57:c58:c59:c60 #pred :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero #succ :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero #and :: #false:#true -> #false:#true -> #false:#true #div :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero #divByZero :: :::nil:#0:#s:#neg:#pos:#divByZero #natdiv :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero #mult :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero #sub :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero minus :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero eratos :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero eratos#1 :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero filter#1 :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero filter#2 :: :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero filter#3 :: #false:#true -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero -> :::nil:#0:#s:#neg:#pos:#divByZero Rewrite Strategy: INNERMOST ---------------------------------------- (9) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: #EQUAL_2 *'_2 -'_2 DIV_2 ERATOS_1 ERATOS#1_1 FILTER_2 FILTER#1_2 FILTER#2_3 FILTER#3_3 MOD_2 (c) The following functions are completely defined: #ADD_2 #AND_2 #DIV_2 #EQ_2 #MULT_2 #NATDIV_2 #NATMULT_2 #NATSUB_2 #PRED_1 #SUB_2 #SUCC_1 #add_2 #and_2 #div_2 #eq_2 #mult_2 #natdiv_2 #natmult_2 #natsub_2 #pred_1 #sub_2 #succ_1 #equal_2 times_2 minus_2 div_2 eratos_1 eratos#1_1 filter_2 filter#1_2 filter#2_3 filter#3_3 mod_2 Due to the following rules being added: #ADD(v0, v1) -> c [0] #AND(v0, v1) -> null_#AND [0] #DIV(v0, v1) -> null_#DIV [0] #EQ(v0, v1) -> null_#EQ [0] #MULT(v0, v1) -> null_#MULT [0] #NATDIV(v0, v1) -> c44 [0] #NATMULT(v0, v1) -> c46 [0] #NATSUB(v0, v1) -> c48 [0] #PRED(v0) -> null_#PRED [0] #SUB(v0, v1) -> c54 [0] #SUCC(v0) -> null_#SUCC [0] #add(v0, v1) -> null_#add [0] #and(v0, v1) -> null_#and [0] #div(v0, v1) -> null_#div [0] #eq(v0, v1) -> null_#eq [0] #mult(v0, v1) -> null_#mult [0] #natdiv(v0, v1) -> null_#natdiv [0] #natmult(v0, v1) -> null_#natmult [0] #natsub(v0, v1) -> null_#natsub [0] #pred(v0) -> null_#pred [0] #sub(v0, v1) -> null_#sub [0] #succ(v0) -> null_#succ [0] #equal(v0, v1) -> null_#equal [0] times(v0, v1) -> null_times [0] minus(v0, v1) -> null_minus [0] div(v0, v1) -> null_div [0] eratos(v0) -> null_eratos [0] eratos#1(v0) -> null_eratos#1 [0] filter(v0, v1) -> null_filter [0] filter#1(v0, v1) -> null_filter#1 [0] filter#2(v0, v1, v2) -> null_filter#2 [0] filter#3(v0, v1, v2) -> null_filter#3 [0] mod(v0, v1) -> null_mod [0] And the following fresh constants: null_#AND, null_#DIV, null_#EQ, null_#MULT, null_#PRED, null_#SUCC, null_#add, null_#and, null_#div, null_#eq, null_#mult, null_#natdiv, null_#natmult, null_#natsub, null_#pred, null_#sub, null_#succ, null_#equal, null_times, null_minus, null_div, null_eratos, null_eratos#1, null_filter, null_filter#1, null_filter#2, null_filter#3, null_mod, const, const1, const2, const3, const4, const5, const6, const7 ---------------------------------------- (10) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: #EQUAL(z0, z1) -> c61(#EQ(z0, z1)) [1] *'(z0, z1) -> c62(#MULT(z0, z1)) [1] -'(z0, z1) -> c63(#SUB(z0, z1)) [1] DIV(z0, z1) -> c64(#DIV(z0, z1)) [1] ERATOS(z0) -> c65(ERATOS#1(z0)) [1] ERATOS#1(::(z0, z1)) -> c66(ERATOS(filter(z0, z1)), FILTER(z0, z1)) [1] ERATOS#1(nil) -> c67 [1] FILTER(z0, z1) -> c68(FILTER#1(z1, z0)) [1] FILTER#1(::(z0, z1), z2) -> c69(FILTER#2(filter(z2, z1), z2, z0), FILTER(z2, z1)) [1] FILTER#1(nil, z0) -> c70 [1] FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(mod(z2, z1), #0), z2, z0), #EQUAL(mod(z2, z1), #0), MOD(z2, z1)) [1] FILTER#3(#false, z0, z1) -> c72 [1] FILTER#3(#true, z0, z1) -> c73 [1] MOD(z0, z1) -> c74(-'(z0, times(z0, div(z0, z1))), *'(z0, div(z0, z1)), DIV(z0, z1)) [1] #ADD(#0, z0) -> c [0] #ADD(#neg(#s(#0)), z0) -> c1(#PRED(z0)) [0] #ADD(#neg(#s(#s(z0))), z1) -> c2(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) [0] #ADD(#pos(#s(#0)), z0) -> c3(#SUCC(z0)) [0] #ADD(#pos(#s(#s(z0))), z1) -> c4(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) [0] #AND(#false, #false) -> c5 [0] #AND(#false, #true) -> c6 [0] #AND(#true, #false) -> c7 [0] #AND(#true, #true) -> c8 [0] #DIV(#0, #0) -> c9 [0] #DIV(#0, #neg(z0)) -> c10 [0] #DIV(#0, #pos(z0)) -> c11 [0] #DIV(#neg(z0), #0) -> c12 [0] #DIV(#neg(z0), #neg(z1)) -> c13(#NATDIV(z0, z1)) [0] #DIV(#neg(z0), #pos(z1)) -> c14(#NATDIV(z0, z1)) [0] #DIV(#pos(z0), #0) -> c15 [0] #DIV(#pos(z0), #neg(z1)) -> c16(#NATDIV(z0, z1)) [0] #DIV(#pos(z0), #pos(z1)) -> c17(#NATDIV(z0, z1)) [0] #EQ(#0, #0) -> c18 [0] #EQ(#0, #neg(z0)) -> c19 [0] #EQ(#0, #pos(z0)) -> c20 [0] #EQ(#0, #s(z0)) -> c21 [0] #EQ(#neg(z0), #0) -> c22 [0] #EQ(#neg(z0), #neg(z1)) -> c23(#EQ(z0, z1)) [0] #EQ(#neg(z0), #pos(z1)) -> c24 [0] #EQ(#pos(z0), #0) -> c25 [0] #EQ(#pos(z0), #neg(z1)) -> c26 [0] #EQ(#pos(z0), #pos(z1)) -> c27(#EQ(z0, z1)) [0] #EQ(#s(z0), #0) -> c28 [0] #EQ(#s(z0), #s(z1)) -> c29(#EQ(z0, z1)) [0] #EQ(::(z0, z1), ::(z2, z3)) -> c30(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z0, z2)) [0] #EQ(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z1, z3)) [0] #EQ(::(z0, z1), nil) -> c32 [0] #EQ(nil, ::(z0, z1)) -> c33 [0] #EQ(nil, nil) -> c34 [0] #MULT(#0, #0) -> c35 [0] #MULT(#0, #neg(z0)) -> c36 [0] #MULT(#0, #pos(z0)) -> c37 [0] #MULT(#neg(z0), #0) -> c38 [0] #MULT(#neg(z0), #neg(z1)) -> c39(#NATMULT(z0, z1)) [0] #MULT(#neg(z0), #pos(z1)) -> c40(#NATMULT(z0, z1)) [0] #MULT(#pos(z0), #0) -> c41 [0] #MULT(#pos(z0), #neg(z1)) -> c42(#NATMULT(z0, z1)) [0] #MULT(#pos(z0), #pos(z1)) -> c43(#NATMULT(z0, z1)) [0] #NATDIV(#0, #0) -> c44 [0] #NATDIV(#s(z0), #s(z1)) -> c45(#NATDIV(#natsub(z0, z1), #s(z1)), #NATSUB(z0, z1)) [0] #NATMULT(#0, z0) -> c46 [0] #NATMULT(#s(z0), z1) -> c47(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1)) [0] #NATSUB(z0, #0) -> c48 [0] #NATSUB(#s(z0), #s(z1)) -> c49(#NATSUB(z0, z1)) [0] #PRED(#0) -> c50 [0] #PRED(#neg(#s(z0))) -> c51 [0] #PRED(#pos(#s(#0))) -> c52 [0] #PRED(#pos(#s(#s(z0)))) -> c53 [0] #SUB(z0, #0) -> c54 [0] #SUB(z0, #neg(z1)) -> c55(#ADD(z0, #pos(z1))) [0] #SUB(z0, #pos(z1)) -> c56(#ADD(z0, #neg(z1))) [0] #SUCC(#0) -> c57 [0] #SUCC(#neg(#s(#0))) -> c58 [0] #SUCC(#neg(#s(#s(z0)))) -> c59 [0] #SUCC(#pos(#s(z0))) -> c60 [0] #add(#0, z0) -> z0 [0] #add(#neg(#s(#0)), z0) -> #pred(z0) [0] #add(#neg(#s(#s(z0))), z1) -> #pred(#add(#pos(#s(z0)), z1)) [0] #add(#pos(#s(#0)), z0) -> #succ(z0) [0] #add(#pos(#s(#s(z0))), z1) -> #succ(#add(#pos(#s(z0)), z1)) [0] #and(#false, #false) -> #false [0] #and(#false, #true) -> #false [0] #and(#true, #false) -> #false [0] #and(#true, #true) -> #true [0] #div(#0, #0) -> #divByZero [0] #div(#0, #neg(z0)) -> #0 [0] #div(#0, #pos(z0)) -> #0 [0] #div(#neg(z0), #0) -> #divByZero [0] #div(#neg(z0), #neg(z1)) -> #pos(#natdiv(z0, z1)) [0] #div(#neg(z0), #pos(z1)) -> #neg(#natdiv(z0, z1)) [0] #div(#pos(z0), #0) -> #divByZero [0] #div(#pos(z0), #neg(z1)) -> #neg(#natdiv(z0, z1)) [0] #div(#pos(z0), #pos(z1)) -> #pos(#natdiv(z0, z1)) [0] #eq(#0, #0) -> #true [0] #eq(#0, #neg(z0)) -> #false [0] #eq(#0, #pos(z0)) -> #false [0] #eq(#0, #s(z0)) -> #false [0] #eq(#neg(z0), #0) -> #false [0] #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) [0] #eq(#neg(z0), #pos(z1)) -> #false [0] #eq(#pos(z0), #0) -> #false [0] #eq(#pos(z0), #neg(z1)) -> #false [0] #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) [0] #eq(#s(z0), #0) -> #false [0] #eq(#s(z0), #s(z1)) -> #eq(z0, z1) [0] #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) [0] #eq(::(z0, z1), nil) -> #false [0] #eq(nil, ::(z0, z1)) -> #false [0] #eq(nil, nil) -> #true [0] #mult(#0, #0) -> #0 [0] #mult(#0, #neg(z0)) -> #0 [0] #mult(#0, #pos(z0)) -> #0 [0] #mult(#neg(z0), #0) -> #0 [0] #mult(#neg(z0), #neg(z1)) -> #pos(#natmult(z0, z1)) [0] #mult(#neg(z0), #pos(z1)) -> #neg(#natmult(z0, z1)) [0] #mult(#pos(z0), #0) -> #0 [0] #mult(#pos(z0), #neg(z1)) -> #neg(#natmult(z0, z1)) [0] #mult(#pos(z0), #pos(z1)) -> #pos(#natmult(z0, z1)) [0] #natdiv(#0, #0) -> #divByZero [0] #natdiv(#s(z0), #s(z1)) -> #s(#natdiv(#natsub(z0, z1), #s(z1))) [0] #natmult(#0, z0) -> #0 [0] #natmult(#s(z0), z1) -> #add(#pos(z1), #natmult(z0, z1)) [0] #natsub(z0, #0) -> z0 [0] #natsub(#s(z0), #s(z1)) -> #natsub(z0, z1) [0] #pred(#0) -> #neg(#s(#0)) [0] #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) [0] #pred(#pos(#s(#0))) -> #0 [0] #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) [0] #sub(z0, #0) -> z0 [0] #sub(z0, #neg(z1)) -> #add(z0, #pos(z1)) [0] #sub(z0, #pos(z1)) -> #add(z0, #neg(z1)) [0] #succ(#0) -> #pos(#s(#0)) [0] #succ(#neg(#s(#0))) -> #0 [0] #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) [0] #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) [0] #equal(z0, z1) -> #eq(z0, z1) [0] times(z0, z1) -> #mult(z0, z1) [0] minus(z0, z1) -> #sub(z0, z1) [0] div(z0, z1) -> #div(z0, z1) [0] eratos(z0) -> eratos#1(z0) [0] eratos#1(::(z0, z1)) -> ::(z0, eratos(filter(z0, z1))) [0] eratos#1(nil) -> nil [0] filter(z0, z1) -> filter#1(z1, z0) [0] filter#1(::(z0, z1), z2) -> filter#2(filter(z2, z1), z2, z0) [0] filter#1(nil, z0) -> nil [0] filter#2(z0, z1, z2) -> filter#3(#equal(mod(z2, z1), #0), z2, z0) [0] filter#3(#false, z0, z1) -> ::(z0, z1) [0] filter#3(#true, z0, z1) -> z1 [0] mod(z0, z1) -> minus(z0, times(z0, div(z0, z1))) [0] #ADD(v0, v1) -> c [0] #AND(v0, v1) -> null_#AND [0] #DIV(v0, v1) -> null_#DIV [0] #EQ(v0, v1) -> null_#EQ [0] #MULT(v0, v1) -> null_#MULT [0] #NATDIV(v0, v1) -> c44 [0] #NATMULT(v0, v1) -> c46 [0] #NATSUB(v0, v1) -> c48 [0] #PRED(v0) -> null_#PRED [0] #SUB(v0, v1) -> c54 [0] #SUCC(v0) -> null_#SUCC [0] #add(v0, v1) -> null_#add [0] #and(v0, v1) -> null_#and [0] #div(v0, v1) -> null_#div [0] #eq(v0, v1) -> null_#eq [0] #mult(v0, v1) -> null_#mult [0] #natdiv(v0, v1) -> null_#natdiv [0] #natmult(v0, v1) -> null_#natmult [0] #natsub(v0, v1) -> null_#natsub [0] #pred(v0) -> null_#pred [0] #sub(v0, v1) -> null_#sub [0] #succ(v0) -> null_#succ [0] #equal(v0, v1) -> null_#equal [0] times(v0, v1) -> null_times [0] minus(v0, v1) -> null_minus [0] div(v0, v1) -> null_div [0] eratos(v0) -> null_eratos [0] eratos#1(v0) -> null_eratos#1 [0] filter(v0, v1) -> null_filter [0] filter#1(v0, v1) -> null_filter#1 [0] filter#2(v0, v1, v2) -> null_filter#2 [0] filter#3(v0, v1, v2) -> null_filter#3 [0] mod(v0, v1) -> null_mod [0] The TRS has the following type information: #EQUAL :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c61 c61 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c61 #EQ :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ *' :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c62 c62 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT -> c62 #MULT :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT -' :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c63 c63 :: c54:c55:c56 -> c63 #SUB :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c54:c55:c56 DIV :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c64 c64 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV -> c64 #DIV :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV ERATOS :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c65 c65 :: c66:c67 -> c65 ERATOS#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c66:c67 :: :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod c66 :: c65 -> c68 -> c66:c67 filter :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod FILTER :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c68 nil :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod c67 :: c66:c67 c68 :: c69:c70 -> c68 FILTER#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c69:c70 c69 :: c71 -> c68 -> c69:c70 FILTER#2 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c71 c70 :: c69:c70 c71 :: c72:c73 -> c61 -> c74 -> c71 FILTER#3 :: #false:#true:null_#and:null_#eq:null_#equal -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c72:c73 #equal :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> #false:#true:null_#and:null_#eq:null_#equal mod :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #0 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod MOD :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c74 #false :: #false:#true:null_#and:null_#eq:null_#equal c72 :: c72:c73 #true :: #false:#true:null_#and:null_#eq:null_#equal c73 :: c72:c73 c74 :: c63 -> c62 -> c64 -> c74 times :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod div :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #ADD :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c:c1:c2:c3:c4 c :: c:c1:c2:c3:c4 #neg :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #s :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod c1 :: c50:c51:c52:c53:null_#PRED -> c:c1:c2:c3:c4 #PRED :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c50:c51:c52:c53:null_#PRED c2 :: c50:c51:c52:c53:null_#PRED -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 #add :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #pos :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod c3 :: c57:c58:c59:c60:null_#SUCC -> c:c1:c2:c3:c4 #SUCC :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c57:c58:c59:c60:null_#SUCC c4 :: c57:c58:c59:c60:null_#SUCC -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 #AND :: #false:#true:null_#and:null_#eq:null_#equal -> #false:#true:null_#and:null_#eq:null_#equal -> c5:c6:c7:c8:null_#AND c5 :: c5:c6:c7:c8:null_#AND c6 :: c5:c6:c7:c8:null_#AND c7 :: c5:c6:c7:c8:null_#AND c8 :: c5:c6:c7:c8:null_#AND c9 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c10 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c11 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c12 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c13 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV #NATDIV :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c44:c45 c14 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c15 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c16 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c17 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c18 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c19 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c20 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c21 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c22 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c23 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c24 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c25 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c26 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c27 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c28 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c29 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c30 :: c5:c6:c7:c8:null_#AND -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ #eq :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> #false:#true:null_#and:null_#eq:null_#equal c31 :: c5:c6:c7:c8:null_#AND -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c32 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c33 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c34 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c35 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c36 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c37 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c38 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c39 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT #NATMULT :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c46:c47 c40 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c41 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c42 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c43 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c44 :: c44:c45 c45 :: c44:c45 -> c48:c49 -> c44:c45 #natsub :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #NATSUB :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c48:c49 c46 :: c46:c47 c47 :: c:c1:c2:c3:c4 -> c46:c47 -> c46:c47 #natmult :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod c48 :: c48:c49 c49 :: c48:c49 -> c48:c49 c50 :: c50:c51:c52:c53:null_#PRED c51 :: c50:c51:c52:c53:null_#PRED c52 :: c50:c51:c52:c53:null_#PRED c53 :: c50:c51:c52:c53:null_#PRED c54 :: c54:c55:c56 c55 :: c:c1:c2:c3:c4 -> c54:c55:c56 c56 :: c:c1:c2:c3:c4 -> c54:c55:c56 c57 :: c57:c58:c59:c60:null_#SUCC c58 :: c57:c58:c59:c60:null_#SUCC c59 :: c57:c58:c59:c60:null_#SUCC c60 :: c57:c58:c59:c60:null_#SUCC #pred :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #succ :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #and :: #false:#true:null_#and:null_#eq:null_#equal -> #false:#true:null_#and:null_#eq:null_#equal -> #false:#true:null_#and:null_#eq:null_#equal #div :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #divByZero :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #natdiv :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #mult :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #sub :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod minus :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod eratos :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod eratos#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod filter#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod filter#2 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod filter#3 :: #false:#true:null_#and:null_#eq:null_#equal -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#AND :: c5:c6:c7:c8:null_#AND null_#DIV :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV null_#EQ :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ null_#MULT :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT null_#PRED :: c50:c51:c52:c53:null_#PRED null_#SUCC :: c57:c58:c59:c60:null_#SUCC null_#add :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#and :: #false:#true:null_#and:null_#eq:null_#equal null_#div :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#eq :: #false:#true:null_#and:null_#eq:null_#equal null_#mult :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#natdiv :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#natmult :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#natsub :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#pred :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#sub :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#succ :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#equal :: #false:#true:null_#and:null_#eq:null_#equal null_times :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_minus :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_div :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_eratos :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_eratos#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_filter :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_filter#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_filter#2 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_filter#3 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_mod :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod const :: c61 const1 :: c62 const2 :: c63 const3 :: c64 const4 :: c65 const5 :: c68 const6 :: c71 const7 :: c74 Rewrite Strategy: INNERMOST ---------------------------------------- (11) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (12) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: #EQUAL(z0, z1) -> c61(#EQ(z0, z1)) [1] *'(z0, z1) -> c62(#MULT(z0, z1)) [1] -'(z0, z1) -> c63(#SUB(z0, z1)) [1] DIV(z0, z1) -> c64(#DIV(z0, z1)) [1] ERATOS(z0) -> c65(ERATOS#1(z0)) [1] ERATOS#1(::(z0, z1)) -> c66(ERATOS(filter#1(z1, z0)), FILTER(z0, z1)) [1] ERATOS#1(::(z0, z1)) -> c66(ERATOS(null_filter), FILTER(z0, z1)) [1] ERATOS#1(nil) -> c67 [1] FILTER(z0, z1) -> c68(FILTER#1(z1, z0)) [1] FILTER#1(::(z0, z1), z2) -> c69(FILTER#2(filter#1(z1, z2), z2, z0), FILTER(z2, z1)) [1] FILTER#1(::(z0, z1), z2) -> c69(FILTER#2(null_filter, z2, z0), FILTER(z2, z1)) [1] FILTER#1(nil, z0) -> c70 [1] FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(minus(z2, times(z2, div(z2, z1))), #0), z2, z0), #EQUAL(minus(z2, times(z2, div(z2, z1))), #0), MOD(z2, z1)) [1] FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(minus(z2, times(z2, div(z2, z1))), #0), z2, z0), #EQUAL(null_mod, #0), MOD(z2, z1)) [1] FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(null_mod, #0), z2, z0), #EQUAL(minus(z2, times(z2, div(z2, z1))), #0), MOD(z2, z1)) [1] FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(null_mod, #0), z2, z0), #EQUAL(null_mod, #0), MOD(z2, z1)) [1] FILTER#3(#false, z0, z1) -> c72 [1] FILTER#3(#true, z0, z1) -> c73 [1] MOD(z0, z1) -> c74(-'(z0, times(z0, #div(z0, z1))), *'(z0, #div(z0, z1)), DIV(z0, z1)) [1] MOD(z0, z1) -> c74(-'(z0, times(z0, #div(z0, z1))), *'(z0, null_div), DIV(z0, z1)) [1] MOD(z0, z1) -> c74(-'(z0, times(z0, null_div)), *'(z0, #div(z0, z1)), DIV(z0, z1)) [1] MOD(z0, z1) -> c74(-'(z0, times(z0, null_div)), *'(z0, null_div), DIV(z0, z1)) [1] #ADD(#0, z0) -> c [0] #ADD(#neg(#s(#0)), z0) -> c1(#PRED(z0)) [0] #ADD(#neg(#s(#s(#0))), z1) -> c2(#PRED(#succ(z1)), #ADD(#pos(#s(#0)), z1)) [0] #ADD(#neg(#s(#s(#s(z0')))), z1) -> c2(#PRED(#succ(#add(#pos(#s(z0')), z1))), #ADD(#pos(#s(#s(z0'))), z1)) [0] #ADD(#neg(#s(#s(z0))), z1) -> c2(#PRED(null_#add), #ADD(#pos(#s(z0)), z1)) [0] #ADD(#pos(#s(#0)), z0) -> c3(#SUCC(z0)) [0] #ADD(#pos(#s(#s(#0))), z1) -> c4(#SUCC(#succ(z1)), #ADD(#pos(#s(#0)), z1)) [0] #ADD(#pos(#s(#s(#s(z0'')))), z1) -> c4(#SUCC(#succ(#add(#pos(#s(z0'')), z1))), #ADD(#pos(#s(#s(z0''))), z1)) [0] #ADD(#pos(#s(#s(z0))), z1) -> c4(#SUCC(null_#add), #ADD(#pos(#s(z0)), z1)) [0] #AND(#false, #false) -> c5 [0] #AND(#false, #true) -> c6 [0] #AND(#true, #false) -> c7 [0] #AND(#true, #true) -> c8 [0] #DIV(#0, #0) -> c9 [0] #DIV(#0, #neg(z0)) -> c10 [0] #DIV(#0, #pos(z0)) -> c11 [0] #DIV(#neg(z0), #0) -> c12 [0] #DIV(#neg(z0), #neg(z1)) -> c13(#NATDIV(z0, z1)) [0] #DIV(#neg(z0), #pos(z1)) -> c14(#NATDIV(z0, z1)) [0] #DIV(#pos(z0), #0) -> c15 [0] #DIV(#pos(z0), #neg(z1)) -> c16(#NATDIV(z0, z1)) [0] #DIV(#pos(z0), #pos(z1)) -> c17(#NATDIV(z0, z1)) [0] #EQ(#0, #0) -> c18 [0] #EQ(#0, #neg(z0)) -> c19 [0] #EQ(#0, #pos(z0)) -> c20 [0] #EQ(#0, #s(z0)) -> c21 [0] #EQ(#neg(z0), #0) -> c22 [0] #EQ(#neg(z0), #neg(z1)) -> c23(#EQ(z0, z1)) [0] #EQ(#neg(z0), #pos(z1)) -> c24 [0] #EQ(#pos(z0), #0) -> c25 [0] #EQ(#pos(z0), #neg(z1)) -> c26 [0] #EQ(#pos(z0), #pos(z1)) -> c27(#EQ(z0, z1)) [0] #EQ(#s(z0), #0) -> c28 [0] #EQ(#s(z0), #s(z1)) -> c29(#EQ(z0, z1)) [0] #EQ(::(z0, z1), ::(z2, z3)) -> c30(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z0, z2)) [0] #EQ(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z1, z3)) [0] #EQ(::(z0, z1), nil) -> c32 [0] #EQ(nil, ::(z0, z1)) -> c33 [0] #EQ(nil, nil) -> c34 [0] #MULT(#0, #0) -> c35 [0] #MULT(#0, #neg(z0)) -> c36 [0] #MULT(#0, #pos(z0)) -> c37 [0] #MULT(#neg(z0), #0) -> c38 [0] #MULT(#neg(z0), #neg(z1)) -> c39(#NATMULT(z0, z1)) [0] #MULT(#neg(z0), #pos(z1)) -> c40(#NATMULT(z0, z1)) [0] #MULT(#pos(z0), #0) -> c41 [0] #MULT(#pos(z0), #neg(z1)) -> c42(#NATMULT(z0, z1)) [0] #MULT(#pos(z0), #pos(z1)) -> c43(#NATMULT(z0, z1)) [0] #NATDIV(#0, #0) -> c44 [0] #NATDIV(#s(z0), #s(#0)) -> c45(#NATDIV(z0, #s(#0)), #NATSUB(z0, #0)) [0] #NATDIV(#s(#s(z0505)), #s(#s(z1287))) -> c45(#NATDIV(#natsub(z0505, z1287), #s(#s(z1287))), #NATSUB(#s(z0505), #s(z1287))) [0] #NATDIV(#s(z0), #s(z1)) -> c45(#NATDIV(null_#natsub, #s(z1)), #NATSUB(z0, z1)) [0] #NATMULT(#0, z0) -> c46 [0] #NATMULT(#s(#0), z1) -> c47(#ADD(#pos(z1), #0), #NATMULT(#0, z1)) [0] #NATMULT(#s(#s(z0506)), z1) -> c47(#ADD(#pos(z1), #add(#pos(z1), #natmult(z0506, z1))), #NATMULT(#s(z0506), z1)) [0] #NATMULT(#s(z0), z1) -> c47(#ADD(#pos(z1), null_#natmult), #NATMULT(z0, z1)) [0] #NATSUB(z0, #0) -> c48 [0] #NATSUB(#s(z0), #s(z1)) -> c49(#NATSUB(z0, z1)) [0] #PRED(#0) -> c50 [0] #PRED(#neg(#s(z0))) -> c51 [0] #PRED(#pos(#s(#0))) -> c52 [0] #PRED(#pos(#s(#s(z0)))) -> c53 [0] #SUB(z0, #0) -> c54 [0] #SUB(z0, #neg(z1)) -> c55(#ADD(z0, #pos(z1))) [0] #SUB(z0, #pos(z1)) -> c56(#ADD(z0, #neg(z1))) [0] #SUCC(#0) -> c57 [0] #SUCC(#neg(#s(#0))) -> c58 [0] #SUCC(#neg(#s(#s(z0)))) -> c59 [0] #SUCC(#pos(#s(z0))) -> c60 [0] #add(#0, z0) -> z0 [0] #add(#neg(#s(#0)), z0) -> #pred(z0) [0] #add(#neg(#s(#s(#0))), z1) -> #pred(#succ(z1)) [0] #add(#neg(#s(#s(#s(z0507)))), z1) -> #pred(#succ(#add(#pos(#s(z0507)), z1))) [0] #add(#neg(#s(#s(z0))), z1) -> #pred(null_#add) [0] #add(#pos(#s(#0)), z0) -> #succ(z0) [0] #add(#pos(#s(#s(#0))), z1) -> #succ(#succ(z1)) [0] #add(#pos(#s(#s(#s(z0508)))), z1) -> #succ(#succ(#add(#pos(#s(z0508)), z1))) [0] #add(#pos(#s(#s(z0))), z1) -> #succ(null_#add) [0] #and(#false, #false) -> #false [0] #and(#false, #true) -> #false [0] #and(#true, #false) -> #false [0] #and(#true, #true) -> #true [0] #div(#0, #0) -> #divByZero [0] #div(#0, #neg(z0)) -> #0 [0] #div(#0, #pos(z0)) -> #0 [0] #div(#neg(z0), #0) -> #divByZero [0] #div(#neg(z0), #neg(z1)) -> #pos(#natdiv(z0, z1)) [0] #div(#neg(z0), #pos(z1)) -> #neg(#natdiv(z0, z1)) [0] #div(#pos(z0), #0) -> #divByZero [0] #div(#pos(z0), #neg(z1)) -> #neg(#natdiv(z0, z1)) [0] #div(#pos(z0), #pos(z1)) -> #pos(#natdiv(z0, z1)) [0] #eq(#0, #0) -> #true [0] #eq(#0, #neg(z0)) -> #false [0] #eq(#0, #pos(z0)) -> #false [0] #eq(#0, #s(z0)) -> #false [0] #eq(#neg(z0), #0) -> #false [0] #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) [0] #eq(#neg(z0), #pos(z1)) -> #false [0] #eq(#pos(z0), #0) -> #false [0] #eq(#pos(z0), #neg(z1)) -> #false [0] #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) [0] #eq(#s(z0), #0) -> #false [0] #eq(#s(z0), #s(z1)) -> #eq(z0, z1) [0] #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) [0] #eq(::(z0, z1), nil) -> #false [0] #eq(nil, ::(z0, z1)) -> #false [0] #eq(nil, nil) -> #true [0] #mult(#0, #0) -> #0 [0] #mult(#0, #neg(z0)) -> #0 [0] #mult(#0, #pos(z0)) -> #0 [0] #mult(#neg(z0), #0) -> #0 [0] #mult(#neg(z0), #neg(z1)) -> #pos(#natmult(z0, z1)) [0] #mult(#neg(z0), #pos(z1)) -> #neg(#natmult(z0, z1)) [0] #mult(#pos(z0), #0) -> #0 [0] #mult(#pos(z0), #neg(z1)) -> #neg(#natmult(z0, z1)) [0] #mult(#pos(z0), #pos(z1)) -> #pos(#natmult(z0, z1)) [0] #natdiv(#0, #0) -> #divByZero [0] #natdiv(#s(z0), #s(#0)) -> #s(#natdiv(z0, #s(#0))) [0] #natdiv(#s(#s(z0761)), #s(#s(z1432))) -> #s(#natdiv(#natsub(z0761, z1432), #s(#s(z1432)))) [0] #natdiv(#s(z0), #s(z1)) -> #s(#natdiv(null_#natsub, #s(z1))) [0] #natmult(#0, z0) -> #0 [0] #natmult(#s(#0), z1) -> #add(#pos(z1), #0) [0] #natmult(#s(#s(z0762)), z1) -> #add(#pos(z1), #add(#pos(z1), #natmult(z0762, z1))) [0] #natmult(#s(z0), z1) -> #add(#pos(z1), null_#natmult) [0] #natsub(z0, #0) -> z0 [0] #natsub(#s(z0), #s(z1)) -> #natsub(z0, z1) [0] #pred(#0) -> #neg(#s(#0)) [0] #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) [0] #pred(#pos(#s(#0))) -> #0 [0] #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) [0] #sub(z0, #0) -> z0 [0] #sub(z0, #neg(z1)) -> #add(z0, #pos(z1)) [0] #sub(z0, #pos(z1)) -> #add(z0, #neg(z1)) [0] #succ(#0) -> #pos(#s(#0)) [0] #succ(#neg(#s(#0))) -> #0 [0] #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) [0] #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) [0] #equal(z0, z1) -> #eq(z0, z1) [0] times(z0, z1) -> #mult(z0, z1) [0] minus(z0, z1) -> #sub(z0, z1) [0] div(z0, z1) -> #div(z0, z1) [0] eratos(z0) -> eratos#1(z0) [0] eratos#1(::(z0, z1)) -> ::(z0, eratos(filter#1(z1, z0))) [0] eratos#1(::(z0, z1)) -> ::(z0, eratos(null_filter)) [0] eratos#1(nil) -> nil [0] filter(z0, z1) -> filter#1(z1, z0) [0] filter#1(::(z0, z1), z2) -> filter#2(filter#1(z1, z2), z2, z0) [0] filter#1(::(z0, z1), z2) -> filter#2(null_filter, z2, z0) [0] filter#1(nil, z0) -> nil [0] filter#2(z0, z1, z2) -> filter#3(#equal(minus(z2, times(z2, div(z2, z1))), #0), z2, z0) [0] filter#2(z0, z1, z2) -> filter#3(#equal(null_mod, #0), z2, z0) [0] filter#3(#false, z0, z1) -> ::(z0, z1) [0] filter#3(#true, z0, z1) -> z1 [0] mod(z0, z1) -> minus(z0, times(z0, #div(z0, z1))) [0] mod(z0, z1) -> minus(z0, times(z0, null_div)) [0] #ADD(v0, v1) -> c [0] #AND(v0, v1) -> null_#AND [0] #DIV(v0, v1) -> null_#DIV [0] #EQ(v0, v1) -> null_#EQ [0] #MULT(v0, v1) -> null_#MULT [0] #NATDIV(v0, v1) -> c44 [0] #NATMULT(v0, v1) -> c46 [0] #NATSUB(v0, v1) -> c48 [0] #PRED(v0) -> null_#PRED [0] #SUB(v0, v1) -> c54 [0] #SUCC(v0) -> null_#SUCC [0] #add(v0, v1) -> null_#add [0] #and(v0, v1) -> null_#and [0] #div(v0, v1) -> null_#div [0] #eq(v0, v1) -> null_#eq [0] #mult(v0, v1) -> null_#mult [0] #natdiv(v0, v1) -> null_#natdiv [0] #natmult(v0, v1) -> null_#natmult [0] #natsub(v0, v1) -> null_#natsub [0] #pred(v0) -> null_#pred [0] #sub(v0, v1) -> null_#sub [0] #succ(v0) -> null_#succ [0] #equal(v0, v1) -> null_#equal [0] times(v0, v1) -> null_times [0] minus(v0, v1) -> null_minus [0] div(v0, v1) -> null_div [0] eratos(v0) -> null_eratos [0] eratos#1(v0) -> null_eratos#1 [0] filter(v0, v1) -> null_filter [0] filter#1(v0, v1) -> null_filter#1 [0] filter#2(v0, v1, v2) -> null_filter#2 [0] filter#3(v0, v1, v2) -> null_filter#3 [0] mod(v0, v1) -> null_mod [0] The TRS has the following type information: #EQUAL :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c61 c61 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c61 #EQ :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ *' :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c62 c62 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT -> c62 #MULT :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT -' :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c63 c63 :: c54:c55:c56 -> c63 #SUB :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c54:c55:c56 DIV :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c64 c64 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV -> c64 #DIV :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV ERATOS :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c65 c65 :: c66:c67 -> c65 ERATOS#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c66:c67 :: :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod c66 :: c65 -> c68 -> c66:c67 filter :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod FILTER :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c68 nil :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod c67 :: c66:c67 c68 :: c69:c70 -> c68 FILTER#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c69:c70 c69 :: c71 -> c68 -> c69:c70 FILTER#2 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c71 c70 :: c69:c70 c71 :: c72:c73 -> c61 -> c74 -> c71 FILTER#3 :: #false:#true:null_#and:null_#eq:null_#equal -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c72:c73 #equal :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> #false:#true:null_#and:null_#eq:null_#equal mod :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #0 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod MOD :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c74 #false :: #false:#true:null_#and:null_#eq:null_#equal c72 :: c72:c73 #true :: #false:#true:null_#and:null_#eq:null_#equal c73 :: c72:c73 c74 :: c63 -> c62 -> c64 -> c74 times :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod div :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #ADD :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c:c1:c2:c3:c4 c :: c:c1:c2:c3:c4 #neg :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #s :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod c1 :: c50:c51:c52:c53:null_#PRED -> c:c1:c2:c3:c4 #PRED :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c50:c51:c52:c53:null_#PRED c2 :: c50:c51:c52:c53:null_#PRED -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 #add :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #pos :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod c3 :: c57:c58:c59:c60:null_#SUCC -> c:c1:c2:c3:c4 #SUCC :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c57:c58:c59:c60:null_#SUCC c4 :: c57:c58:c59:c60:null_#SUCC -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 #AND :: #false:#true:null_#and:null_#eq:null_#equal -> #false:#true:null_#and:null_#eq:null_#equal -> c5:c6:c7:c8:null_#AND c5 :: c5:c6:c7:c8:null_#AND c6 :: c5:c6:c7:c8:null_#AND c7 :: c5:c6:c7:c8:null_#AND c8 :: c5:c6:c7:c8:null_#AND c9 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c10 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c11 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c12 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c13 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV #NATDIV :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c44:c45 c14 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c15 :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c16 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c17 :: c44:c45 -> c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV c18 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c19 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c20 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c21 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c22 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c23 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c24 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c25 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c26 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c27 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c28 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c29 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c30 :: c5:c6:c7:c8:null_#AND -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ #eq :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> #false:#true:null_#and:null_#eq:null_#equal c31 :: c5:c6:c7:c8:null_#AND -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ -> c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c32 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c33 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c34 :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ c35 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c36 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c37 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c38 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c39 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT #NATMULT :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c46:c47 c40 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c41 :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c42 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c43 :: c46:c47 -> c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT c44 :: c44:c45 c45 :: c44:c45 -> c48:c49 -> c44:c45 #natsub :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #NATSUB :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> c48:c49 c46 :: c46:c47 c47 :: c:c1:c2:c3:c4 -> c46:c47 -> c46:c47 #natmult :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod c48 :: c48:c49 c49 :: c48:c49 -> c48:c49 c50 :: c50:c51:c52:c53:null_#PRED c51 :: c50:c51:c52:c53:null_#PRED c52 :: c50:c51:c52:c53:null_#PRED c53 :: c50:c51:c52:c53:null_#PRED c54 :: c54:c55:c56 c55 :: c:c1:c2:c3:c4 -> c54:c55:c56 c56 :: c:c1:c2:c3:c4 -> c54:c55:c56 c57 :: c57:c58:c59:c60:null_#SUCC c58 :: c57:c58:c59:c60:null_#SUCC c59 :: c57:c58:c59:c60:null_#SUCC c60 :: c57:c58:c59:c60:null_#SUCC #pred :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #succ :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #and :: #false:#true:null_#and:null_#eq:null_#equal -> #false:#true:null_#and:null_#eq:null_#equal -> #false:#true:null_#and:null_#eq:null_#equal #div :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #divByZero :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #natdiv :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #mult :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod #sub :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod minus :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod eratos :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod eratos#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod filter#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod filter#2 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod filter#3 :: #false:#true:null_#and:null_#eq:null_#equal -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod -> :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#AND :: c5:c6:c7:c8:null_#AND null_#DIV :: c9:c10:c11:c12:c13:c14:c15:c16:c17:null_#DIV null_#EQ :: c18:c19:c20:c21:c22:c23:c24:c25:c26:c27:c28:c29:c30:c31:c32:c33:c34:null_#EQ null_#MULT :: c35:c36:c37:c38:c39:c40:c41:c42:c43:null_#MULT null_#PRED :: c50:c51:c52:c53:null_#PRED null_#SUCC :: c57:c58:c59:c60:null_#SUCC null_#add :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#and :: #false:#true:null_#and:null_#eq:null_#equal null_#div :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#eq :: #false:#true:null_#and:null_#eq:null_#equal null_#mult :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#natdiv :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#natmult :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#natsub :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#pred :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#sub :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#succ :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_#equal :: #false:#true:null_#and:null_#eq:null_#equal null_times :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_minus :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_div :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_eratos :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_eratos#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_filter :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_filter#1 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_filter#2 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_filter#3 :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod null_mod :: :::nil:#0:#s:#neg:#pos:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_times:null_minus:null_div:null_eratos:null_eratos#1:null_filter:null_filter#1:null_filter#2:null_filter#3:null_mod const :: c61 const1 :: c62 const2 :: c63 const3 :: c64 const4 :: c65 const5 :: c68 const6 :: c71 const7 :: c74 Rewrite Strategy: INNERMOST ---------------------------------------- (13) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: nil => 2 c67 => 0 c70 => 0 #0 => 0 #false => 1 c72 => 0 #true => 2 c73 => 1 c => 0 c5 => 1 c6 => 2 c7 => 3 c8 => 4 c9 => 4 c10 => 0 c11 => 1 c12 => 2 c15 => 3 c18 => 0 c19 => 1 c20 => 2 c21 => 3 c22 => 4 c24 => 5 c25 => 6 c26 => 7 c28 => 8 c32 => 9 c33 => 10 c34 => 11 c35 => 0 c36 => 1 c37 => 2 c38 => 3 c41 => 4 c44 => 0 c46 => 0 c48 => 0 c50 => 1 c51 => 2 c52 => 3 c53 => 4 c54 => 0 c57 => 1 c58 => 2 c59 => 3 c60 => 4 #divByZero => 1 null_#AND => 0 null_#DIV => 0 null_#EQ => 0 null_#MULT => 0 null_#PRED => 0 null_#SUCC => 0 null_#add => 0 null_#and => 0 null_#div => 0 null_#eq => 0 null_#mult => 0 null_#natdiv => 0 null_#natmult => 0 null_#natsub => 0 null_#pred => 0 null_#sub => 0 null_#succ => 0 null_#equal => 0 null_times => 0 null_minus => 0 null_div => 0 null_eratos => 0 null_eratos#1 => 0 null_filter => 0 null_filter#1 => 0 null_filter#2 => 0 null_filter#3 => 0 null_mod => 0 const => 0 const1 => 0 const2 => 0 const3 => 0 const4 => 0 const5 => 0 const6 => 0 const7 => 0 ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z0 >= 0, z = 0, z' = z0 #ADD(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #ADD(z, z') -{ 0 }-> 1 + #SUCC(z0) :|: z = 1 + (1 + 0), z0 >= 0, z' = z0 #ADD(z, z') -{ 0 }-> 1 + #PRED(z0) :|: z = 1 + (1 + 0), z0 >= 0, z' = z0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + z0), z1) :|: z1 >= 0, z' = z1, z0 >= 0, z = 1 + (1 + (1 + z0)) #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(z1)) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + z0''), z1))) + #ADD(1 + (1 + (1 + z0'')), z1) :|: z1 >= 0, z' = z1, z0'' >= 0, z = 1 + (1 + (1 + (1 + z0''))) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + z0), z1) :|: z1 >= 0, z' = z1, z0 >= 0, z = 1 + (1 + (1 + z0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(z1)) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + z0'), z1))) + #ADD(1 + (1 + (1 + z0')), z1) :|: z1 >= 0, z0' >= 0, z' = z1, z = 1 + (1 + (1 + (1 + z0'))) #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z = 1 + z0, z0 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z = 1 + z0, z0 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z0 >= 0, z' = 1 + z0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z = 1 + z0, z0 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ(z, z') -{ 0 }-> 6 :|: z = 1 + z0, z0 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ(z, z') -{ 0 }-> 4 :|: z = 1 + z0, z0 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z0 >= 0, z' = 1 + z0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z0 >= 0, z' = 1 + z0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #EQ(z, z') -{ 0 }-> 1 + #EQ(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z = 1 + z0, z0 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z = 1 + z0, z0 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z0 >= 0, z' = 1 + z0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z0, 1 + 0) + #NATSUB(z0, 0) :|: z = 1 + z0, z' = 1 + 0, z0 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + z1) + #NATSUB(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z0505, z1287), 1 + (1 + z1287)) + #NATSUB(1 + z0505, 1 + z1287) :|: z = 1 + (1 + z0505), z0505 >= 0, z' = 1 + (1 + z1287), z1287 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z0 >= 0, z = 0, z' = z0 #NATMULT(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z1, 0) + #NATMULT(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z1, 0) + #NATMULT(0, z1) :|: z1 >= 0, z = 1 + 0, z' = z1 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z1, #add(1 + z1, #natmult(z0506, z1))) + #NATMULT(1 + z0506, z1) :|: z1 >= 0, z0506 >= 0, z' = z1, z = 1 + (1 + z0506) #NATSUB(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #PRED(z) -{ 0 }-> 4 :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z0 >= 0, z = 1 + (1 + z0) #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #SUB(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #SUB(z, z') -{ 0 }-> 1 + #ADD(z0, 1 + z1) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + z1 #SUCC(z) -{ 0 }-> 4 :|: z0 >= 0, z = 1 + (1 + z0) #SUCC(z) -{ 0 }-> 3 :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #add(z, z') -{ 0 }-> z0 :|: z0 >= 0, z = 0, z' = z0 #add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #add(z, z') -{ 0 }-> #succ(z0) :|: z = 1 + (1 + 0), z0 >= 0, z' = z0 #add(z, z') -{ 0 }-> #succ(0) :|: z1 >= 0, z' = z1, z0 >= 0, z = 1 + (1 + (1 + z0)) #add(z, z') -{ 0 }-> #succ(#succ(z1)) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + z0508), z1))) :|: z = 1 + (1 + (1 + (1 + z0508))), z0508 >= 0, z1 >= 0, z' = z1 #add(z, z') -{ 0 }-> #pred(z0) :|: z = 1 + (1 + 0), z0 >= 0, z' = z0 #add(z, z') -{ 0 }-> #pred(0) :|: z1 >= 0, z' = z1, z0 >= 0, z = 1 + (1 + (1 + z0)) #add(z, z') -{ 0 }-> #pred(#succ(z1)) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + z0507), z1))) :|: z1 >= 0, z = 1 + (1 + (1 + (1 + z0507))), z' = z1, z0507 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z0 >= 0, z' = 1 + z0, z = 0 #div(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #div(z, z') -{ 0 }-> 1 + #natdiv(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #eq(z, z') -{ 0 }-> #eq(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #equal(z, z') -{ 0 }-> #eq(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z0 >= 0, z' = 1 + z0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z = 1 + z0, z0 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #mult(z, z') -{ 0 }-> 1 + #natmult(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z0, 1 + 0) :|: z = 1 + z0, z' = 1 + 0, z0 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z0761, z1432), 1 + (1 + z1432)) :|: z0761 >= 0, z' = 1 + (1 + z1432), z1432 >= 0, z = 1 + (1 + z0761) #natmult(z, z') -{ 0 }-> 0 :|: z0 >= 0, z = 0, z' = z0 #natmult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #natmult(z, z') -{ 0 }-> #add(1 + z1, 0) :|: z1 >= 0, z = 1 + 0, z' = z1 #natmult(z, z') -{ 0 }-> #add(1 + z1, 0) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z1, #add(1 + z1, #natmult(z0762, z1))) :|: z1 >= 0, z0762 >= 0, z' = z1, z = 1 + (1 + z0762) #natsub(z, z') -{ 0 }-> z0 :|: z = z0, z0 >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #natsub(z, z') -{ 0 }-> #natsub(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #pred(z) -{ 0 }-> 1 + (1 + z0) :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + z0)) :|: z0 >= 0, z = 1 + (1 + z0) #sub(z, z') -{ 0 }-> z0 :|: z = z0, z0 >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #sub(z, z') -{ 0 }-> #add(z0, 1 + z1) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + z1 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #succ(z) -{ 0 }-> 1 + (1 + z0) :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + z0)) :|: z0 >= 0, z = 1 + (1 + z0) *'(z, z') -{ 1 }-> 1 + #MULT(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z0) :|: z = z0, z0 >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z1, z0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z0 >= 0, z' = z0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z2), z2, z0) + FILTER(z2, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z2, z0) + FILTER(z2, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z2, times(z2, div(z2, z1))), 0), z2, z0) + #EQUAL(minus(z2, times(z2, div(z2, z1))), 0) + MOD(z2, z1) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z2, times(z2, div(z2, z1))), 0), z2, z0) + #EQUAL(0, 0) + MOD(z2, z1) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z2, z0) + #EQUAL(minus(z2, times(z2, div(z2, z1))), 0) + MOD(z2, z1) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z2, z0) + #EQUAL(0, 0) + MOD(z2, z1) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 MOD(z, z') -{ 1 }-> 1 + -'(z0, times(z0, 0)) + *'(z0, 0) + DIV(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z0, times(z0, 0)) + *'(z0, #div(z0, z1)) + DIV(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z0, times(z0, #div(z0, z1))) + *'(z0, 0) + DIV(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z0, times(z0, #div(z0, z1))) + *'(z0, #div(z0, z1)) + DIV(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 div(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 div(z, z') -{ 0 }-> #div(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 eratos(z) -{ 0 }-> eratos#1(z0) :|: z = z0, z0 >= 0 eratos(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z1, z0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 filter(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z2), z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z0 >= 0, z' = z0 filter#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z2, times(z2, div(z2, z1))), 0), z2, z0) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z2, z0) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 filter#3(z, z', z'') -{ 0 }-> z1 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 filter#3(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z0 + z1 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 minus(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 minus(z, z') -{ 0 }-> #sub(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 mod(z, z') -{ 0 }-> minus(z0, times(z0, 0)) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 mod(z, z') -{ 0 }-> minus(z0, times(z0, #div(z0, z1))) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 mod(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 times(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 times(z, z') -{ 0 }-> #mult(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 ---------------------------------------- (15) InliningProof (UPPER BOUND(ID)) Inlined the following terminating rules on right-hand sides where appropriate: FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #PRED(z) -{ 0 }-> 2 :|: z0 >= 0, z = 1 + (1 + z0) #PRED(z) -{ 0 }-> 4 :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #PRED(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 4 :|: z0 >= 0, z = 1 + (1 + z0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 3 :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + z0) :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #pred(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #pred(z) -{ 0 }-> 1 + (1 + (1 + z0)) :|: z0 >= 0, z = 1 + (1 + z0) #succ(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #succ(z) -{ 0 }-> 1 + (1 + (1 + z0)) :|: z0 >= 0, z = 1 + (1 + z0) #succ(z) -{ 0 }-> 1 + (1 + z0) :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z0 + z1 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 filter#3(z, z', z'') -{ 0 }-> z1 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z0 >= 0, z = 0, z' = z0 #ADD(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, z0' >= 0, z0 = 1 + (1 + (1 + z0')) #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, z0' >= 0, z0 = 1 + (1 + z0') #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, z0 = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, z0' >= 0, z0 = 1 + (1 + (1 + z0')) #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, z0' >= 0, z0 = 1 + (1 + z0') #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, z0 = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, z0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, v0 >= 0, z0 = v0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + z0), z1) :|: z1 >= 0, z' = z1, z0 >= 0, z = 1 + (1 + (1 + z0)), 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + z0), z1) :|: z1 >= 0, z' = z1, z0 >= 0, z = 1 + (1 + (1 + z0)), v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), v0 >= 0, z1 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z1 = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + z0)) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + (1 + z0)) #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + 0)) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z1 = 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + (1 + z0))) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + z0) #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + z0''), z1))) + #ADD(1 + (1 + (1 + z0'')), z1) :|: z1 >= 0, z' = z1, z0'' >= 0, z = 1 + (1 + (1 + (1 + z0''))) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), v0 >= 0, z1 = v0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z1 = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + z0)) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + (1 + z0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z1 = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + z0))) + #ADD(1 + (1 + 0), z1) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + z0) #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + z0'), z1))) + #ADD(1 + (1 + (1 + z0')), z1) :|: z1 >= 0, z0' >= 0, z' = z1, z = 1 + (1 + (1 + (1 + z0'))) #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z = 1 + z0, z0 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z = 1 + z0, z0 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z0 >= 0, z' = 1 + z0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z = 1 + z0, z0 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ(z, z') -{ 0 }-> 6 :|: z = 1 + z0, z0 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ(z, z') -{ 0 }-> 4 :|: z = 1 + z0, z0 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z0 >= 0, z' = 1 + z0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z0 >= 0, z' = 1 + z0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #EQ(z, z') -{ 0 }-> 1 + #EQ(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z = 1 + z0, z0 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z = 1 + z0, z0 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z0 >= 0, z' = 1 + z0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z0, 1 + 0) + #NATSUB(z0, 0) :|: z = 1 + z0, z' = 1 + 0, z0 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + z1) + #NATSUB(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z0505, z1287), 1 + (1 + z1287)) + #NATSUB(1 + z0505, 1 + z1287) :|: z = 1 + (1 + z0505), z0505 >= 0, z' = 1 + (1 + z1287), z1287 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z0 >= 0, z = 0, z' = z0 #NATMULT(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z1, 0) + #NATMULT(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z1, 0) + #NATMULT(0, z1) :|: z1 >= 0, z = 1 + 0, z' = z1 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z1, #add(1 + z1, #natmult(z0506, z1))) + #NATMULT(1 + z0506, z1) :|: z1 >= 0, z0506 >= 0, z' = z1, z = 1 + (1 + z0506) #NATSUB(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #PRED(z) -{ 0 }-> 4 :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z0 >= 0, z = 1 + (1 + z0) #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #SUB(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #SUB(z, z') -{ 0 }-> 1 + #ADD(z0, 1 + z1) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + z1 #SUCC(z) -{ 0 }-> 4 :|: z0 >= 0, z = 1 + (1 + z0) #SUCC(z) -{ 0 }-> 3 :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #add(z, z') -{ 0 }-> z0 :|: z0 >= 0, z = 0, z' = z0 #add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, z0 = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, v0 >= 0, z0 = v0 #add(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = z1, z0 >= 0, z = 1 + (1 + (1 + z0)), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), v0 >= 0, z1 = v0, v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + z0), v0 >= 0, 1 + (1 + (1 + z0)) = v0 #add(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + (1 + z0)), v0 >= 0, 1 + (1 + z0) = v0 #add(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + (1 + z0)), 1 + (1 + z0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z1 = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z1 = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z1 = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, z0' >= 0, z0 = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + z0), z0' >= 0, 1 + (1 + (1 + z0)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + (1 + z0)), z0' >= 0, 1 + (1 + z0) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, z0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z1 >= 0, z' = z1, z0 >= 0, z = 1 + (1 + (1 + z0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), v0 >= 0, z1 = v0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z1 = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z1 = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z = 1 + (1 + 0), z0 >= 0, z' = z0, z0' >= 0, z0 = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + z0), z0' >= 0, 1 + (1 + (1 + z0)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + (1 + z0)), z0' >= 0, 1 + (1 + z0) = 1 + (1 + z0') #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + z0508), z1))) :|: z = 1 + (1 + (1 + (1 + z0508))), z0508 >= 0, z1 >= 0, z' = z1 #add(z, z') -{ 0 }-> #pred(0) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), v0 >= 0, z1 = v0 #add(z, z') -{ 0 }-> #pred(0) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z1 = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + z0)) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + (1 + z0)) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z1 = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + z0))) :|: z1 >= 0, z' = z1, z = 1 + (1 + (1 + 0)), z0 >= 0, z1 = 1 + (1 + z0) #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + z0507), z1))) :|: z1 >= 0, z = 1 + (1 + (1 + (1 + z0507))), z' = z1, z0507 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z0 >= 0, z' = 1 + z0, z = 0 #div(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #div(z, z') -{ 0 }-> 1 + #natdiv(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #eq(z, z') -{ 0 }-> #eq(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #equal(z, z') -{ 0 }-> #eq(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z0 >= 0, z' = 1 + z0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z = 1 + z0, z0 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #mult(z, z') -{ 0 }-> 1 + #natmult(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z0, 1 + 0) :|: z = 1 + z0, z' = 1 + 0, z0 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z0761, z1432), 1 + (1 + z1432)) :|: z0761 >= 0, z' = 1 + (1 + z1432), z1432 >= 0, z = 1 + (1 + z0761) #natmult(z, z') -{ 0 }-> 0 :|: z0 >= 0, z = 0, z' = z0 #natmult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #natmult(z, z') -{ 0 }-> #add(1 + z1, 0) :|: z1 >= 0, z = 1 + 0, z' = z1 #natmult(z, z') -{ 0 }-> #add(1 + z1, 0) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z1, #add(1 + z1, #natmult(z0762, z1))) :|: z1 >= 0, z0762 >= 0, z' = z1, z = 1 + (1 + z0762) #natsub(z, z') -{ 0 }-> z0 :|: z = z0, z0 >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #natsub(z, z') -{ 0 }-> #natsub(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #pred(z) -{ 0 }-> 1 + (1 + z0) :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + z0)) :|: z0 >= 0, z = 1 + (1 + z0) #sub(z, z') -{ 0 }-> z0 :|: z = z0, z0 >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 #sub(z, z') -{ 0 }-> #add(z0, 1 + z1) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + z1 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 #succ(z) -{ 0 }-> 1 + (1 + z0) :|: z0 >= 0, z = 1 + (1 + (1 + z0)) #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + z0)) :|: z0 >= 0, z = 1 + (1 + z0) *'(z, z') -{ 1 }-> 1 + #MULT(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z0) :|: z = z0, z0 >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z1, z0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z0 >= 0, z' = z0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z2), z2, z0) + FILTER(z2, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z2, z0) + FILTER(z2, z1) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z2, times(z2, div(z2, z1))), 0), z2, z0) + #EQUAL(minus(z2, times(z2, div(z2, z1))), 0) + MOD(z2, z1) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z2, times(z2, div(z2, z1))), 0), z2, z0) + #EQUAL(0, 0) + MOD(z2, z1) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z2, z0) + #EQUAL(minus(z2, times(z2, div(z2, z1))), 0) + MOD(z2, z1) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z2, z0) + #EQUAL(0, 0) + MOD(z2, z1) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 MOD(z, z') -{ 1 }-> 1 + -'(z0, times(z0, 0)) + *'(z0, 0) + DIV(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z0, times(z0, 0)) + *'(z0, #div(z0, z1)) + DIV(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z0, times(z0, #div(z0, z1))) + *'(z0, 0) + DIV(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z0, times(z0, #div(z0, z1))) + *'(z0, #div(z0, z1)) + DIV(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 div(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 div(z, z') -{ 0 }-> #div(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 eratos(z) -{ 0 }-> eratos#1(z0) :|: z = z0, z0 >= 0 eratos(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z1, z0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 filter(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z2), z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z2, z0) :|: z1 >= 0, z' = z2, z0 >= 0, z = 1 + z0 + z1, z2 >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z0 >= 0, z' = z0 filter#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z2, times(z2, div(z2, z1))), 0), z2, z0) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z2, z0) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 filter#3(z, z', z'') -{ 0 }-> z1 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 filter#3(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z0 + z1 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 minus(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 minus(z, z') -{ 0 }-> #sub(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 mod(z, z') -{ 0 }-> minus(z0, times(z0, 0)) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 mod(z, z') -{ 0 }-> minus(z0, times(z0, #div(z0, z1))) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 mod(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 times(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 times(z, z') -{ 0 }-> #mult(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 ---------------------------------------- (17) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 ---------------------------------------- (19) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { #SUCC } { filter#3 } { #pred } { #natsub } { FILTER#3 } { #and } { #PRED } { #NATSUB } { #AND } { #succ } { #add } { #natdiv } { #NATDIV } { #eq } { #ADD } { #sub } { #natmult } { #div } { #DIV } { #EQ } { #equal } { #SUB } { #NATMULT } { minus } { #mult } { div } { DIV } { #EQUAL } { -' } { #MULT } { times } { *' } { mod } { filter#2 } { MOD } { filter#1 } { FILTER#2 } { filter } { eratos, eratos#1 } { FILTER#1, FILTER } { ERATOS, ERATOS#1 } ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#SUCC}, {filter#3}, {#pred}, {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} ---------------------------------------- (21) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#SUCC}, {filter#3}, {#pred}, {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} ---------------------------------------- (23) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #SUCC after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 4 ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#SUCC}, {filter#3}, {#pred}, {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: ?, size: O(1) [4] ---------------------------------------- (25) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #SUCC after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #SUCC(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {filter#3}, {#pred}, {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] ---------------------------------------- (27) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {filter#3}, {#pred}, {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: filter#3 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' + z'' ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {filter#3}, {#pred}, {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: ?, size: O(n^1) [1 + z' + z''] ---------------------------------------- (31) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: filter#3 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#pred}, {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] ---------------------------------------- (33) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#pred}, {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #pred after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#pred}, {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: ?, size: O(n^1) [2 + z] ---------------------------------------- (37) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #pred after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> #pred(0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] ---------------------------------------- (39) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: #natsub after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#natsub}, {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: ?, size: O(n^1) [z] ---------------------------------------- (43) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #natsub after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: z - 2 >= 0, z' - 2 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (45) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (47) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: FILTER#3 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {FILTER#3}, {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: ?, size: O(1) [1] ---------------------------------------- (49) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: FILTER#3 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (51) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (53) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #and after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (54) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#and}, {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: ?, size: O(1) [2] ---------------------------------------- (55) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #and after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (56) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (57) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (58) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (59) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #PRED after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 4 ---------------------------------------- (60) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#PRED}, {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: ?, size: O(1) [4] ---------------------------------------- (61) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #PRED after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (62) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + #PRED(0) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + 0)) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (z' - 3))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(1 + (1 + (1 + (z' - 2)))) + #ADD(1 + (1 + 0), z') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] ---------------------------------------- (63) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (64) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] ---------------------------------------- (65) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #NATSUB after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (66) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#NATSUB}, {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: ?, size: O(n^1) [z'] ---------------------------------------- (67) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #NATSUB after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (68) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + #NATSUB(1 + (z - 2), 1 + (z' - 2)) :|: s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + #NATSUB(z - 1, 0) :|: z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + #NATSUB(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] ---------------------------------------- (69) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (70) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] ---------------------------------------- (71) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #AND after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 4 ---------------------------------------- (72) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#AND}, {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: ?, size: O(1) [4] ---------------------------------------- (73) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #AND after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (74) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] ---------------------------------------- (75) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (76) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] ---------------------------------------- (77) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #succ after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z ---------------------------------------- (78) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#succ}, {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: ?, size: O(n^1) [2 + z] ---------------------------------------- (79) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #succ after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (80) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] ---------------------------------------- (81) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (82) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] ---------------------------------------- (83) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: #add after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2*z + z' ---------------------------------------- (84) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#add}, {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: ?, size: O(n^1) [2*z + z'] ---------------------------------------- (85) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #add after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (86) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #ADD(z, z') -{ 0 }-> 1 + #SUCC(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + #PRED(#succ(#add(1 + (1 + (z - 4)), z'))) + #ADD(1 + (1 + (1 + (z - 4))), z') :|: z' >= 0, z - 4 >= 0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z' >= 0, z - 4 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] ---------------------------------------- (87) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (88) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] ---------------------------------------- (89) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #natdiv after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z ---------------------------------------- (90) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#natdiv}, {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: ?, size: O(n^1) [1 + z] ---------------------------------------- (91) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #natdiv after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (92) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s9, 1 + (1 + (z' - 2))) :|: s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z' = 1 + 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] ---------------------------------------- (93) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (94) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] ---------------------------------------- (95) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: #NATDIV after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 1 + z + z*z' + 2*z' ---------------------------------------- (96) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#NATDIV}, {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: ?, size: O(n^2) [1 + z + z*z' + 2*z'] ---------------------------------------- (97) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #NATDIV after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (98) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(s8, 1 + (1 + (z' - 2))) + s17 :|: s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(0, 1 + (z' - 1)) + s18 :|: s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + #NATDIV(z - 1, 1 + 0) + s16 :|: s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] ---------------------------------------- (99) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (100) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] ---------------------------------------- (101) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #eq after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (102) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#eq}, {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: ?, size: O(1) [2] ---------------------------------------- (103) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #eq after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (104) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z0, z2) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + #AND(#eq(z0, z2), #eq(z1, z3)) + #EQ(z1, z3) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> #and(#eq(z0, z2), #eq(z1, z3)) :|: z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> #eq(z, z') :|: z' >= 0, z >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (105) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (106) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (107) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: #ADD after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 5*z ---------------------------------------- (108) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#ADD}, {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: ?, size: O(n^1) [5*z] ---------------------------------------- (109) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #ADD after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (110) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + #ADD(1 + (1 + 0), z') :|: s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + #ADD(1 + (1 + 0), z') :|: s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + #ADD(1 + (1 + 0), z') :|: s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + #ADD(1 + (1 + 0), z') :|: s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + #ADD(1 + (1 + 0), z') :|: s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + #ADD(1 + (1 + 0), z') :|: s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + #ADD(1 + (1 + 0), z') :|: s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + #ADD(1 + (1 + 0), z') :|: s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + #ADD(1 + (1 + 0), z') :|: s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + #ADD(1 + (1 + 0), z') :|: s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + #ADD(1 + (1 + (1 + (z - 4))), z') :|: s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + #ADD(1 + (1 + (z - 3)), z') :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(0, z') :|: z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', 0) + #NATMULT(z - 1, z') :|: z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + #ADD(z, 1 + (z' - 1)) :|: z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] ---------------------------------------- (111) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (112) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] ---------------------------------------- (113) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #sub after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2*z + z' ---------------------------------------- (114) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#sub}, {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: ?, size: O(n^1) [2*z + z'] ---------------------------------------- (115) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #sub after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (116) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> #sub(z, z') :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] ---------------------------------------- (117) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (118) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] ---------------------------------------- (119) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: #natmult after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 4 + 4*z + 4*z*z' + 4*z' ---------------------------------------- (120) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#natmult}, {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: ?, size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] ---------------------------------------- (121) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #natmult after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (122) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + #ADD(1 + z', #add(1 + z', #natmult(z - 2, z'))) + #NATMULT(1 + (z - 2), z') :|: z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z' >= 0, z - 2 >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] ---------------------------------------- (123) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (124) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] ---------------------------------------- (125) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #div after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z ---------------------------------------- (126) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#div}, {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: ?, size: O(n^1) [1 + z] ---------------------------------------- (127) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #div after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (128) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, #div(z, z'))) + *'(z, #div(z, z')) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 div(z, z') -{ 0 }-> #div(z, z') :|: z' >= 0, z >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, #div(z, z'))) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] ---------------------------------------- (129) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (130) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] ---------------------------------------- (131) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: #DIV after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 12 + z*z' + z' ---------------------------------------- (132) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#DIV}, {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: ?, size: O(n^2) [12 + z*z' + z'] ---------------------------------------- (133) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #DIV after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (134) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + #DIV(z, z') :|: z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] ---------------------------------------- (135) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (136) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] ---------------------------------------- (137) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #EQ after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 11 + 5*z' ---------------------------------------- (138) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#EQ}, {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: ?, size: O(n^1) [11 + 5*z'] ---------------------------------------- (139) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #EQ after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (140) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + #EQ(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + #EQ(z0, z2) :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + #EQ(z1, z3) :|: s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + #EQ(z, z') :|: z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] ---------------------------------------- (141) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (142) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] ---------------------------------------- (143) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #equal after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (144) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#equal}, {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: ?, size: O(1) [2] ---------------------------------------- (145) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #equal after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (146) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(0, 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(0, 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (147) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (148) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (149) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #SUB after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + 5*z ---------------------------------------- (150) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#SUB}, {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: ?, size: O(n^1) [1 + 5*z] ---------------------------------------- (151) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #SUB after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (152) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + #SUB(z, z') :|: z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] ---------------------------------------- (153) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (154) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] ---------------------------------------- (155) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #NATMULT after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 6*z + 5*z*z' ---------------------------------------- (156) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#NATMULT}, {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: ?, size: O(n^2) [6*z + 5*z*z'] ---------------------------------------- (157) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #NATMULT after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (158) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + #NATMULT(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + #NATMULT(0, z') :|: s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + #NATMULT(z - 1, z') :|: s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + #NATMULT(1 + (z - 2), z') :|: s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] ---------------------------------------- (159) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (160) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] ---------------------------------------- (161) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: minus after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2*z + z' ---------------------------------------- (162) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {minus}, {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: ?, size: O(n^1) [2*z + z'] ---------------------------------------- (163) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: minus after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (164) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] ---------------------------------------- (165) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (166) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] ---------------------------------------- (167) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: #mult after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 1 + 4*z*z' ---------------------------------------- (168) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {#mult}, {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: ?, size: O(n^2) [1 + 4*z*z'] ---------------------------------------- (169) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #mult after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (170) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> #mult(z, z') :|: z' >= 0, z >= 0 Function symbols to be analyzed: {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] ---------------------------------------- (171) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (172) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] ---------------------------------------- (173) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: div after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z ---------------------------------------- (174) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {div}, {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: ?, size: O(n^1) [1 + z] ---------------------------------------- (175) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: div after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (176) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(minus(z'', times(z'', div(z'', z'))), 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', div(z'', z'))), 0), z'', z) :|: z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] ---------------------------------------- (177) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (178) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] ---------------------------------------- (179) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: DIV after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 13 + z*z' + z' ---------------------------------------- (180) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {DIV}, {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: ?, size: O(n^2) [13 + z*z' + z'] ---------------------------------------- (181) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: DIV after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (182) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + DIV(z, z') :|: s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + DIV(z, z') :|: s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + DIV(z, z') :|: s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 1 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + DIV(z, z') :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] ---------------------------------------- (183) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (184) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] ---------------------------------------- (185) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: #EQUAL after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 12 + 5*z' ---------------------------------------- (186) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#EQUAL}, {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: ?, size: O(n^1) [12 + 5*z'] ---------------------------------------- (187) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #EQUAL after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (188) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s93 + #EQUAL(0, 0) + MOD(z'', z') :|: s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + #EQUAL(0, 0) + MOD(z'', z') :|: s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] ---------------------------------------- (189) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (190) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + s111 + MOD(z'', z') :|: s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] ---------------------------------------- (191) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: -' after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + 5*z ---------------------------------------- (192) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + s111 + MOD(z'', z') :|: s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {-'}, {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: ?, size: O(n^1) [2 + 5*z] ---------------------------------------- (193) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: -' after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (194) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + s111 + MOD(z'', z') :|: s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] ---------------------------------------- (195) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (196) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + s111 + MOD(z'', z') :|: s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] ---------------------------------------- (197) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: #MULT after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 12 + z + 5*z*z' + 5*z' ---------------------------------------- (198) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + s111 + MOD(z'', z') :|: s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {#MULT}, {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: ?, size: O(n^2) [12 + z + 5*z*z' + 5*z'] ---------------------------------------- (199) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: #MULT after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (200) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + #MULT(z, z') :|: z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + s111 + MOD(z'', z') :|: s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] ---------------------------------------- (201) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (202) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + s111 + MOD(z'', z') :|: s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] ---------------------------------------- (203) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: times after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 1 + 4*z*z' ---------------------------------------- (204) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + s111 + MOD(z'', z') :|: s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {times}, {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: ?, size: O(n^2) [1 + 4*z*z'] ---------------------------------------- (205) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: times after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (206) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + s91 + #EQUAL(minus(z'', times(z'', s105)), 0) + MOD(z'', z') :|: s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 1 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s102)), 0), z'', z) + #EQUAL(minus(z'', times(z'', s103)), 0) + MOD(z'', z') :|: s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 2 }-> 1 + FILTER#3(#equal(minus(z'', times(z'', s104)), 0), z'', z) + s111 + MOD(z'', z') :|: s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s79)) + *'(z, s80) + s107 :|: s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, s81)) + *'(z, 0) + s108 :|: s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, s82) + s109 :|: s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 2 }-> 1 + -'(z, times(z, 0)) + *'(z, 0) + s110 :|: s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> filter#3(#equal(minus(z'', times(z'', s106)), 0), z'', z) :|: s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, s84)) :|: s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> minus(z, times(z, 0)) :|: z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] ---------------------------------------- (207) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (208) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 3 }-> 1 + s115 + *'(z, s80) + s107 :|: s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 3 }-> 1 + s117 + *'(z, 0) + s108 :|: s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 3 }-> 1 + s119 + *'(z, s82) + s109 :|: s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 3 }-> 1 + s121 + *'(z, 0) + s110 :|: s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] ---------------------------------------- (209) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: *' after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 13 + z + 5*z*z' + 5*z' ---------------------------------------- (210) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 3 }-> 1 + s115 + *'(z, s80) + s107 :|: s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 3 }-> 1 + s117 + *'(z, 0) + s108 :|: s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 3 }-> 1 + s119 + *'(z, s82) + s109 :|: s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 3 }-> 1 + s121 + *'(z, 0) + s110 :|: s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {*'}, {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: ?, size: O(n^2) [13 + z + 5*z*z' + 5*z'] ---------------------------------------- (211) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: *' after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (212) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 3 }-> 1 + s115 + *'(z, s80) + s107 :|: s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 3 }-> 1 + s117 + *'(z, 0) + s108 :|: s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 3 }-> 1 + s119 + *'(z, s82) + s109 :|: s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 3 }-> 1 + s121 + *'(z, 0) + s110 :|: s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] ---------------------------------------- (213) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (214) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] ---------------------------------------- (215) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: mod after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (216) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {mod}, {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: ?, size: INF ---------------------------------------- (217) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: mod after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (218) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF ---------------------------------------- (219) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (220) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF ---------------------------------------- (221) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: filter#2 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z + z'' ---------------------------------------- (222) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {filter#2}, {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: ?, size: O(n^1) [1 + z + z''] ---------------------------------------- (223) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: filter#2 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (224) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(0, z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] ---------------------------------------- (225) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (226) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] ---------------------------------------- (227) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: MOD after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (228) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {MOD}, {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: ?, size: INF ---------------------------------------- (229) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: MOD after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 4 ---------------------------------------- (230) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s129 + s132 + MOD(z'', z') :|: s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s136 + s111 + MOD(z'', z') :|: s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s91 + s139 + MOD(z'', z') :|: s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 3 }-> 1 + s93 + s112 + MOD(z'', z') :|: s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF ---------------------------------------- (231) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (232) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF ---------------------------------------- (233) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: filter#1 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (234) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {filter#1}, {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: ?, size: O(n^1) [z] ---------------------------------------- (235) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: filter#1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (236) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(filter#1(z1, z0)) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(filter#1(z1, z'), z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(filter#1(z1, z0)) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> filter#1(z', z) :|: z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> filter#2(filter#1(z1, z'), z', z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (237) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (238) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(s154, z', z0) + FILTER(z', z1) :|: s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(s155) :|: s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (239) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: FILTER#2 after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (240) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(s154, z', z0) + FILTER(z', z1) :|: s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(s155) :|: s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {FILTER#2}, {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: ?, size: INF ---------------------------------------- (241) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: FILTER#2 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 7 ---------------------------------------- (242) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(s154, z', z0) + FILTER(z', z1) :|: s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 1 }-> 1 + FILTER#2(0, z', z0) + FILTER(z', z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(s155) :|: s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF ---------------------------------------- (243) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (244) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s159 + FILTER(z', z1) :|: s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s160 + FILTER(z', z1) :|: s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(s155) :|: s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF ---------------------------------------- (245) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: filter after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (246) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s159 + FILTER(z', z1) :|: s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s160 + FILTER(z', z1) :|: s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(s155) :|: s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {filter}, {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF filter: runtime: ?, size: O(n^1) [z'] ---------------------------------------- (247) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: filter after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (248) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s159 + FILTER(z', z1) :|: s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s160 + FILTER(z', z1) :|: s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(s155) :|: s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF filter: runtime: O(1) [0], size: O(n^1) [z'] ---------------------------------------- (249) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (250) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s159 + FILTER(z', z1) :|: s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s160 + FILTER(z', z1) :|: s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(s155) :|: s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF filter: runtime: O(1) [0], size: O(n^1) [z'] ---------------------------------------- (251) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: eratos after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z Computed SIZE bound using CoFloCo for: eratos#1 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (252) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s159 + FILTER(z', z1) :|: s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s160 + FILTER(z', z1) :|: s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(s155) :|: s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {eratos,eratos#1}, {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF filter: runtime: O(1) [0], size: O(n^1) [z'] eratos: runtime: ?, size: O(n^1) [z] eratos#1: runtime: ?, size: O(n^1) [z] ---------------------------------------- (253) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: eratos after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed RUNTIME bound using CoFloCo for: eratos#1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (254) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s159 + FILTER(z', z1) :|: s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s160 + FILTER(z', z1) :|: s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> eratos#1(z) :|: z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(s155) :|: s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + eratos(0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF filter: runtime: O(1) [0], size: O(n^1) [z'] eratos: runtime: O(1) [0], size: O(n^1) [z] eratos#1: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (255) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (256) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s159 + FILTER(z', z1) :|: s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s160 + FILTER(z', z1) :|: s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> s161 :|: s161 >= 0, s161 <= z, z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + s162 :|: s162 >= 0, s162 <= s155, s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + s163 :|: s163 >= 0, s163 <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF filter: runtime: O(1) [0], size: O(n^1) [z'] eratos: runtime: O(1) [0], size: O(n^1) [z] eratos#1: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (257) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: FILTER#1 after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? Computed SIZE bound using CoFloCo for: FILTER after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (258) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s159 + FILTER(z', z1) :|: s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s160 + FILTER(z', z1) :|: s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> s161 :|: s161 >= 0, s161 <= z, z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + s162 :|: s162 >= 0, s162 <= s155, s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + s163 :|: s163 >= 0, s163 <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {FILTER#1,FILTER}, {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF filter: runtime: O(1) [0], size: O(n^1) [z'] eratos: runtime: O(1) [0], size: O(n^1) [z] eratos#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#1: runtime: ?, size: INF FILTER: runtime: ?, size: INF ---------------------------------------- (259) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: FILTER#1 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 19 + 9*z Computed RUNTIME bound using CoFloCo for: FILTER after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 20 + 9*z' ---------------------------------------- (260) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(s153) + FILTER(z0, z1) :|: s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 1 }-> 1 + ERATOS(0) + FILTER(z0, z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 1 }-> 1 + FILTER#1(z', z) :|: z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s159 + FILTER(z', z1) :|: s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 8 }-> 1 + s160 + FILTER(z', z1) :|: s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> s161 :|: s161 >= 0, s161 <= z, z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + s162 :|: s162 >= 0, s162 <= s155, s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + s163 :|: s163 >= 0, s163 <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF filter: runtime: O(1) [0], size: O(n^1) [z'] eratos: runtime: O(1) [0], size: O(n^1) [z] eratos#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#1: runtime: O(n^1) [19 + 9*z], size: INF FILTER: runtime: O(n^1) [20 + 9*z'], size: INF ---------------------------------------- (261) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (262) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 21 + 9*z1 }-> 1 + ERATOS(s153) + s164 :|: s164 >= 0, s164 <= inf4, s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 21 + 9*z1 }-> 1 + ERATOS(0) + s165 :|: s165 >= 0, s165 <= inf5, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 20 + 9*z' }-> 1 + s166 :|: s166 >= 0, s166 <= inf6, z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 28 + 9*z1 }-> 1 + s159 + s167 :|: s167 >= 0, s167 <= inf7, s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 28 + 9*z1 }-> 1 + s160 + s168 :|: s168 >= 0, s168 <= inf8, s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> s161 :|: s161 >= 0, s161 <= z, z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + s162 :|: s162 >= 0, s162 <= s155, s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + s163 :|: s163 >= 0, s163 <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF filter: runtime: O(1) [0], size: O(n^1) [z'] eratos: runtime: O(1) [0], size: O(n^1) [z] eratos#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#1: runtime: O(n^1) [19 + 9*z], size: INF FILTER: runtime: O(n^1) [20 + 9*z'], size: INF ---------------------------------------- (263) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: ERATOS after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? Computed SIZE bound using CoFloCo for: ERATOS#1 after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (264) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 21 + 9*z1 }-> 1 + ERATOS(s153) + s164 :|: s164 >= 0, s164 <= inf4, s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 21 + 9*z1 }-> 1 + ERATOS(0) + s165 :|: s165 >= 0, s165 <= inf5, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 20 + 9*z' }-> 1 + s166 :|: s166 >= 0, s166 <= inf6, z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 28 + 9*z1 }-> 1 + s159 + s167 :|: s167 >= 0, s167 <= inf7, s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 28 + 9*z1 }-> 1 + s160 + s168 :|: s168 >= 0, s168 <= inf8, s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> s161 :|: s161 >= 0, s161 <= z, z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + s162 :|: s162 >= 0, s162 <= s155, s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + s163 :|: s163 >= 0, s163 <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {ERATOS,ERATOS#1} Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF filter: runtime: O(1) [0], size: O(n^1) [z'] eratos: runtime: O(1) [0], size: O(n^1) [z] eratos#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#1: runtime: O(n^1) [19 + 9*z], size: INF FILTER: runtime: O(n^1) [20 + 9*z'], size: INF ERATOS: runtime: ?, size: INF ERATOS#1: runtime: ?, size: INF ---------------------------------------- (265) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: ERATOS after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 44 + 104*z + 36*z^2 Computed RUNTIME bound using KoAT for: ERATOS#1 after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 131 + 122*z + 36*z^2 ---------------------------------------- (266) Obligation: Complexity RNTS consisting of the following rules: #ADD(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #ADD(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 4 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 3 :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + 2 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + 1 :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #ADD(z, z') -{ 0 }-> 1 + 0 :|: z = 1 + (1 + 0), z' >= 0 #ADD(z, z') -{ 0 }-> 1 + s + s65 :|: s65 >= 0, s65 <= 5 * (1 + (1 + 0)), s >= 0, s <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s' + s66 :|: s66 >= 0, s66 <= 5 * (1 + (1 + 0)), s' >= 0, s' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s'' + s67 :|: s67 >= 0, s67 <= 5 * (1 + (1 + 0)), s'' >= 0, s'' <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s1 + s68 :|: s68 >= 0, s68 <= 5 * (1 + (1 + 0)), s1 >= 0, s1 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s11 + s59 :|: s59 >= 0, s59 <= 5 * (1 + (1 + 0)), s11 >= 0, s11 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)) #ADD(z, z') -{ 0 }-> 1 + s12 + s60 :|: s60 >= 0, s60 <= 5 * (1 + (1 + 0)), s12 >= 0, s12 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #ADD(z, z') -{ 0 }-> 1 + s13 + s61 :|: s61 >= 0, s61 <= 5 * (1 + (1 + 0)), s13 >= 0, s13 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #ADD(z, z') -{ 0 }-> 1 + s14 + s62 :|: s62 >= 0, s62 <= 5 * (1 + (1 + 0)), s14 >= 0, s14 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #ADD(z, z') -{ 0 }-> 1 + s15 + s63 :|: s63 >= 0, s63 <= 5 * (1 + (1 + 0)), s15 >= 0, s15 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s2 + s69 :|: s69 >= 0, s69 <= 5 * (1 + (1 + 0)), s2 >= 0, s2 <= 4, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #ADD(z, z') -{ 0 }-> 1 + s28 + s64 :|: s64 >= 0, s64 <= 5 * (1 + (1 + (1 + (z - 4)))), s26 >= 0, s26 <= 2 * (1 + (1 + (z - 4))) + z', s27 >= 0, s27 <= s26 + 2, s28 >= 0, s28 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + s31 + s70 :|: s70 >= 0, s70 <= 5 * (1 + (1 + (1 + (z - 4)))), s29 >= 0, s29 <= 2 * (1 + (1 + (z - 4))) + z', s30 >= 0, s30 <= s29 + 2, s31 >= 0, s31 <= 4, z' >= 0, z - 4 >= 0 #ADD(z, z') -{ 0 }-> 1 + 1 + s58 :|: s58 >= 0, s58 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, 0 = 0 #ADD(z, z') -{ 0 }-> 1 + 0 + s57 :|: s57 >= 0, s57 <= 5 * (1 + (1 + (z - 3))), z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #AND(z, z') -{ 0 }-> 4 :|: z = 2, z' = 2 #AND(z, z') -{ 0 }-> 3 :|: z = 2, z' = 1 #AND(z, z') -{ 0 }-> 2 :|: z' = 2, z = 1 #AND(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #AND(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 4 :|: z = 0, z' = 0 #DIV(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 #DIV(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #DIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #DIV(z, z') -{ 0 }-> 1 + s39 :|: s39 >= 0, s39 <= z - 1 + 2 * (z' - 1) + (z' - 1) * (z - 1) + 1, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 9 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #EQ(z, z') -{ 0 }-> 8 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 7 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 6 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 5 :|: z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #EQ(z, z') -{ 0 }-> 3 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 11 :|: z = 2, z' = 2 #EQ(z, z') -{ 0 }-> 10 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #EQ(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #EQ(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #EQ(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #EQ(z, z') -{ 0 }-> 1 + s87 :|: s87 >= 0, s87 <= 5 * (z' - 1) + 11, z' - 1 >= 0, z - 1 >= 0 #EQ(z, z') -{ 0 }-> 1 + s47 + s88 :|: s88 >= 0, s88 <= 5 * z2 + 11, s45 >= 0, s45 <= 2, s46 >= 0, s46 <= 2, s47 >= 0, s47 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQ(z, z') -{ 0 }-> 1 + s50 + s89 :|: s89 >= 0, s89 <= 5 * z3 + 11, s48 >= 0, s48 <= 2, s49 >= 0, s49 <= 2, s50 >= 0, s50 <= 4, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #EQUAL(z, z') -{ 1 }-> 1 + s86 :|: s86 >= 0, s86 <= 5 * z' + 11, z' >= 0, z >= 0 #MULT(z, z') -{ 0 }-> 4 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 #MULT(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #MULT(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #MULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #MULT(z, z') -{ 0 }-> 1 + s97 :|: s97 >= 0, s97 <= 5 * ((z' - 1) * (z - 1)) + 6 * (z - 1), z' - 1 >= 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #NATDIV(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s40 + s16 :|: s40 >= 0, s40 <= z - 1 + 2 * (1 + 0) + (1 + 0) * (z - 1) + 1, s16 >= 0, s16 <= 0, z' = 1 + 0, z - 1 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s41 + s17 :|: s41 >= 0, s41 <= s8 + 2 * (1 + (1 + (z' - 2))) + (1 + (1 + (z' - 2))) * s8 + 1, s17 >= 0, s17 <= 1 + (z' - 2), s8 >= 0, s8 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #NATDIV(z, z') -{ 0 }-> 1 + s42 + s18 :|: s42 >= 0, s42 <= 0 + 2 * (1 + (z' - 1)) + (1 + (z' - 1)) * 0 + 1, s18 >= 0, s18 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #NATMULT(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s54 + s98 :|: s98 >= 0, s98 <= 5 * (z' * 0) + 6 * 0, s54 >= 0, s54 <= 5 * (1 + z'), z' >= 0, z = 1 + 0 #NATMULT(z, z') -{ 0 }-> 1 + s55 + s100 :|: s100 >= 0, s100 <= 5 * (z' * (z - 1)) + 6 * (z - 1), s55 >= 0, s55 <= 5 * (1 + z'), z' >= 0, z - 1 >= 0 #NATMULT(z, z') -{ 0 }-> 1 + s74 + s99 :|: s99 >= 0, s99 <= 5 * (z' * (1 + (z - 2))) + 6 * (1 + (z - 2)), s72 >= 0, s72 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s73 >= 0, s73 <= 2 * (1 + z') + s72, s74 >= 0, s74 <= 5 * (1 + z'), z' >= 0, z - 2 >= 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #NATSUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #NATSUB(z, z') -{ 0 }-> 1 + s19 :|: s19 >= 0, s19 <= z' - 1, z' - 1 >= 0, z - 1 >= 0 #PRED(z) -{ 0 }-> 4 :|: z - 3 >= 0 #PRED(z) -{ 0 }-> 3 :|: z = 1 + (1 + 0) #PRED(z) -{ 0 }-> 2 :|: z - 2 >= 0 #PRED(z) -{ 0 }-> 1 :|: z = 0 #PRED(z) -{ 0 }-> 0 :|: z >= 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 #SUB(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #SUB(z, z') -{ 0 }-> 1 + s56 :|: s56 >= 0, s56 <= 5 * z, z' - 1 >= 0, z >= 0 #SUCC(z) -{ 0 }-> 4 :|: z - 2 >= 0 #SUCC(z) -{ 0 }-> 3 :|: z - 3 >= 0 #SUCC(z) -{ 0 }-> 2 :|: z = 1 + (1 + 0) #SUCC(z) -{ 0 }-> 1 :|: z = 0 #SUCC(z) -{ 0 }-> 0 :|: z >= 0 #add(z, z') -{ 0 }-> s25 :|: s23 >= 0, s23 <= 2 * (1 + (1 + (z - 4))) + z', s24 >= 0, s24 <= s23 + 2, s25 >= 0, s25 <= s24 + 2, z - 4 >= 0, z' >= 0 #add(z, z') -{ 0 }-> s3 :|: s3 >= 0, s3 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)) #add(z, z') -{ 0 }-> s34 :|: s32 >= 0, s32 <= 2 * (1 + (1 + (z - 4))) + z', s33 >= 0, s33 <= s32 + 2, s34 >= 0, s34 <= s33 + 2, z' >= 0, z - 4 >= 0 #add(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= 1 + (1 + (1 + (z' - 2))) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0 #add(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 1 + (1 + (z' - 3)) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0 #add(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 0 + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> s7 :|: s7 >= 0, s7 <= 1 + (1 + 0) + 2, z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0 #add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z - 3 >= 0, v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), v0' >= 0, 0 = v0' #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), v0 >= 0, 0 = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, v0 >= 0, 1 + (1 + 0) = v0 #add(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, 1 + (1 + 0) = 1 + (1 + 0) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + z0') :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + z0')) #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z - 3 >= 0, 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 1 + (1 + 0), 0 = 0 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0)) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' = 0, z0 >= 0, 1 + (1 + 0) = 1 + (1 + z0) #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 2 >= 0, z0' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + z0')) :|: z' >= 0, z = 1 + (1 + (1 + 0)), z' - 3 >= 0, z0' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + z0') #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #div(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #div(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s43 :|: s43 >= 0, s43 <= 2, z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> s53 :|: s51 >= 0, s51 <= 2, s52 >= 0, s52 <= 2, s53 >= 0, s53 <= 2, z1 >= 0, z' = 1 + z2 + z3, z0 >= 0, z = 1 + z0 + z1, z2 >= 0, z3 >= 0 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 #eq(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0 #eq(z, z') -{ 0 }-> 1 :|: z1 >= 0, z' = 2, z0 >= 0, z = 1 + z0 + z1 #eq(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 + z0 + z1, z1 >= 0, z0 >= 0 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #equal(z, z') -{ 0 }-> s44 :|: s44 >= 0, s44 <= 2, z' >= 0, z >= 0 #equal(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z' - 1 >= 0, z = 0 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #mult(z, z') -{ 0 }-> 1 + s75 :|: s75 >= 0, s75 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z' - 1 >= 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natdiv(z, z') -{ 0 }-> 1 + s36 :|: s36 >= 0, s36 <= z - 1 + 1, z' = 1 + 0, z - 1 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s37 :|: s37 >= 0, s37 <= s9 + 1, s9 >= 0, s9 <= z - 2, z - 2 >= 0, z' - 2 >= 0 #natdiv(z, z') -{ 0 }-> 1 + s38 :|: s38 >= 0, s38 <= 0 + 1, z' - 1 >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s20 :|: s20 >= 0, s20 <= 2 * (1 + z') + 0, z' >= 0, z = 1 + 0 #natmult(z, z') -{ 0 }-> s21 :|: s21 >= 0, s21 <= 2 * (1 + z') + 0, z' >= 0, z - 1 >= 0 #natmult(z, z') -{ 0 }-> s78 :|: s76 >= 0, s76 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s77 >= 0, s77 <= 2 * (1 + z') + s76, s78 >= 0, s78 <= 2 * (1 + z') + s77, z' >= 0, z - 2 >= 0 #natmult(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #natsub(z, z') -{ 0 }-> s10 :|: s10 >= 0, s10 <= z - 1, z' - 1 >= 0, z - 1 >= 0 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #pred(z) -{ 0 }-> 0 :|: z >= 0 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 #sub(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * z + (1 + (z' - 1)), z' - 1 >= 0, z >= 0 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) #succ(z) -{ 0 }-> 0 :|: z >= 0 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 *'(z, z') -{ 1 }-> 1 + s113 :|: s113 >= 0, s113 <= z + 5 * (z' * z) + 5 * z' + 12, z' >= 0, z >= 0 -'(z, z') -{ 1 }-> 1 + s96 :|: s96 >= 0, s96 <= 5 * z + 1, z' >= 0, z >= 0 DIV(z, z') -{ 1 }-> 1 + s85 :|: s85 >= 0, s85 <= z' * z + z' + 12, z' >= 0, z >= 0 ERATOS(z) -{ 1 }-> 1 + ERATOS#1(z) :|: z >= 0 ERATOS#1(z) -{ 1 }-> 0 :|: z = 2 ERATOS#1(z) -{ 21 + 9*z1 }-> 1 + ERATOS(s153) + s164 :|: s164 >= 0, s164 <= inf4, s153 >= 0, s153 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ERATOS#1(z) -{ 21 + 9*z1 }-> 1 + ERATOS(0) + s165 :|: s165 >= 0, s165 <= inf5, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 FILTER(z, z') -{ 20 + 9*z' }-> 1 + s166 :|: s166 >= 0, s166 <= inf6, z' >= 0, z >= 0 FILTER#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0 FILTER#1(z, z') -{ 28 + 9*z1 }-> 1 + s159 + s167 :|: s167 >= 0, s167 <= inf7, s159 >= 0, s159 <= inf2, s154 >= 0, s154 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#1(z, z') -{ 28 + 9*z1 }-> 1 + s160 + s168 :|: s168 >= 0, s168 <= inf8, s160 >= 0, s160 <= inf3, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s129 + s132 + s149 :|: s149 >= 0, s149 <= inf, s126 >= 0, s126 <= 4 * (s102 * z'') + 1, s127 >= 0, s127 <= 2 * z'' + s126, s128 >= 0, s128 <= 2, s129 >= 0, s129 <= 1, s130 >= 0, s130 <= 4 * (s103 * z'') + 1, s131 >= 0, s131 <= 2 * z'' + s130, s132 >= 0, s132 <= 5 * 0 + 12, s102 >= 0, s102 <= z'' + 1, s103 >= 0, s103 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s136 + s111 + s150 :|: s150 >= 0, s150 <= inf', s133 >= 0, s133 <= 4 * (s104 * z'') + 1, s134 >= 0, s134 <= 2 * z'' + s133, s135 >= 0, s135 <= 2, s136 >= 0, s136 <= 1, s111 >= 0, s111 <= 5 * 0 + 12, s104 >= 0, s104 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s91 + s139 + s151 :|: s151 >= 0, s151 <= inf'', s137 >= 0, s137 <= 4 * (s105 * z'') + 1, s138 >= 0, s138 <= 2 * z'' + s137, s139 >= 0, s139 <= 5 * 0 + 12, s105 >= 0, s105 <= z'' + 1, s90 >= 0, s90 <= 2, s91 >= 0, s91 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#2(z, z', z'') -{ 7 }-> 1 + s93 + s112 + s152 :|: s152 >= 0, s152 <= inf1, s112 >= 0, s112 <= 5 * 0 + 12, s92 >= 0, s92 <= 2, s93 >= 0, s93 <= 1, z' >= 0, z >= 0, z'' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 1 :|: z = 2, z'' >= 0, z' >= 0 FILTER#3(z, z', z'') -{ 1 }-> 0 :|: z'' >= 0, z = 1, z' >= 0 MOD(z, z') -{ 4 }-> 1 + s115 + s144 + s107 :|: s144 >= 0, s144 <= z + 5 * (s80 * z) + 5 * s80 + 13, s114 >= 0, s114 <= 4 * (s79 * z) + 1, s115 >= 0, s115 <= 5 * z + 2, s107 >= 0, s107 <= z' * z + z' + 13, s79 >= 0, s79 <= z + 1, s80 >= 0, s80 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s117 + s145 + s108 :|: s145 >= 0, s145 <= z + 5 * (0 * z) + 5 * 0 + 13, s116 >= 0, s116 <= 4 * (s81 * z) + 1, s117 >= 0, s117 <= 5 * z + 2, s108 >= 0, s108 <= z' * z + z' + 13, s81 >= 0, s81 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s119 + s146 + s109 :|: s146 >= 0, s146 <= z + 5 * (s82 * z) + 5 * s82 + 13, s118 >= 0, s118 <= 4 * (0 * z) + 1, s119 >= 0, s119 <= 5 * z + 2, s109 >= 0, s109 <= z' * z + z' + 13, s82 >= 0, s82 <= z + 1, z' >= 0, z >= 0 MOD(z, z') -{ 4 }-> 1 + s121 + s147 + s110 :|: s147 >= 0, s147 <= z + 5 * (0 * z) + 5 * 0 + 13, s120 >= 0, s120 <= 4 * (0 * z) + 1, s121 >= 0, s121 <= 5 * z + 2, s110 >= 0, s110 <= z' * z + z' + 13, z' >= 0, z >= 0 div(z, z') -{ 0 }-> s83 :|: s83 >= 0, s83 <= z + 1, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 eratos(z) -{ 0 }-> s161 :|: s161 >= 0, s161 <= z, z >= 0 eratos(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 2 :|: z = 2 eratos#1(z) -{ 0 }-> 0 :|: z >= 0 eratos#1(z) -{ 0 }-> 1 + z0 + s162 :|: s162 >= 0, s162 <= s155, s155 >= 0, s155 <= z1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 eratos#1(z) -{ 0 }-> 1 + z0 + s163 :|: s163 >= 0, s163 <= 0, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 filter(z, z') -{ 0 }-> s156 :|: s156 >= 0, s156 <= z', z' >= 0, z >= 0 filter(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#1(z, z') -{ 0 }-> s148 :|: s148 >= 0, s148 <= 0 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> s158 :|: s157 >= 0, s157 <= z1, s158 >= 0, s158 <= s157 + z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1, z' >= 0 filter#1(z, z') -{ 0 }-> 2 :|: z = 2, z' >= 0 filter#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 filter#2(z, z', z'') -{ 0 }-> s143 :|: s140 >= 0, s140 <= 4 * (s106 * z'') + 1, s141 >= 0, s141 <= 2 * z'' + s140, s142 >= 0, s142 <= 2, s143 >= 0, s143 <= z'' + z + 1, s106 >= 0, s106 <= z'' + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> s95 :|: s94 >= 0, s94 <= 2, s95 >= 0, s95 <= z'' + z + 1, z' >= 0, z >= 0, z'' >= 0 filter#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> z'' :|: z = 2, z'' >= 0, z' >= 0 filter#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 filter#3(z, z', z'') -{ 0 }-> 1 + z' + z'' :|: z'' >= 0, z = 1, z' >= 0 minus(z, z') -{ 0 }-> s71 :|: s71 >= 0, s71 <= 2 * z + z', z' >= 0, z >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 mod(z, z') -{ 0 }-> s123 :|: s122 >= 0, s122 <= 4 * (s84 * z) + 1, s123 >= 0, s123 <= 2 * z + s122, s84 >= 0, s84 <= z + 1, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> s125 :|: s124 >= 0, s124 <= 4 * (0 * z) + 1, s125 >= 0, s125 <= 2 * z + s124, z' >= 0, z >= 0 mod(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 times(z, z') -{ 0 }-> s101 :|: s101 >= 0, s101 <= 4 * (z' * z) + 1, z' >= 0, z >= 0 times(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: Previous analysis results are: #SUCC: runtime: O(1) [0], size: O(1) [4] filter#3: runtime: O(1) [0], size: O(n^1) [1 + z' + z''] #pred: runtime: O(1) [0], size: O(n^1) [2 + z] #natsub: runtime: O(1) [0], size: O(n^1) [z] FILTER#3: runtime: O(1) [1], size: O(1) [1] #and: runtime: O(1) [0], size: O(1) [2] #PRED: runtime: O(1) [0], size: O(1) [4] #NATSUB: runtime: O(1) [0], size: O(n^1) [z'] #AND: runtime: O(1) [0], size: O(1) [4] #succ: runtime: O(1) [0], size: O(n^1) [2 + z] #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] #NATDIV: runtime: O(1) [0], size: O(n^2) [1 + z + z*z' + 2*z'] #eq: runtime: O(1) [0], size: O(1) [2] #ADD: runtime: O(1) [0], size: O(n^1) [5*z] #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] #div: runtime: O(1) [0], size: O(n^1) [1 + z] #DIV: runtime: O(1) [0], size: O(n^2) [12 + z*z' + z'] #EQ: runtime: O(1) [0], size: O(n^1) [11 + 5*z'] #equal: runtime: O(1) [0], size: O(1) [2] #SUB: runtime: O(1) [0], size: O(n^1) [1 + 5*z] #NATMULT: runtime: O(1) [0], size: O(n^2) [6*z + 5*z*z'] minus: runtime: O(1) [0], size: O(n^1) [2*z + z'] #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] div: runtime: O(1) [0], size: O(n^1) [1 + z] DIV: runtime: O(1) [1], size: O(n^2) [13 + z*z' + z'] #EQUAL: runtime: O(1) [1], size: O(n^1) [12 + 5*z'] -': runtime: O(1) [1], size: O(n^1) [2 + 5*z] #MULT: runtime: O(1) [0], size: O(n^2) [12 + z + 5*z*z' + 5*z'] times: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] *': runtime: O(1) [1], size: O(n^2) [13 + z + 5*z*z' + 5*z'] mod: runtime: O(1) [0], size: INF filter#2: runtime: O(1) [0], size: O(n^1) [1 + z + z''] MOD: runtime: O(1) [4], size: INF filter#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#2: runtime: O(1) [7], size: INF filter: runtime: O(1) [0], size: O(n^1) [z'] eratos: runtime: O(1) [0], size: O(n^1) [z] eratos#1: runtime: O(1) [0], size: O(n^1) [z] FILTER#1: runtime: O(n^1) [19 + 9*z], size: INF FILTER: runtime: O(n^1) [20 + 9*z'], size: INF ERATOS: runtime: O(n^2) [44 + 104*z + 36*z^2], size: INF ERATOS#1: runtime: O(n^2) [131 + 122*z + 36*z^2], size: INF ---------------------------------------- (267) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (268) BOUNDS(1, n^2) ---------------------------------------- (269) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (270) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: #EQUAL(z0, z1) -> c61(#EQ(z0, z1)) *'(z0, z1) -> c62(#MULT(z0, z1)) -'(z0, z1) -> c63(#SUB(z0, z1)) DIV(z0, z1) -> c64(#DIV(z0, z1)) ERATOS(z0) -> c65(ERATOS#1(z0)) ERATOS#1(::(z0, z1)) -> c66(ERATOS(filter(z0, z1)), FILTER(z0, z1)) ERATOS#1(nil) -> c67 FILTER(z0, z1) -> c68(FILTER#1(z1, z0)) FILTER#1(::(z0, z1), z2) -> c69(FILTER#2(filter(z2, z1), z2, z0), FILTER(z2, z1)) FILTER#1(nil, z0) -> c70 FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(mod(z2, z1), #0), z2, z0), #EQUAL(mod(z2, z1), #0), MOD(z2, z1)) FILTER#3(#false, z0, z1) -> c72 FILTER#3(#true, z0, z1) -> c73 MOD(z0, z1) -> c74(-'(z0, *(z0, div(z0, z1))), *'(z0, div(z0, z1)), DIV(z0, z1)) The (relative) TRS S consists of the following rules: #ADD(#0, z0) -> c #ADD(#neg(#s(#0)), z0) -> c1(#PRED(z0)) #ADD(#neg(#s(#s(z0))), z1) -> c2(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) #ADD(#pos(#s(#0)), z0) -> c3(#SUCC(z0)) #ADD(#pos(#s(#s(z0))), z1) -> c4(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) #AND(#false, #false) -> c5 #AND(#false, #true) -> c6 #AND(#true, #false) -> c7 #AND(#true, #true) -> c8 #DIV(#0, #0) -> c9 #DIV(#0, #neg(z0)) -> c10 #DIV(#0, #pos(z0)) -> c11 #DIV(#neg(z0), #0) -> c12 #DIV(#neg(z0), #neg(z1)) -> c13(#NATDIV(z0, z1)) #DIV(#neg(z0), #pos(z1)) -> c14(#NATDIV(z0, z1)) #DIV(#pos(z0), #0) -> c15 #DIV(#pos(z0), #neg(z1)) -> c16(#NATDIV(z0, z1)) #DIV(#pos(z0), #pos(z1)) -> c17(#NATDIV(z0, z1)) #EQ(#0, #0) -> c18 #EQ(#0, #neg(z0)) -> c19 #EQ(#0, #pos(z0)) -> c20 #EQ(#0, #s(z0)) -> c21 #EQ(#neg(z0), #0) -> c22 #EQ(#neg(z0), #neg(z1)) -> c23(#EQ(z0, z1)) #EQ(#neg(z0), #pos(z1)) -> c24 #EQ(#pos(z0), #0) -> c25 #EQ(#pos(z0), #neg(z1)) -> c26 #EQ(#pos(z0), #pos(z1)) -> c27(#EQ(z0, z1)) #EQ(#s(z0), #0) -> c28 #EQ(#s(z0), #s(z1)) -> c29(#EQ(z0, z1)) #EQ(::(z0, z1), ::(z2, z3)) -> c30(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z0, z2)) #EQ(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z1, z3)) #EQ(::(z0, z1), nil) -> c32 #EQ(nil, ::(z0, z1)) -> c33 #EQ(nil, nil) -> c34 #MULT(#0, #0) -> c35 #MULT(#0, #neg(z0)) -> c36 #MULT(#0, #pos(z0)) -> c37 #MULT(#neg(z0), #0) -> c38 #MULT(#neg(z0), #neg(z1)) -> c39(#NATMULT(z0, z1)) #MULT(#neg(z0), #pos(z1)) -> c40(#NATMULT(z0, z1)) #MULT(#pos(z0), #0) -> c41 #MULT(#pos(z0), #neg(z1)) -> c42(#NATMULT(z0, z1)) #MULT(#pos(z0), #pos(z1)) -> c43(#NATMULT(z0, z1)) #NATDIV(#0, #0) -> c44 #NATDIV(#s(z0), #s(z1)) -> c45(#NATDIV(#natsub(z0, z1), #s(z1)), #NATSUB(z0, z1)) #NATMULT(#0, z0) -> c46 #NATMULT(#s(z0), z1) -> c47(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1)) #NATSUB(z0, #0) -> c48 #NATSUB(#s(z0), #s(z1)) -> c49(#NATSUB(z0, z1)) #PRED(#0) -> c50 #PRED(#neg(#s(z0))) -> c51 #PRED(#pos(#s(#0))) -> c52 #PRED(#pos(#s(#s(z0)))) -> c53 #SUB(z0, #0) -> c54 #SUB(z0, #neg(z1)) -> c55(#ADD(z0, #pos(z1))) #SUB(z0, #pos(z1)) -> c56(#ADD(z0, #neg(z1))) #SUCC(#0) -> c57 #SUCC(#neg(#s(#0))) -> c58 #SUCC(#neg(#s(#s(z0)))) -> c59 #SUCC(#pos(#s(z0))) -> c60 #add(#0, z0) -> z0 #add(#neg(#s(#0)), z0) -> #pred(z0) #add(#neg(#s(#s(z0))), z1) -> #pred(#add(#pos(#s(z0)), z1)) #add(#pos(#s(#0)), z0) -> #succ(z0) #add(#pos(#s(#s(z0))), z1) -> #succ(#add(#pos(#s(z0)), z1)) #and(#false, #false) -> #false #and(#false, #true) -> #false #and(#true, #false) -> #false #and(#true, #true) -> #true #div(#0, #0) -> #divByZero #div(#0, #neg(z0)) -> #0 #div(#0, #pos(z0)) -> #0 #div(#neg(z0), #0) -> #divByZero #div(#neg(z0), #neg(z1)) -> #pos(#natdiv(z0, z1)) #div(#neg(z0), #pos(z1)) -> #neg(#natdiv(z0, z1)) #div(#pos(z0), #0) -> #divByZero #div(#pos(z0), #neg(z1)) -> #neg(#natdiv(z0, z1)) #div(#pos(z0), #pos(z1)) -> #pos(#natdiv(z0, z1)) #eq(#0, #0) -> #true #eq(#0, #neg(z0)) -> #false #eq(#0, #pos(z0)) -> #false #eq(#0, #s(z0)) -> #false #eq(#neg(z0), #0) -> #false #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) #eq(#neg(z0), #pos(z1)) -> #false #eq(#pos(z0), #0) -> #false #eq(#pos(z0), #neg(z1)) -> #false #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) #eq(#s(z0), #0) -> #false #eq(#s(z0), #s(z1)) -> #eq(z0, z1) #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) #eq(::(z0, z1), nil) -> #false #eq(nil, ::(z0, z1)) -> #false #eq(nil, nil) -> #true #mult(#0, #0) -> #0 #mult(#0, #neg(z0)) -> #0 #mult(#0, #pos(z0)) -> #0 #mult(#neg(z0), #0) -> #0 #mult(#neg(z0), #neg(z1)) -> #pos(#natmult(z0, z1)) #mult(#neg(z0), #pos(z1)) -> #neg(#natmult(z0, z1)) #mult(#pos(z0), #0) -> #0 #mult(#pos(z0), #neg(z1)) -> #neg(#natmult(z0, z1)) #mult(#pos(z0), #pos(z1)) -> #pos(#natmult(z0, z1)) #natdiv(#0, #0) -> #divByZero #natdiv(#s(z0), #s(z1)) -> #s(#natdiv(#natsub(z0, z1), #s(z1))) #natmult(#0, z0) -> #0 #natmult(#s(z0), z1) -> #add(#pos(z1), #natmult(z0, z1)) #natsub(z0, #0) -> z0 #natsub(#s(z0), #s(z1)) -> #natsub(z0, z1) #pred(#0) -> #neg(#s(#0)) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0))) -> #0 #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0, #0) -> z0 #sub(z0, #neg(z1)) -> #add(z0, #pos(z1)) #sub(z0, #pos(z1)) -> #add(z0, #neg(z1)) #succ(#0) -> #pos(#s(#0)) #succ(#neg(#s(#0))) -> #0 #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) #equal(z0, z1) -> #eq(z0, z1) *(z0, z1) -> #mult(z0, z1) -(z0, z1) -> #sub(z0, z1) div(z0, z1) -> #div(z0, z1) eratos(z0) -> eratos#1(z0) eratos#1(::(z0, z1)) -> ::(z0, eratos(filter(z0, z1))) eratos#1(nil) -> nil filter(z0, z1) -> filter#1(z1, z0) filter#1(::(z0, z1), z2) -> filter#2(filter(z2, z1), z2, z0) filter#1(nil, z0) -> nil filter#2(z0, z1, z2) -> filter#3(#equal(mod(z2, z1), #0), z2, z0) filter#3(#false, z0, z1) -> ::(z0, z1) filter#3(#true, z0, z1) -> z1 mod(z0, z1) -> -(z0, *(z0, div(z0, z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (271) DecreasingLoopProof (LOWER BOUND(ID)) The following loop(s) give(s) rise to the lower bound Omega(n^1): The rewrite sequence FILTER#1(::(z0, z1), z2) ->^+ c69(FILTER#2(filter(z2, z1), z2, z0), c68(FILTER#1(z1, z2))) gives rise to a decreasing loop by considering the right hand sides subterm at position [1,0]. The pumping substitution is [z1 / ::(z0, z1)]. The result substitution is [ ]. ---------------------------------------- (272) Complex Obligation (BEST) ---------------------------------------- (273) Obligation: Proved the lower bound n^1 for the following obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: #EQUAL(z0, z1) -> c61(#EQ(z0, z1)) *'(z0, z1) -> c62(#MULT(z0, z1)) -'(z0, z1) -> c63(#SUB(z0, z1)) DIV(z0, z1) -> c64(#DIV(z0, z1)) ERATOS(z0) -> c65(ERATOS#1(z0)) ERATOS#1(::(z0, z1)) -> c66(ERATOS(filter(z0, z1)), FILTER(z0, z1)) ERATOS#1(nil) -> c67 FILTER(z0, z1) -> c68(FILTER#1(z1, z0)) FILTER#1(::(z0, z1), z2) -> c69(FILTER#2(filter(z2, z1), z2, z0), FILTER(z2, z1)) FILTER#1(nil, z0) -> c70 FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(mod(z2, z1), #0), z2, z0), #EQUAL(mod(z2, z1), #0), MOD(z2, z1)) FILTER#3(#false, z0, z1) -> c72 FILTER#3(#true, z0, z1) -> c73 MOD(z0, z1) -> c74(-'(z0, *(z0, div(z0, z1))), *'(z0, div(z0, z1)), DIV(z0, z1)) The (relative) TRS S consists of the following rules: #ADD(#0, z0) -> c #ADD(#neg(#s(#0)), z0) -> c1(#PRED(z0)) #ADD(#neg(#s(#s(z0))), z1) -> c2(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) #ADD(#pos(#s(#0)), z0) -> c3(#SUCC(z0)) #ADD(#pos(#s(#s(z0))), z1) -> c4(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) #AND(#false, #false) -> c5 #AND(#false, #true) -> c6 #AND(#true, #false) -> c7 #AND(#true, #true) -> c8 #DIV(#0, #0) -> c9 #DIV(#0, #neg(z0)) -> c10 #DIV(#0, #pos(z0)) -> c11 #DIV(#neg(z0), #0) -> c12 #DIV(#neg(z0), #neg(z1)) -> c13(#NATDIV(z0, z1)) #DIV(#neg(z0), #pos(z1)) -> c14(#NATDIV(z0, z1)) #DIV(#pos(z0), #0) -> c15 #DIV(#pos(z0), #neg(z1)) -> c16(#NATDIV(z0, z1)) #DIV(#pos(z0), #pos(z1)) -> c17(#NATDIV(z0, z1)) #EQ(#0, #0) -> c18 #EQ(#0, #neg(z0)) -> c19 #EQ(#0, #pos(z0)) -> c20 #EQ(#0, #s(z0)) -> c21 #EQ(#neg(z0), #0) -> c22 #EQ(#neg(z0), #neg(z1)) -> c23(#EQ(z0, z1)) #EQ(#neg(z0), #pos(z1)) -> c24 #EQ(#pos(z0), #0) -> c25 #EQ(#pos(z0), #neg(z1)) -> c26 #EQ(#pos(z0), #pos(z1)) -> c27(#EQ(z0, z1)) #EQ(#s(z0), #0) -> c28 #EQ(#s(z0), #s(z1)) -> c29(#EQ(z0, z1)) #EQ(::(z0, z1), ::(z2, z3)) -> c30(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z0, z2)) #EQ(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z1, z3)) #EQ(::(z0, z1), nil) -> c32 #EQ(nil, ::(z0, z1)) -> c33 #EQ(nil, nil) -> c34 #MULT(#0, #0) -> c35 #MULT(#0, #neg(z0)) -> c36 #MULT(#0, #pos(z0)) -> c37 #MULT(#neg(z0), #0) -> c38 #MULT(#neg(z0), #neg(z1)) -> c39(#NATMULT(z0, z1)) #MULT(#neg(z0), #pos(z1)) -> c40(#NATMULT(z0, z1)) #MULT(#pos(z0), #0) -> c41 #MULT(#pos(z0), #neg(z1)) -> c42(#NATMULT(z0, z1)) #MULT(#pos(z0), #pos(z1)) -> c43(#NATMULT(z0, z1)) #NATDIV(#0, #0) -> c44 #NATDIV(#s(z0), #s(z1)) -> c45(#NATDIV(#natsub(z0, z1), #s(z1)), #NATSUB(z0, z1)) #NATMULT(#0, z0) -> c46 #NATMULT(#s(z0), z1) -> c47(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1)) #NATSUB(z0, #0) -> c48 #NATSUB(#s(z0), #s(z1)) -> c49(#NATSUB(z0, z1)) #PRED(#0) -> c50 #PRED(#neg(#s(z0))) -> c51 #PRED(#pos(#s(#0))) -> c52 #PRED(#pos(#s(#s(z0)))) -> c53 #SUB(z0, #0) -> c54 #SUB(z0, #neg(z1)) -> c55(#ADD(z0, #pos(z1))) #SUB(z0, #pos(z1)) -> c56(#ADD(z0, #neg(z1))) #SUCC(#0) -> c57 #SUCC(#neg(#s(#0))) -> c58 #SUCC(#neg(#s(#s(z0)))) -> c59 #SUCC(#pos(#s(z0))) -> c60 #add(#0, z0) -> z0 #add(#neg(#s(#0)), z0) -> #pred(z0) #add(#neg(#s(#s(z0))), z1) -> #pred(#add(#pos(#s(z0)), z1)) #add(#pos(#s(#0)), z0) -> #succ(z0) #add(#pos(#s(#s(z0))), z1) -> #succ(#add(#pos(#s(z0)), z1)) #and(#false, #false) -> #false #and(#false, #true) -> #false #and(#true, #false) -> #false #and(#true, #true) -> #true #div(#0, #0) -> #divByZero #div(#0, #neg(z0)) -> #0 #div(#0, #pos(z0)) -> #0 #div(#neg(z0), #0) -> #divByZero #div(#neg(z0), #neg(z1)) -> #pos(#natdiv(z0, z1)) #div(#neg(z0), #pos(z1)) -> #neg(#natdiv(z0, z1)) #div(#pos(z0), #0) -> #divByZero #div(#pos(z0), #neg(z1)) -> #neg(#natdiv(z0, z1)) #div(#pos(z0), #pos(z1)) -> #pos(#natdiv(z0, z1)) #eq(#0, #0) -> #true #eq(#0, #neg(z0)) -> #false #eq(#0, #pos(z0)) -> #false #eq(#0, #s(z0)) -> #false #eq(#neg(z0), #0) -> #false #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) #eq(#neg(z0), #pos(z1)) -> #false #eq(#pos(z0), #0) -> #false #eq(#pos(z0), #neg(z1)) -> #false #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) #eq(#s(z0), #0) -> #false #eq(#s(z0), #s(z1)) -> #eq(z0, z1) #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) #eq(::(z0, z1), nil) -> #false #eq(nil, ::(z0, z1)) -> #false #eq(nil, nil) -> #true #mult(#0, #0) -> #0 #mult(#0, #neg(z0)) -> #0 #mult(#0, #pos(z0)) -> #0 #mult(#neg(z0), #0) -> #0 #mult(#neg(z0), #neg(z1)) -> #pos(#natmult(z0, z1)) #mult(#neg(z0), #pos(z1)) -> #neg(#natmult(z0, z1)) #mult(#pos(z0), #0) -> #0 #mult(#pos(z0), #neg(z1)) -> #neg(#natmult(z0, z1)) #mult(#pos(z0), #pos(z1)) -> #pos(#natmult(z0, z1)) #natdiv(#0, #0) -> #divByZero #natdiv(#s(z0), #s(z1)) -> #s(#natdiv(#natsub(z0, z1), #s(z1))) #natmult(#0, z0) -> #0 #natmult(#s(z0), z1) -> #add(#pos(z1), #natmult(z0, z1)) #natsub(z0, #0) -> z0 #natsub(#s(z0), #s(z1)) -> #natsub(z0, z1) #pred(#0) -> #neg(#s(#0)) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0))) -> #0 #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0, #0) -> z0 #sub(z0, #neg(z1)) -> #add(z0, #pos(z1)) #sub(z0, #pos(z1)) -> #add(z0, #neg(z1)) #succ(#0) -> #pos(#s(#0)) #succ(#neg(#s(#0))) -> #0 #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) #equal(z0, z1) -> #eq(z0, z1) *(z0, z1) -> #mult(z0, z1) -(z0, z1) -> #sub(z0, z1) div(z0, z1) -> #div(z0, z1) eratos(z0) -> eratos#1(z0) eratos#1(::(z0, z1)) -> ::(z0, eratos(filter(z0, z1))) eratos#1(nil) -> nil filter(z0, z1) -> filter#1(z1, z0) filter#1(::(z0, z1), z2) -> filter#2(filter(z2, z1), z2, z0) filter#1(nil, z0) -> nil filter#2(z0, z1, z2) -> filter#3(#equal(mod(z2, z1), #0), z2, z0) filter#3(#false, z0, z1) -> ::(z0, z1) filter#3(#true, z0, z1) -> z1 mod(z0, z1) -> -(z0, *(z0, div(z0, z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (274) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (275) BOUNDS(n^1, INF) ---------------------------------------- (276) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: #EQUAL(z0, z1) -> c61(#EQ(z0, z1)) *'(z0, z1) -> c62(#MULT(z0, z1)) -'(z0, z1) -> c63(#SUB(z0, z1)) DIV(z0, z1) -> c64(#DIV(z0, z1)) ERATOS(z0) -> c65(ERATOS#1(z0)) ERATOS#1(::(z0, z1)) -> c66(ERATOS(filter(z0, z1)), FILTER(z0, z1)) ERATOS#1(nil) -> c67 FILTER(z0, z1) -> c68(FILTER#1(z1, z0)) FILTER#1(::(z0, z1), z2) -> c69(FILTER#2(filter(z2, z1), z2, z0), FILTER(z2, z1)) FILTER#1(nil, z0) -> c70 FILTER#2(z0, z1, z2) -> c71(FILTER#3(#equal(mod(z2, z1), #0), z2, z0), #EQUAL(mod(z2, z1), #0), MOD(z2, z1)) FILTER#3(#false, z0, z1) -> c72 FILTER#3(#true, z0, z1) -> c73 MOD(z0, z1) -> c74(-'(z0, *(z0, div(z0, z1))), *'(z0, div(z0, z1)), DIV(z0, z1)) The (relative) TRS S consists of the following rules: #ADD(#0, z0) -> c #ADD(#neg(#s(#0)), z0) -> c1(#PRED(z0)) #ADD(#neg(#s(#s(z0))), z1) -> c2(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) #ADD(#pos(#s(#0)), z0) -> c3(#SUCC(z0)) #ADD(#pos(#s(#s(z0))), z1) -> c4(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1)) #AND(#false, #false) -> c5 #AND(#false, #true) -> c6 #AND(#true, #false) -> c7 #AND(#true, #true) -> c8 #DIV(#0, #0) -> c9 #DIV(#0, #neg(z0)) -> c10 #DIV(#0, #pos(z0)) -> c11 #DIV(#neg(z0), #0) -> c12 #DIV(#neg(z0), #neg(z1)) -> c13(#NATDIV(z0, z1)) #DIV(#neg(z0), #pos(z1)) -> c14(#NATDIV(z0, z1)) #DIV(#pos(z0), #0) -> c15 #DIV(#pos(z0), #neg(z1)) -> c16(#NATDIV(z0, z1)) #DIV(#pos(z0), #pos(z1)) -> c17(#NATDIV(z0, z1)) #EQ(#0, #0) -> c18 #EQ(#0, #neg(z0)) -> c19 #EQ(#0, #pos(z0)) -> c20 #EQ(#0, #s(z0)) -> c21 #EQ(#neg(z0), #0) -> c22 #EQ(#neg(z0), #neg(z1)) -> c23(#EQ(z0, z1)) #EQ(#neg(z0), #pos(z1)) -> c24 #EQ(#pos(z0), #0) -> c25 #EQ(#pos(z0), #neg(z1)) -> c26 #EQ(#pos(z0), #pos(z1)) -> c27(#EQ(z0, z1)) #EQ(#s(z0), #0) -> c28 #EQ(#s(z0), #s(z1)) -> c29(#EQ(z0, z1)) #EQ(::(z0, z1), ::(z2, z3)) -> c30(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z0, z2)) #EQ(::(z0, z1), ::(z2, z3)) -> c31(#AND(#eq(z0, z2), #eq(z1, z3)), #EQ(z1, z3)) #EQ(::(z0, z1), nil) -> c32 #EQ(nil, ::(z0, z1)) -> c33 #EQ(nil, nil) -> c34 #MULT(#0, #0) -> c35 #MULT(#0, #neg(z0)) -> c36 #MULT(#0, #pos(z0)) -> c37 #MULT(#neg(z0), #0) -> c38 #MULT(#neg(z0), #neg(z1)) -> c39(#NATMULT(z0, z1)) #MULT(#neg(z0), #pos(z1)) -> c40(#NATMULT(z0, z1)) #MULT(#pos(z0), #0) -> c41 #MULT(#pos(z0), #neg(z1)) -> c42(#NATMULT(z0, z1)) #MULT(#pos(z0), #pos(z1)) -> c43(#NATMULT(z0, z1)) #NATDIV(#0, #0) -> c44 #NATDIV(#s(z0), #s(z1)) -> c45(#NATDIV(#natsub(z0, z1), #s(z1)), #NATSUB(z0, z1)) #NATMULT(#0, z0) -> c46 #NATMULT(#s(z0), z1) -> c47(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1)) #NATSUB(z0, #0) -> c48 #NATSUB(#s(z0), #s(z1)) -> c49(#NATSUB(z0, z1)) #PRED(#0) -> c50 #PRED(#neg(#s(z0))) -> c51 #PRED(#pos(#s(#0))) -> c52 #PRED(#pos(#s(#s(z0)))) -> c53 #SUB(z0, #0) -> c54 #SUB(z0, #neg(z1)) -> c55(#ADD(z0, #pos(z1))) #SUB(z0, #pos(z1)) -> c56(#ADD(z0, #neg(z1))) #SUCC(#0) -> c57 #SUCC(#neg(#s(#0))) -> c58 #SUCC(#neg(#s(#s(z0)))) -> c59 #SUCC(#pos(#s(z0))) -> c60 #add(#0, z0) -> z0 #add(#neg(#s(#0)), z0) -> #pred(z0) #add(#neg(#s(#s(z0))), z1) -> #pred(#add(#pos(#s(z0)), z1)) #add(#pos(#s(#0)), z0) -> #succ(z0) #add(#pos(#s(#s(z0))), z1) -> #succ(#add(#pos(#s(z0)), z1)) #and(#false, #false) -> #false #and(#false, #true) -> #false #and(#true, #false) -> #false #and(#true, #true) -> #true #div(#0, #0) -> #divByZero #div(#0, #neg(z0)) -> #0 #div(#0, #pos(z0)) -> #0 #div(#neg(z0), #0) -> #divByZero #div(#neg(z0), #neg(z1)) -> #pos(#natdiv(z0, z1)) #div(#neg(z0), #pos(z1)) -> #neg(#natdiv(z0, z1)) #div(#pos(z0), #0) -> #divByZero #div(#pos(z0), #neg(z1)) -> #neg(#natdiv(z0, z1)) #div(#pos(z0), #pos(z1)) -> #pos(#natdiv(z0, z1)) #eq(#0, #0) -> #true #eq(#0, #neg(z0)) -> #false #eq(#0, #pos(z0)) -> #false #eq(#0, #s(z0)) -> #false #eq(#neg(z0), #0) -> #false #eq(#neg(z0), #neg(z1)) -> #eq(z0, z1) #eq(#neg(z0), #pos(z1)) -> #false #eq(#pos(z0), #0) -> #false #eq(#pos(z0), #neg(z1)) -> #false #eq(#pos(z0), #pos(z1)) -> #eq(z0, z1) #eq(#s(z0), #0) -> #false #eq(#s(z0), #s(z1)) -> #eq(z0, z1) #eq(::(z0, z1), ::(z2, z3)) -> #and(#eq(z0, z2), #eq(z1, z3)) #eq(::(z0, z1), nil) -> #false #eq(nil, ::(z0, z1)) -> #false #eq(nil, nil) -> #true #mult(#0, #0) -> #0 #mult(#0, #neg(z0)) -> #0 #mult(#0, #pos(z0)) -> #0 #mult(#neg(z0), #0) -> #0 #mult(#neg(z0), #neg(z1)) -> #pos(#natmult(z0, z1)) #mult(#neg(z0), #pos(z1)) -> #neg(#natmult(z0, z1)) #mult(#pos(z0), #0) -> #0 #mult(#pos(z0), #neg(z1)) -> #neg(#natmult(z0, z1)) #mult(#pos(z0), #pos(z1)) -> #pos(#natmult(z0, z1)) #natdiv(#0, #0) -> #divByZero #natdiv(#s(z0), #s(z1)) -> #s(#natdiv(#natsub(z0, z1), #s(z1))) #natmult(#0, z0) -> #0 #natmult(#s(z0), z1) -> #add(#pos(z1), #natmult(z0, z1)) #natsub(z0, #0) -> z0 #natsub(#s(z0), #s(z1)) -> #natsub(z0, z1) #pred(#0) -> #neg(#s(#0)) #pred(#neg(#s(z0))) -> #neg(#s(#s(z0))) #pred(#pos(#s(#0))) -> #0 #pred(#pos(#s(#s(z0)))) -> #pos(#s(z0)) #sub(z0, #0) -> z0 #sub(z0, #neg(z1)) -> #add(z0, #pos(z1)) #sub(z0, #pos(z1)) -> #add(z0, #neg(z1)) #succ(#0) -> #pos(#s(#0)) #succ(#neg(#s(#0))) -> #0 #succ(#neg(#s(#s(z0)))) -> #neg(#s(z0)) #succ(#pos(#s(z0))) -> #pos(#s(#s(z0))) #equal(z0, z1) -> #eq(z0, z1) *(z0, z1) -> #mult(z0, z1) -(z0, z1) -> #sub(z0, z1) div(z0, z1) -> #div(z0, z1) eratos(z0) -> eratos#1(z0) eratos#1(::(z0, z1)) -> ::(z0, eratos(filter(z0, z1))) eratos#1(nil) -> nil filter(z0, z1) -> filter#1(z1, z0) filter#1(::(z0, z1), z2) -> filter#2(filter(z2, z1), z2, z0) filter#1(nil, z0) -> nil filter#2(z0, z1, z2) -> filter#3(#equal(mod(z2, z1), #0), z2, z0) filter#3(#false, z0, z1) -> ::(z0, z1) filter#3(#true, z0, z1) -> z1 mod(z0, z1) -> -(z0, *(z0, div(z0, z1))) Rewrite Strategy: INNERMOST