1145.71/291.89 WORST_CASE(Omega(n^1), O(n^5)) 1149.20/292.78 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 1149.20/292.78 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 1149.20/292.78 1149.20/292.78 1149.20/292.78 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^5). 1149.20/292.78 1149.20/292.78 (0) CpxRelTRS 1149.20/292.78 (1) STerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 843 ms] 1149.20/292.78 (2) CpxRelTRS 1149.20/292.78 (3) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] 1149.20/292.78 (4) CpxWeightedTrs 1149.20/292.78 (5) CpxWeightedTrsRenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 1149.20/292.78 (6) CpxWeightedTrs 1149.20/292.78 (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 1149.20/292.78 (8) CpxTypedWeightedTrs 1149.20/292.78 (9) CompletionProof [UPPER BOUND(ID), 34 ms] 1149.20/292.78 (10) CpxTypedWeightedCompleteTrs 1149.20/292.78 (11) NarrowingProof [BOTH BOUNDS(ID, ID), 1342 ms] 1149.20/292.78 (12) CpxTypedWeightedCompleteTrs 1149.20/292.78 (13) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 15 ms] 1149.20/292.78 (14) CpxRNTS 1149.20/292.78 (15) InliningProof [UPPER BOUND(ID), 3516 ms] 1149.20/292.78 (16) CpxRNTS 1149.20/292.78 (17) SimplificationProof [BOTH BOUNDS(ID, ID), 20 ms] 1149.20/292.78 (18) CpxRNTS 1149.20/292.78 (19) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 3 ms] 1149.20/292.78 (20) CpxRNTS 1149.20/292.78 (21) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (22) CpxRNTS 1149.20/292.78 (23) IntTrsBoundProof [UPPER BOUND(ID), 157 ms] 1149.20/292.78 (24) CpxRNTS 1149.20/292.78 (25) IntTrsBoundProof [UPPER BOUND(ID), 25 ms] 1149.20/292.78 (26) CpxRNTS 1149.20/292.78 (27) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (28) CpxRNTS 1149.20/292.78 (29) IntTrsBoundProof [UPPER BOUND(ID), 191 ms] 1149.20/292.78 (30) CpxRNTS 1149.20/292.78 (31) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] 1149.20/292.78 (32) CpxRNTS 1149.20/292.78 (33) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (34) CpxRNTS 1149.20/292.78 (35) IntTrsBoundProof [UPPER BOUND(ID), 182 ms] 1149.20/292.78 (36) CpxRNTS 1149.20/292.78 (37) IntTrsBoundProof [UPPER BOUND(ID), 74 ms] 1149.20/292.78 (38) CpxRNTS 1149.20/292.78 (39) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (40) CpxRNTS 1149.20/292.78 (41) IntTrsBoundProof [UPPER BOUND(ID), 411 ms] 1149.20/292.78 (42) CpxRNTS 1149.20/292.78 (43) IntTrsBoundProof [UPPER BOUND(ID), 106 ms] 1149.20/292.78 (44) CpxRNTS 1149.20/292.78 (45) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (46) CpxRNTS 1149.20/292.78 (47) IntTrsBoundProof [UPPER BOUND(ID), 251 ms] 1149.20/292.78 (48) CpxRNTS 1149.20/292.78 (49) IntTrsBoundProof [UPPER BOUND(ID), 62 ms] 1149.20/292.78 (50) CpxRNTS 1149.20/292.78 (51) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (52) CpxRNTS 1149.20/292.78 (53) IntTrsBoundProof [UPPER BOUND(ID), 683 ms] 1149.20/292.78 (54) CpxRNTS 1149.20/292.78 (55) IntTrsBoundProof [UPPER BOUND(ID), 7 ms] 1149.20/292.78 (56) CpxRNTS 1149.20/292.78 (57) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (58) CpxRNTS 1149.20/292.78 (59) IntTrsBoundProof [UPPER BOUND(ID), 309 ms] 1149.20/292.78 (60) CpxRNTS 1149.20/292.78 (61) IntTrsBoundProof [UPPER BOUND(ID), 52 ms] 1149.20/292.78 (62) CpxRNTS 1149.20/292.78 (63) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (64) CpxRNTS 1149.20/292.78 (65) IntTrsBoundProof [UPPER BOUND(ID), 330 ms] 1149.20/292.78 (66) CpxRNTS 1149.20/292.78 (67) IntTrsBoundProof [UPPER BOUND(ID), 94 ms] 1149.20/292.78 (68) CpxRNTS 1149.20/292.78 (69) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (70) CpxRNTS 1149.20/292.78 (71) IntTrsBoundProof [UPPER BOUND(ID), 197 ms] 1149.20/292.78 (72) CpxRNTS 1149.20/292.78 (73) IntTrsBoundProof [UPPER BOUND(ID), 42 ms] 1149.20/292.78 (74) CpxRNTS 1149.20/292.78 (75) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (76) CpxRNTS 1149.20/292.78 (77) IntTrsBoundProof [UPPER BOUND(ID), 1071 ms] 1149.20/292.78 (78) CpxRNTS 1149.20/292.78 (79) IntTrsBoundProof [UPPER BOUND(ID), 152 ms] 1149.20/292.78 (80) CpxRNTS 1149.20/292.78 (81) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (82) CpxRNTS 1149.20/292.78 (83) IntTrsBoundProof [UPPER BOUND(ID), 290 ms] 1149.20/292.78 (84) CpxRNTS 1149.20/292.78 (85) IntTrsBoundProof [UPPER BOUND(ID), 62 ms] 1149.20/292.78 (86) CpxRNTS 1149.20/292.78 (87) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (88) CpxRNTS 1149.20/292.78 (89) IntTrsBoundProof [UPPER BOUND(ID), 238 ms] 1149.20/292.78 (90) CpxRNTS 1149.20/292.78 (91) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] 1149.20/292.78 (92) CpxRNTS 1149.20/292.78 (93) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (94) CpxRNTS 1149.20/292.78 (95) IntTrsBoundProof [UPPER BOUND(ID), 247 ms] 1149.20/292.78 (96) CpxRNTS 1149.20/292.78 (97) IntTrsBoundProof [UPPER BOUND(ID), 2 ms] 1149.20/292.78 (98) CpxRNTS 1149.20/292.78 (99) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (100) CpxRNTS 1149.20/292.78 (101) IntTrsBoundProof [UPPER BOUND(ID), 546 ms] 1149.20/292.78 (102) CpxRNTS 1149.20/292.78 (103) IntTrsBoundProof [UPPER BOUND(ID), 127 ms] 1149.20/292.78 (104) CpxRNTS 1149.20/292.78 (105) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (106) CpxRNTS 1149.20/292.78 (107) IntTrsBoundProof [UPPER BOUND(ID), 2359 ms] 1149.20/292.78 (108) CpxRNTS 1149.20/292.78 (109) IntTrsBoundProof [UPPER BOUND(ID), 422 ms] 1149.20/292.78 (110) CpxRNTS 1149.20/292.78 (111) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (112) CpxRNTS 1149.20/292.78 (113) IntTrsBoundProof [UPPER BOUND(ID), 631 ms] 1149.20/292.78 (114) CpxRNTS 1149.20/292.78 (115) IntTrsBoundProof [UPPER BOUND(ID), 154 ms] 1149.20/292.78 (116) CpxRNTS 1149.20/292.78 (117) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (118) CpxRNTS 1149.20/292.78 (119) IntTrsBoundProof [UPPER BOUND(ID), 882 ms] 1149.20/292.78 (120) CpxRNTS 1149.20/292.78 (121) IntTrsBoundProof [UPPER BOUND(ID), 346 ms] 1149.20/292.78 (122) CpxRNTS 1149.20/292.78 (123) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (124) CpxRNTS 1149.20/292.78 (125) IntTrsBoundProof [UPPER BOUND(ID), 716 ms] 1149.20/292.78 (126) CpxRNTS 1149.20/292.78 (127) IntTrsBoundProof [UPPER BOUND(ID), 49 ms] 1149.20/292.78 (128) CpxRNTS 1149.20/292.78 (129) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (130) CpxRNTS 1149.20/292.78 (131) IntTrsBoundProof [UPPER BOUND(ID), 309 ms] 1149.20/292.78 (132) CpxRNTS 1149.20/292.78 (133) IntTrsBoundProof [UPPER BOUND(ID), 32 ms] 1149.20/292.78 (134) CpxRNTS 1149.20/292.78 (135) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (136) CpxRNTS 1149.20/292.78 (137) IntTrsBoundProof [UPPER BOUND(ID), 721 ms] 1149.20/292.78 (138) CpxRNTS 1149.20/292.78 (139) IntTrsBoundProof [UPPER BOUND(ID), 94 ms] 1149.20/292.78 (140) CpxRNTS 1149.20/292.78 (141) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (142) CpxRNTS 1149.20/292.78 (143) IntTrsBoundProof [UPPER BOUND(ID), 257 ms] 1149.20/292.78 (144) CpxRNTS 1149.20/292.78 (145) IntTrsBoundProof [UPPER BOUND(ID), 1 ms] 1149.20/292.78 (146) CpxRNTS 1149.20/292.78 (147) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (148) CpxRNTS 1149.20/292.78 (149) IntTrsBoundProof [UPPER BOUND(ID), 259 ms] 1149.20/292.78 (150) CpxRNTS 1149.20/292.78 (151) IntTrsBoundProof [UPPER BOUND(ID), 44 ms] 1149.20/292.78 (152) CpxRNTS 1149.20/292.78 (153) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (154) CpxRNTS 1149.20/292.78 (155) IntTrsBoundProof [UPPER BOUND(ID), 564 ms] 1149.20/292.78 (156) CpxRNTS 1149.20/292.78 (157) IntTrsBoundProof [UPPER BOUND(ID), 95 ms] 1149.20/292.78 (158) CpxRNTS 1149.20/292.78 (159) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (160) CpxRNTS 1149.20/292.78 (161) IntTrsBoundProof [UPPER BOUND(ID), 268 ms] 1149.20/292.78 (162) CpxRNTS 1149.20/292.78 (163) IntTrsBoundProof [UPPER BOUND(ID), 43 ms] 1149.20/292.78 (164) CpxRNTS 1149.20/292.78 (165) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (166) CpxRNTS 1149.20/292.78 (167) IntTrsBoundProof [UPPER BOUND(ID), 155 ms] 1149.20/292.78 (168) CpxRNTS 1149.20/292.78 (169) IntTrsBoundProof [UPPER BOUND(ID), 73 ms] 1149.20/292.78 (170) CpxRNTS 1149.20/292.78 (171) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (172) CpxRNTS 1149.20/292.78 (173) IntTrsBoundProof [UPPER BOUND(ID), 207 ms] 1149.20/292.78 (174) CpxRNTS 1149.20/292.78 (175) IntTrsBoundProof [UPPER BOUND(ID), 52 ms] 1149.20/292.78 (176) CpxRNTS 1149.20/292.78 (177) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (178) CpxRNTS 1149.20/292.78 (179) IntTrsBoundProof [UPPER BOUND(ID), 1119 ms] 1149.20/292.78 (180) CpxRNTS 1149.20/292.78 (181) IntTrsBoundProof [UPPER BOUND(ID), 64 ms] 1149.20/292.78 (182) CpxRNTS 1149.20/292.78 (183) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (184) CpxRNTS 1149.20/292.78 (185) IntTrsBoundProof [UPPER BOUND(ID), 167 ms] 1149.20/292.78 (186) CpxRNTS 1149.20/292.78 (187) IntTrsBoundProof [UPPER BOUND(ID), 23 ms] 1149.20/292.78 (188) CpxRNTS 1149.20/292.78 (189) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (190) CpxRNTS 1149.20/292.78 (191) IntTrsBoundProof [UPPER BOUND(ID), 257 ms] 1149.20/292.78 (192) CpxRNTS 1149.20/292.78 (193) IntTrsBoundProof [UPPER BOUND(ID), 84 ms] 1149.20/292.78 (194) CpxRNTS 1149.20/292.78 (195) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (196) CpxRNTS 1149.20/292.78 (197) IntTrsBoundProof [UPPER BOUND(ID), 359 ms] 1149.20/292.78 (198) CpxRNTS 1149.20/292.78 (199) IntTrsBoundProof [UPPER BOUND(ID), 83 ms] 1149.20/292.78 (200) CpxRNTS 1149.20/292.78 (201) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (202) CpxRNTS 1149.20/292.78 (203) IntTrsBoundProof [UPPER BOUND(ID), 848 ms] 1149.20/292.78 (204) CpxRNTS 1149.20/292.78 (205) IntTrsBoundProof [UPPER BOUND(ID), 13 ms] 1149.20/292.78 (206) CpxRNTS 1149.20/292.78 (207) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (208) CpxRNTS 1149.20/292.78 (209) IntTrsBoundProof [UPPER BOUND(ID), 2198 ms] 1149.20/292.78 (210) CpxRNTS 1149.20/292.78 (211) IntTrsBoundProof [UPPER BOUND(ID), 209 ms] 1149.20/292.78 (212) CpxRNTS 1149.20/292.78 (213) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (214) CpxRNTS 1149.20/292.78 (215) IntTrsBoundProof [UPPER BOUND(ID), 85 ms] 1149.20/292.78 (216) CpxRNTS 1149.20/292.78 (217) IntTrsBoundProof [UPPER BOUND(ID), 41 ms] 1149.20/292.78 (218) CpxRNTS 1149.20/292.78 (219) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (220) CpxRNTS 1149.20/292.78 (221) IntTrsBoundProof [UPPER BOUND(ID), 298 ms] 1149.20/292.78 (222) CpxRNTS 1149.20/292.78 (223) IntTrsBoundProof [UPPER BOUND(ID), 93 ms] 1149.20/292.78 (224) CpxRNTS 1149.20/292.78 (225) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (226) CpxRNTS 1149.20/292.78 (227) IntTrsBoundProof [UPPER BOUND(ID), 919 ms] 1149.20/292.78 (228) CpxRNTS 1149.20/292.78 (229) IntTrsBoundProof [UPPER BOUND(ID), 1 ms] 1149.20/292.78 (230) CpxRNTS 1149.20/292.78 (231) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (232) CpxRNTS 1149.20/292.78 (233) IntTrsBoundProof [UPPER BOUND(ID), 766 ms] 1149.20/292.78 (234) CpxRNTS 1149.20/292.78 (235) IntTrsBoundProof [UPPER BOUND(ID), 62 ms] 1149.20/292.78 (236) CpxRNTS 1149.20/292.78 (237) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (238) CpxRNTS 1149.20/292.78 (239) IntTrsBoundProof [UPPER BOUND(ID), 177 ms] 1149.20/292.78 (240) CpxRNTS 1149.20/292.78 (241) IntTrsBoundProof [UPPER BOUND(ID), 44 ms] 1149.20/292.78 (242) CpxRNTS 1149.20/292.78 (243) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (244) CpxRNTS 1149.20/292.78 (245) IntTrsBoundProof [UPPER BOUND(ID), 910 ms] 1149.20/292.78 (246) CpxRNTS 1149.20/292.78 (247) IntTrsBoundProof [UPPER BOUND(ID), 387 ms] 1149.20/292.78 (248) CpxRNTS 1149.20/292.78 (249) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (250) CpxRNTS 1149.20/292.78 (251) IntTrsBoundProof [UPPER BOUND(ID), 227 ms] 1149.20/292.78 (252) CpxRNTS 1149.20/292.78 (253) IntTrsBoundProof [UPPER BOUND(ID), 61 ms] 1149.20/292.78 (254) CpxRNTS 1149.20/292.78 (255) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (256) CpxRNTS 1149.20/292.78 (257) IntTrsBoundProof [UPPER BOUND(ID), 1148 ms] 1149.20/292.78 (258) CpxRNTS 1149.20/292.78 (259) IntTrsBoundProof [UPPER BOUND(ID), 62 ms] 1149.20/292.78 (260) CpxRNTS 1149.20/292.78 (261) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (262) CpxRNTS 1149.20/292.78 (263) IntTrsBoundProof [UPPER BOUND(ID), 5299 ms] 1149.20/292.78 (264) CpxRNTS 1149.20/292.78 (265) IntTrsBoundProof [UPPER BOUND(ID), 484 ms] 1149.20/292.78 (266) CpxRNTS 1149.20/292.78 (267) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (268) CpxRNTS 1149.20/292.78 (269) IntTrsBoundProof [UPPER BOUND(ID), 367 ms] 1149.20/292.78 (270) CpxRNTS 1149.20/292.78 (271) IntTrsBoundProof [UPPER BOUND(ID), 72 ms] 1149.20/292.78 (272) CpxRNTS 1149.20/292.78 (273) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (274) CpxRNTS 1149.20/292.78 (275) IntTrsBoundProof [UPPER BOUND(ID), 790 ms] 1149.20/292.78 (276) CpxRNTS 1149.20/292.78 (277) IntTrsBoundProof [UPPER BOUND(ID), 358 ms] 1149.20/292.78 (278) CpxRNTS 1149.20/292.78 (279) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (280) CpxRNTS 1149.20/292.78 (281) IntTrsBoundProof [UPPER BOUND(ID), 948 ms] 1149.20/292.78 (282) CpxRNTS 1149.20/292.78 (283) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] 1149.20/292.78 (284) CpxRNTS 1149.20/292.78 (285) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (286) CpxRNTS 1149.20/292.78 (287) IntTrsBoundProof [UPPER BOUND(ID), 418 ms] 1149.20/292.78 (288) CpxRNTS 1149.20/292.78 (289) IntTrsBoundProof [UPPER BOUND(ID), 84 ms] 1149.20/292.78 (290) CpxRNTS 1149.20/292.78 (291) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (292) CpxRNTS 1149.20/292.78 (293) IntTrsBoundProof [UPPER BOUND(ID), 175 ms] 1149.20/292.78 (294) CpxRNTS 1149.20/292.78 (295) IntTrsBoundProof [UPPER BOUND(ID), 41 ms] 1149.20/292.78 (296) CpxRNTS 1149.20/292.78 (297) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (298) CpxRNTS 1149.20/292.78 (299) IntTrsBoundProof [UPPER BOUND(ID), 155 ms] 1149.20/292.78 (300) CpxRNTS 1149.20/292.78 (301) IntTrsBoundProof [UPPER BOUND(ID), 52 ms] 1149.20/292.78 (302) CpxRNTS 1149.20/292.78 (303) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (304) CpxRNTS 1149.20/292.78 (305) IntTrsBoundProof [UPPER BOUND(ID), 1047 ms] 1149.20/292.78 (306) CpxRNTS 1149.20/292.78 (307) IntTrsBoundProof [UPPER BOUND(ID), 72 ms] 1149.20/292.78 (308) CpxRNTS 1149.20/292.78 (309) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (310) CpxRNTS 1149.20/292.78 (311) IntTrsBoundProof [UPPER BOUND(ID), 337 ms] 1149.20/292.78 (312) CpxRNTS 1149.20/292.78 (313) IntTrsBoundProof [UPPER BOUND(ID), 72 ms] 1149.20/292.78 (314) CpxRNTS 1149.20/292.78 (315) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (316) CpxRNTS 1149.20/292.78 (317) IntTrsBoundProof [UPPER BOUND(ID), 497 ms] 1149.20/292.78 (318) CpxRNTS 1149.20/292.78 (319) IntTrsBoundProof [UPPER BOUND(ID), 123 ms] 1149.20/292.78 (320) CpxRNTS 1149.20/292.78 (321) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (322) CpxRNTS 1149.20/292.78 (323) IntTrsBoundProof [UPPER BOUND(ID), 897 ms] 1149.20/292.78 (324) CpxRNTS 1149.20/292.78 (325) IntTrsBoundProof [UPPER BOUND(ID), 2 ms] 1149.20/292.78 (326) CpxRNTS 1149.20/292.78 (327) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 1149.20/292.78 (328) CpxRNTS 1149.20/292.78 (329) IntTrsBoundProof [UPPER BOUND(ID), 1087 ms] 1149.20/292.78 (330) CpxRNTS 1149.20/292.78 (331) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] 1149.20/292.78 (332) CpxRNTS 1149.20/292.78 (333) FinalProof [FINISHED, 0 ms] 1149.20/292.78 (334) BOUNDS(1, n^5) 1149.20/292.78 (335) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 1 ms] 1149.20/292.78 (336) TRS for Loop Detection 1149.20/292.78 (337) DecreasingLoopProof [LOWER BOUND(ID), 323 ms] 1149.20/292.78 (338) BEST 1149.20/292.78 (339) proven lower bound 1149.20/292.78 (340) LowerBoundPropagationProof [FINISHED, 0 ms] 1149.20/292.78 (341) BOUNDS(n^1, INF) 1149.20/292.78 (342) TRS for Loop Detection 1149.20/292.78 1149.20/292.78 1149.20/292.78 ---------------------------------------- 1149.20/292.78 1149.20/292.78 (0) 1149.20/292.78 Obligation: 1149.20/292.78 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^5). 1149.20/292.78 1149.20/292.78 1149.20/292.78 The TRS R consists of the following rules: 1149.20/292.78 1149.20/292.78 #abs(#0) -> #0 1149.20/292.78 #abs(#neg(@x)) -> #pos(@x) 1149.20/292.78 #abs(#pos(@x)) -> #pos(@x) 1149.20/292.78 #abs(#s(@x)) -> #pos(#s(@x)) 1149.20/292.78 #equal(@x, @y) -> #eq(@x, @y) 1149.20/292.78 #greater(@x, @y) -> #ckgt(#compare(@x, @y)) 1149.20/292.78 #less(@x, @y) -> #cklt(#compare(@x, @y)) 1149.20/292.78 *(@x, @y) -> #mult(@x, @y) 1149.20/292.78 +(@x, @y) -> #add(@x, @y) 1149.20/292.78 -(@x, @y) -> #sub(@x, @y) 1149.20/292.78 add(@b1, @b2) -> add'(@b1, @b2, #abs(#0)) 1149.20/292.78 add'(@b1, @b2, @r) -> add'#1(@b1, @b2, @r) 1149.20/292.78 add'#1(::(@x, @xs), @b2, @r) -> add'#2(@b2, @r, @x, @xs) 1149.20/292.78 add'#1(nil, @b2, @r) -> nil 1149.20/292.78 add'#2(::(@y, @ys), @r, @x, @xs) -> add'#3(sum(@x, @y, @r), @xs, @ys) 1149.20/292.78 add'#2(nil, @r, @x, @xs) -> nil 1149.20/292.78 add'#3(tuple#2(@z, @r'), @xs, @ys) -> ::(@z, add'(@xs, @ys, @r')) 1149.20/292.78 bitToInt(@b) -> bitToInt'(@b, #abs(#pos(#s(#0)))) 1149.20/292.78 bitToInt'(@b, @n) -> bitToInt'#1(@b, @n) 1149.20/292.78 bitToInt'#1(::(@x, @xs), @n) -> +(*(@x, @n), bitToInt'(@xs, *(@n, #pos(#s(#s(#0)))))) 1149.20/292.78 bitToInt'#1(nil, @n) -> #abs(#0) 1149.20/292.78 compare(@b1, @b2) -> compare#1(@b1, @b2) 1149.20/292.78 compare#1(::(@x, @xs), @b2) -> compare#2(@b2, @x, @xs) 1149.20/292.78 compare#1(nil, @b2) -> #abs(#0) 1149.20/292.78 compare#2(::(@y, @ys), @x, @xs) -> compare#3(compare(@xs, @ys), @x, @y) 1149.20/292.78 compare#2(nil, @x, @xs) -> #abs(#0) 1149.20/292.78 compare#3(@r, @x, @y) -> compare#4(#equal(@r, #0), @r, @x, @y) 1149.20/292.78 compare#4(#false, @r, @x, @y) -> @r 1149.20/292.78 compare#4(#true, @r, @x, @y) -> compare#5(#less(@x, @y), @x, @y) 1149.20/292.78 compare#5(#false, @x, @y) -> compare#6(#greater(@x, @y)) 1149.20/292.78 compare#5(#true, @x, @y) -> -(#0, #pos(#s(#0))) 1149.20/292.78 compare#6(#false) -> #abs(#0) 1149.20/292.78 compare#6(#true) -> #abs(#pos(#s(#0))) 1149.20/292.78 diff(@x, @y, @r) -> tuple#2(mod(+(+(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(-(-(@x, @y), @r), #0))) 1149.20/292.78 diff#1(#false) -> #abs(#0) 1149.20/292.78 diff#1(#true) -> #abs(#pos(#s(#0))) 1149.20/292.78 div(@x, @y) -> #div(@x, @y) 1149.20/292.78 leq(@b1, @b2) -> #less(compare(@b1, @b2), #pos(#s(#0))) 1149.20/292.78 mod(@x, @y) -> -(@x, *(@x, div(@x, @y))) 1149.20/292.78 mult(@b1, @b2) -> mult#1(@b1, @b2) 1149.20/292.78 mult#1(::(@x, @xs), @b2) -> mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) 1149.20/292.78 mult#1(nil, @b2) -> nil 1149.20/292.78 mult#2(@zs, @b2, @x) -> mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) 1149.20/292.78 mult#3(#false, @b2, @zs) -> @zs 1149.20/292.78 mult#3(#true, @b2, @zs) -> add(@b2, @zs) 1149.20/292.78 mult3(@b1, @b2, @b3) -> mult(mult(@b1, @b2), @b2) 1149.20/292.78 sub(@b1, @b2) -> sub#1(sub'(@b1, @b2, #abs(#0))) 1149.20/292.78 sub#1(tuple#2(@b, @_@1)) -> @b 1149.20/292.78 sub'(@b1, @b2, @r) -> sub'#1(@b1, @b2, @r) 1149.20/292.78 sub'#1(::(@x, @xs), @b2, @r) -> sub'#2(@b2, @r, @x, @xs) 1149.20/292.78 sub'#1(nil, @b2, @r) -> tuple#2(nil, @r) 1149.20/292.78 sub'#2(::(@y, @ys), @r, @x, @xs) -> sub'#3(diff(@x, @y, @r), @xs, @ys) 1149.20/292.78 sub'#2(nil, @r, @x, @xs) -> tuple#2(nil, @r) 1149.20/292.78 sub'#3(tuple#2(@z, @r'), @xs, @ys) -> sub'#4(sub'(@xs, @ys, @r'), @z) 1149.20/292.78 sub'#4(tuple#2(@zs, @s), @z) -> tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) 1149.20/292.78 sub'#5(#false, @z, @zs) -> ::(@z, @zs) 1149.20/292.78 sub'#5(#true, @z, @zs) -> ::(#abs(#0), @zs) 1149.20/292.78 sum(@x, @y, @r) -> sum#1(+(+(@x, @y), @r)) 1149.20/292.78 sum#1(@s) -> sum#2(#equal(@s, #0), @s) 1149.20/292.78 sum#2(#false, @s) -> sum#3(#equal(@s, #pos(#s(#0))), @s) 1149.20/292.78 sum#2(#true, @s) -> tuple#2(#abs(#0), #abs(#0)) 1149.20/292.78 sum#3(#false, @s) -> sum#4(#equal(@s, #pos(#s(#s(#0))))) 1149.20/292.78 sum#3(#true, @s) -> tuple#2(#abs(#pos(#s(#0))), #abs(#0)) 1149.20/292.78 sum#4(#false) -> tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) 1149.20/292.78 sum#4(#true) -> tuple#2(#abs(#0), #abs(#pos(#s(#0)))) 1149.20/292.78 1149.20/292.78 The (relative) TRS S consists of the following rules: 1149.20/292.78 1149.20/292.78 #add(#0, @y) -> @y 1149.20/292.78 #add(#neg(#s(#0)), @y) -> #pred(@y) 1149.20/292.78 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) 1149.20/292.78 #add(#pos(#s(#0)), @y) -> #succ(@y) 1149.20/292.78 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) 1149.20/292.78 #and(#false, #false) -> #false 1149.20/292.78 #and(#false, #true) -> #false 1149.20/292.78 #and(#true, #false) -> #false 1149.20/292.78 #and(#true, #true) -> #true 1149.20/292.78 #ckgt(#EQ) -> #false 1149.20/292.78 #ckgt(#GT) -> #true 1149.20/292.78 #ckgt(#LT) -> #false 1149.20/292.78 #cklt(#EQ) -> #false 1149.20/292.78 #cklt(#GT) -> #false 1149.20/292.78 #cklt(#LT) -> #true 1149.20/292.78 #compare(#0, #0) -> #EQ 1149.20/292.78 #compare(#0, #neg(@y)) -> #GT 1149.20/292.78 #compare(#0, #pos(@y)) -> #LT 1149.20/292.78 #compare(#0, #s(@y)) -> #LT 1149.20/292.78 #compare(#neg(@x), #0) -> #LT 1149.20/292.78 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) 1149.20/292.78 #compare(#neg(@x), #pos(@y)) -> #LT 1149.20/292.78 #compare(#pos(@x), #0) -> #GT 1149.20/292.78 #compare(#pos(@x), #neg(@y)) -> #GT 1149.20/292.78 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) 1149.20/292.78 #compare(#s(@x), #0) -> #GT 1149.20/292.78 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) 1149.20/292.78 #div(#0, #0) -> #divByZero 1149.20/292.78 #div(#0, #neg(@y)) -> #0 1149.20/292.78 #div(#0, #pos(@y)) -> #0 1149.20/292.78 #div(#neg(@x), #0) -> #divByZero 1149.20/292.78 #div(#neg(@x), #neg(@y)) -> #pos(#natdiv(@x, @y)) 1149.20/292.78 #div(#neg(@x), #pos(@y)) -> #neg(#natdiv(@x, @y)) 1149.20/292.78 #div(#pos(@x), #0) -> #divByZero 1149.20/292.78 #div(#pos(@x), #neg(@y)) -> #neg(#natdiv(@x, @y)) 1149.20/292.78 #div(#pos(@x), #pos(@y)) -> #pos(#natdiv(@x, @y)) 1149.20/292.78 #eq(#0, #0) -> #true 1149.20/292.78 #eq(#0, #neg(@y)) -> #false 1149.20/292.78 #eq(#0, #pos(@y)) -> #false 1149.20/292.78 #eq(#0, #s(@y)) -> #false 1149.20/292.78 #eq(#neg(@x), #0) -> #false 1149.20/292.78 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) 1149.20/292.78 #eq(#neg(@x), #pos(@y)) -> #false 1149.20/292.78 #eq(#pos(@x), #0) -> #false 1149.20/292.78 #eq(#pos(@x), #neg(@y)) -> #false 1149.20/292.78 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) 1149.20/292.78 #eq(#s(@x), #0) -> #false 1149.20/292.78 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) 1149.20/292.78 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1149.20/292.78 #eq(::(@x_1, @x_2), nil) -> #false 1149.20/292.78 #eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #false 1149.20/292.78 #eq(nil, ::(@y_1, @y_2)) -> #false 1149.20/292.78 #eq(nil, nil) -> #true 1149.20/292.78 #eq(nil, tuple#2(@y_1, @y_2)) -> #false 1149.20/292.78 #eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) -> #false 1149.20/292.78 #eq(tuple#2(@x_1, @x_2), nil) -> #false 1149.20/292.78 #eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1149.20/292.78 #mult(#0, #0) -> #0 1149.20/292.78 #mult(#0, #neg(@y)) -> #0 1149.20/292.78 #mult(#0, #pos(@y)) -> #0 1149.20/292.78 #mult(#neg(@x), #0) -> #0 1149.20/292.78 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) 1149.20/292.78 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) 1149.20/292.78 #mult(#pos(@x), #0) -> #0 1149.20/292.78 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) 1149.20/292.78 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) 1149.20/292.78 #natdiv(#0, #0) -> #divByZero 1149.20/292.78 #natdiv(#s(@x), #s(@y)) -> #s(#natdiv(#natsub(@x, @y), #s(@y))) 1149.20/292.78 #natmult(#0, @y) -> #0 1149.20/292.78 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) 1149.20/292.78 #natsub(@x, #0) -> @x 1149.20/292.78 #natsub(#s(@x), #s(@y)) -> #natsub(@x, @y) 1149.20/292.78 #pred(#0) -> #neg(#s(#0)) 1149.20/292.78 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) 1149.20/292.78 #pred(#pos(#s(#0))) -> #0 1149.20/292.78 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) 1149.20/292.78 #sub(@x, #0) -> @x 1149.20/292.78 #sub(@x, #neg(@y)) -> #add(@x, #pos(@y)) 1149.20/292.78 #sub(@x, #pos(@y)) -> #add(@x, #neg(@y)) 1149.20/292.78 #succ(#0) -> #pos(#s(#0)) 1149.20/292.78 #succ(#neg(#s(#0))) -> #0 1149.20/292.78 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) 1149.20/292.78 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) 1149.20/292.78 1149.20/292.78 Rewrite Strategy: INNERMOST 1149.20/292.78 ---------------------------------------- 1149.20/292.78 1149.20/292.78 (1) STerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) 1149.20/292.78 proved termination of relative rules 1149.20/292.78 ---------------------------------------- 1149.20/292.78 1149.20/292.78 (2) 1149.20/292.78 Obligation: 1149.20/292.78 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^5). 1149.20/292.78 1149.20/292.78 1149.20/292.78 The TRS R consists of the following rules: 1149.20/292.78 1149.20/292.78 #abs(#0) -> #0 1149.20/292.78 #abs(#neg(@x)) -> #pos(@x) 1149.20/292.78 #abs(#pos(@x)) -> #pos(@x) 1149.20/292.78 #abs(#s(@x)) -> #pos(#s(@x)) 1149.20/292.78 #equal(@x, @y) -> #eq(@x, @y) 1149.20/292.78 #greater(@x, @y) -> #ckgt(#compare(@x, @y)) 1149.20/292.78 #less(@x, @y) -> #cklt(#compare(@x, @y)) 1149.20/292.78 *(@x, @y) -> #mult(@x, @y) 1149.20/292.78 +(@x, @y) -> #add(@x, @y) 1149.20/292.78 -(@x, @y) -> #sub(@x, @y) 1149.20/292.78 add(@b1, @b2) -> add'(@b1, @b2, #abs(#0)) 1149.20/292.78 add'(@b1, @b2, @r) -> add'#1(@b1, @b2, @r) 1149.20/292.78 add'#1(::(@x, @xs), @b2, @r) -> add'#2(@b2, @r, @x, @xs) 1149.20/292.78 add'#1(nil, @b2, @r) -> nil 1149.20/292.78 add'#2(::(@y, @ys), @r, @x, @xs) -> add'#3(sum(@x, @y, @r), @xs, @ys) 1149.20/292.78 add'#2(nil, @r, @x, @xs) -> nil 1149.20/292.78 add'#3(tuple#2(@z, @r'), @xs, @ys) -> ::(@z, add'(@xs, @ys, @r')) 1149.20/292.78 bitToInt(@b) -> bitToInt'(@b, #abs(#pos(#s(#0)))) 1149.20/292.78 bitToInt'(@b, @n) -> bitToInt'#1(@b, @n) 1149.20/292.78 bitToInt'#1(::(@x, @xs), @n) -> +(*(@x, @n), bitToInt'(@xs, *(@n, #pos(#s(#s(#0)))))) 1149.20/292.78 bitToInt'#1(nil, @n) -> #abs(#0) 1149.20/292.78 compare(@b1, @b2) -> compare#1(@b1, @b2) 1149.20/292.78 compare#1(::(@x, @xs), @b2) -> compare#2(@b2, @x, @xs) 1149.20/292.78 compare#1(nil, @b2) -> #abs(#0) 1149.20/292.78 compare#2(::(@y, @ys), @x, @xs) -> compare#3(compare(@xs, @ys), @x, @y) 1149.20/292.78 compare#2(nil, @x, @xs) -> #abs(#0) 1149.20/292.78 compare#3(@r, @x, @y) -> compare#4(#equal(@r, #0), @r, @x, @y) 1149.20/292.78 compare#4(#false, @r, @x, @y) -> @r 1149.20/292.78 compare#4(#true, @r, @x, @y) -> compare#5(#less(@x, @y), @x, @y) 1149.20/292.78 compare#5(#false, @x, @y) -> compare#6(#greater(@x, @y)) 1149.20/292.78 compare#5(#true, @x, @y) -> -(#0, #pos(#s(#0))) 1149.20/292.78 compare#6(#false) -> #abs(#0) 1149.20/292.78 compare#6(#true) -> #abs(#pos(#s(#0))) 1149.20/292.78 diff(@x, @y, @r) -> tuple#2(mod(+(+(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(-(-(@x, @y), @r), #0))) 1149.20/292.78 diff#1(#false) -> #abs(#0) 1149.20/292.78 diff#1(#true) -> #abs(#pos(#s(#0))) 1149.20/292.78 div(@x, @y) -> #div(@x, @y) 1149.20/292.78 leq(@b1, @b2) -> #less(compare(@b1, @b2), #pos(#s(#0))) 1149.20/292.78 mod(@x, @y) -> -(@x, *(@x, div(@x, @y))) 1149.20/292.78 mult(@b1, @b2) -> mult#1(@b1, @b2) 1149.20/292.78 mult#1(::(@x, @xs), @b2) -> mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) 1149.20/292.78 mult#1(nil, @b2) -> nil 1149.20/292.78 mult#2(@zs, @b2, @x) -> mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) 1149.20/292.78 mult#3(#false, @b2, @zs) -> @zs 1149.20/292.78 mult#3(#true, @b2, @zs) -> add(@b2, @zs) 1149.20/292.78 mult3(@b1, @b2, @b3) -> mult(mult(@b1, @b2), @b2) 1149.20/292.78 sub(@b1, @b2) -> sub#1(sub'(@b1, @b2, #abs(#0))) 1149.20/292.78 sub#1(tuple#2(@b, @_@1)) -> @b 1149.20/292.78 sub'(@b1, @b2, @r) -> sub'#1(@b1, @b2, @r) 1149.20/292.78 sub'#1(::(@x, @xs), @b2, @r) -> sub'#2(@b2, @r, @x, @xs) 1149.20/292.78 sub'#1(nil, @b2, @r) -> tuple#2(nil, @r) 1149.20/292.78 sub'#2(::(@y, @ys), @r, @x, @xs) -> sub'#3(diff(@x, @y, @r), @xs, @ys) 1149.20/292.78 sub'#2(nil, @r, @x, @xs) -> tuple#2(nil, @r) 1149.20/292.78 sub'#3(tuple#2(@z, @r'), @xs, @ys) -> sub'#4(sub'(@xs, @ys, @r'), @z) 1149.20/292.78 sub'#4(tuple#2(@zs, @s), @z) -> tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) 1149.20/292.78 sub'#5(#false, @z, @zs) -> ::(@z, @zs) 1149.20/292.78 sub'#5(#true, @z, @zs) -> ::(#abs(#0), @zs) 1149.20/292.78 sum(@x, @y, @r) -> sum#1(+(+(@x, @y), @r)) 1149.20/292.78 sum#1(@s) -> sum#2(#equal(@s, #0), @s) 1149.20/292.78 sum#2(#false, @s) -> sum#3(#equal(@s, #pos(#s(#0))), @s) 1149.20/292.78 sum#2(#true, @s) -> tuple#2(#abs(#0), #abs(#0)) 1149.20/292.78 sum#3(#false, @s) -> sum#4(#equal(@s, #pos(#s(#s(#0))))) 1149.20/292.78 sum#3(#true, @s) -> tuple#2(#abs(#pos(#s(#0))), #abs(#0)) 1149.20/292.78 sum#4(#false) -> tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) 1149.20/292.78 sum#4(#true) -> tuple#2(#abs(#0), #abs(#pos(#s(#0)))) 1149.20/292.78 1149.20/292.78 The (relative) TRS S consists of the following rules: 1149.20/292.78 1149.20/292.78 #add(#0, @y) -> @y 1149.20/292.78 #add(#neg(#s(#0)), @y) -> #pred(@y) 1149.20/292.78 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) 1149.20/292.78 #add(#pos(#s(#0)), @y) -> #succ(@y) 1149.20/292.78 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) 1149.20/292.78 #and(#false, #false) -> #false 1149.20/292.78 #and(#false, #true) -> #false 1149.20/292.78 #and(#true, #false) -> #false 1149.20/292.78 #and(#true, #true) -> #true 1149.20/292.78 #ckgt(#EQ) -> #false 1149.20/292.78 #ckgt(#GT) -> #true 1149.20/292.78 #ckgt(#LT) -> #false 1149.20/292.78 #cklt(#EQ) -> #false 1149.20/292.78 #cklt(#GT) -> #false 1149.20/292.78 #cklt(#LT) -> #true 1149.20/292.78 #compare(#0, #0) -> #EQ 1149.20/292.78 #compare(#0, #neg(@y)) -> #GT 1149.20/292.78 #compare(#0, #pos(@y)) -> #LT 1149.20/292.78 #compare(#0, #s(@y)) -> #LT 1149.20/292.78 #compare(#neg(@x), #0) -> #LT 1149.20/292.78 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) 1149.20/292.78 #compare(#neg(@x), #pos(@y)) -> #LT 1149.20/292.78 #compare(#pos(@x), #0) -> #GT 1149.20/292.78 #compare(#pos(@x), #neg(@y)) -> #GT 1149.20/292.78 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) 1149.20/292.78 #compare(#s(@x), #0) -> #GT 1149.20/292.78 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) 1149.20/292.78 #div(#0, #0) -> #divByZero 1149.20/292.78 #div(#0, #neg(@y)) -> #0 1149.20/292.78 #div(#0, #pos(@y)) -> #0 1149.20/292.78 #div(#neg(@x), #0) -> #divByZero 1149.20/292.78 #div(#neg(@x), #neg(@y)) -> #pos(#natdiv(@x, @y)) 1149.20/292.78 #div(#neg(@x), #pos(@y)) -> #neg(#natdiv(@x, @y)) 1149.20/292.78 #div(#pos(@x), #0) -> #divByZero 1149.20/292.78 #div(#pos(@x), #neg(@y)) -> #neg(#natdiv(@x, @y)) 1149.20/292.78 #div(#pos(@x), #pos(@y)) -> #pos(#natdiv(@x, @y)) 1149.20/292.78 #eq(#0, #0) -> #true 1149.20/292.78 #eq(#0, #neg(@y)) -> #false 1149.20/292.78 #eq(#0, #pos(@y)) -> #false 1149.20/292.78 #eq(#0, #s(@y)) -> #false 1149.20/292.78 #eq(#neg(@x), #0) -> #false 1149.20/292.78 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) 1149.20/292.78 #eq(#neg(@x), #pos(@y)) -> #false 1149.20/292.78 #eq(#pos(@x), #0) -> #false 1149.20/292.78 #eq(#pos(@x), #neg(@y)) -> #false 1149.20/292.78 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) 1149.20/292.78 #eq(#s(@x), #0) -> #false 1149.20/292.78 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) 1149.20/292.78 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1149.20/292.78 #eq(::(@x_1, @x_2), nil) -> #false 1149.20/292.78 #eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #false 1149.20/292.78 #eq(nil, ::(@y_1, @y_2)) -> #false 1149.20/292.78 #eq(nil, nil) -> #true 1149.20/292.78 #eq(nil, tuple#2(@y_1, @y_2)) -> #false 1149.20/292.78 #eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) -> #false 1149.20/292.78 #eq(tuple#2(@x_1, @x_2), nil) -> #false 1149.20/292.78 #eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1149.20/292.78 #mult(#0, #0) -> #0 1149.20/292.78 #mult(#0, #neg(@y)) -> #0 1149.20/292.78 #mult(#0, #pos(@y)) -> #0 1149.20/292.78 #mult(#neg(@x), #0) -> #0 1149.20/292.78 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) 1149.20/292.78 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) 1149.20/292.78 #mult(#pos(@x), #0) -> #0 1149.20/292.78 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) 1149.20/292.78 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) 1149.20/292.78 #natdiv(#0, #0) -> #divByZero 1149.20/292.78 #natdiv(#s(@x), #s(@y)) -> #s(#natdiv(#natsub(@x, @y), #s(@y))) 1149.20/292.79 #natmult(#0, @y) -> #0 1149.20/292.79 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) 1149.20/292.79 #natsub(@x, #0) -> @x 1149.20/292.79 #natsub(#s(@x), #s(@y)) -> #natsub(@x, @y) 1149.20/292.79 #pred(#0) -> #neg(#s(#0)) 1149.20/292.79 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) 1149.20/292.79 #pred(#pos(#s(#0))) -> #0 1149.20/292.79 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) 1149.20/292.79 #sub(@x, #0) -> @x 1149.20/292.79 #sub(@x, #neg(@y)) -> #add(@x, #pos(@y)) 1149.20/292.79 #sub(@x, #pos(@y)) -> #add(@x, #neg(@y)) 1149.20/292.79 #succ(#0) -> #pos(#s(#0)) 1149.20/292.79 #succ(#neg(#s(#0))) -> #0 1149.20/292.79 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) 1149.20/292.79 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) 1149.20/292.79 1149.20/292.79 Rewrite Strategy: INNERMOST 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (3) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) 1149.20/292.79 Transformed relative TRS to weighted TRS 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (4) 1149.20/292.79 Obligation: 1149.20/292.79 The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^5). 1149.20/292.79 1149.20/292.79 1149.20/292.79 The TRS R consists of the following rules: 1149.20/292.79 1149.20/292.79 #abs(#0) -> #0 [1] 1149.20/292.79 #abs(#neg(@x)) -> #pos(@x) [1] 1149.20/292.79 #abs(#pos(@x)) -> #pos(@x) [1] 1149.20/292.79 #abs(#s(@x)) -> #pos(#s(@x)) [1] 1149.20/292.79 #equal(@x, @y) -> #eq(@x, @y) [1] 1149.20/292.79 #greater(@x, @y) -> #ckgt(#compare(@x, @y)) [1] 1149.20/292.79 #less(@x, @y) -> #cklt(#compare(@x, @y)) [1] 1149.20/292.79 *(@x, @y) -> #mult(@x, @y) [1] 1149.20/292.79 +(@x, @y) -> #add(@x, @y) [1] 1149.20/292.79 -(@x, @y) -> #sub(@x, @y) [1] 1149.20/292.79 add(@b1, @b2) -> add'(@b1, @b2, #abs(#0)) [1] 1149.20/292.79 add'(@b1, @b2, @r) -> add'#1(@b1, @b2, @r) [1] 1149.20/292.79 add'#1(::(@x, @xs), @b2, @r) -> add'#2(@b2, @r, @x, @xs) [1] 1149.20/292.79 add'#1(nil, @b2, @r) -> nil [1] 1149.20/292.79 add'#2(::(@y, @ys), @r, @x, @xs) -> add'#3(sum(@x, @y, @r), @xs, @ys) [1] 1149.20/292.79 add'#2(nil, @r, @x, @xs) -> nil [1] 1149.20/292.79 add'#3(tuple#2(@z, @r'), @xs, @ys) -> ::(@z, add'(@xs, @ys, @r')) [1] 1149.20/292.79 bitToInt(@b) -> bitToInt'(@b, #abs(#pos(#s(#0)))) [1] 1149.20/292.79 bitToInt'(@b, @n) -> bitToInt'#1(@b, @n) [1] 1149.20/292.79 bitToInt'#1(::(@x, @xs), @n) -> +(*(@x, @n), bitToInt'(@xs, *(@n, #pos(#s(#s(#0)))))) [1] 1149.20/292.79 bitToInt'#1(nil, @n) -> #abs(#0) [1] 1149.20/292.79 compare(@b1, @b2) -> compare#1(@b1, @b2) [1] 1149.20/292.79 compare#1(::(@x, @xs), @b2) -> compare#2(@b2, @x, @xs) [1] 1149.20/292.79 compare#1(nil, @b2) -> #abs(#0) [1] 1149.20/292.79 compare#2(::(@y, @ys), @x, @xs) -> compare#3(compare(@xs, @ys), @x, @y) [1] 1149.20/292.79 compare#2(nil, @x, @xs) -> #abs(#0) [1] 1149.20/292.79 compare#3(@r, @x, @y) -> compare#4(#equal(@r, #0), @r, @x, @y) [1] 1149.20/292.79 compare#4(#false, @r, @x, @y) -> @r [1] 1149.20/292.79 compare#4(#true, @r, @x, @y) -> compare#5(#less(@x, @y), @x, @y) [1] 1149.20/292.79 compare#5(#false, @x, @y) -> compare#6(#greater(@x, @y)) [1] 1149.20/292.79 compare#5(#true, @x, @y) -> -(#0, #pos(#s(#0))) [1] 1149.20/292.79 compare#6(#false) -> #abs(#0) [1] 1149.20/292.79 compare#6(#true) -> #abs(#pos(#s(#0))) [1] 1149.20/292.79 diff(@x, @y, @r) -> tuple#2(mod(+(+(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(-(-(@x, @y), @r), #0))) [1] 1149.20/292.79 diff#1(#false) -> #abs(#0) [1] 1149.20/292.79 diff#1(#true) -> #abs(#pos(#s(#0))) [1] 1149.20/292.79 div(@x, @y) -> #div(@x, @y) [1] 1149.20/292.79 leq(@b1, @b2) -> #less(compare(@b1, @b2), #pos(#s(#0))) [1] 1149.20/292.79 mod(@x, @y) -> -(@x, *(@x, div(@x, @y))) [1] 1149.20/292.79 mult(@b1, @b2) -> mult#1(@b1, @b2) [1] 1149.20/292.79 mult#1(::(@x, @xs), @b2) -> mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) [1] 1149.20/292.79 mult#1(nil, @b2) -> nil [1] 1149.20/292.79 mult#2(@zs, @b2, @x) -> mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) [1] 1149.20/292.79 mult#3(#false, @b2, @zs) -> @zs [1] 1149.20/292.79 mult#3(#true, @b2, @zs) -> add(@b2, @zs) [1] 1149.20/292.79 mult3(@b1, @b2, @b3) -> mult(mult(@b1, @b2), @b2) [1] 1149.20/292.79 sub(@b1, @b2) -> sub#1(sub'(@b1, @b2, #abs(#0))) [1] 1149.20/292.79 sub#1(tuple#2(@b, @_@1)) -> @b [1] 1149.20/292.79 sub'(@b1, @b2, @r) -> sub'#1(@b1, @b2, @r) [1] 1149.20/292.79 sub'#1(::(@x, @xs), @b2, @r) -> sub'#2(@b2, @r, @x, @xs) [1] 1149.20/292.79 sub'#1(nil, @b2, @r) -> tuple#2(nil, @r) [1] 1149.20/292.79 sub'#2(::(@y, @ys), @r, @x, @xs) -> sub'#3(diff(@x, @y, @r), @xs, @ys) [1] 1149.20/292.79 sub'#2(nil, @r, @x, @xs) -> tuple#2(nil, @r) [1] 1149.20/292.79 sub'#3(tuple#2(@z, @r'), @xs, @ys) -> sub'#4(sub'(@xs, @ys, @r'), @z) [1] 1149.20/292.79 sub'#4(tuple#2(@zs, @s), @z) -> tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) [1] 1149.20/292.79 sub'#5(#false, @z, @zs) -> ::(@z, @zs) [1] 1149.20/292.79 sub'#5(#true, @z, @zs) -> ::(#abs(#0), @zs) [1] 1149.20/292.79 sum(@x, @y, @r) -> sum#1(+(+(@x, @y), @r)) [1] 1149.20/292.79 sum#1(@s) -> sum#2(#equal(@s, #0), @s) [1] 1149.20/292.79 sum#2(#false, @s) -> sum#3(#equal(@s, #pos(#s(#0))), @s) [1] 1149.20/292.79 sum#2(#true, @s) -> tuple#2(#abs(#0), #abs(#0)) [1] 1149.20/292.79 sum#3(#false, @s) -> sum#4(#equal(@s, #pos(#s(#s(#0))))) [1] 1149.20/292.79 sum#3(#true, @s) -> tuple#2(#abs(#pos(#s(#0))), #abs(#0)) [1] 1149.20/292.79 sum#4(#false) -> tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) [1] 1149.20/292.79 sum#4(#true) -> tuple#2(#abs(#0), #abs(#pos(#s(#0)))) [1] 1149.20/292.79 #add(#0, @y) -> @y [0] 1149.20/292.79 #add(#neg(#s(#0)), @y) -> #pred(@y) [0] 1149.20/292.79 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) [0] 1149.20/292.79 #add(#pos(#s(#0)), @y) -> #succ(@y) [0] 1149.20/292.79 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) [0] 1149.20/292.79 #and(#false, #false) -> #false [0] 1149.20/292.79 #and(#false, #true) -> #false [0] 1149.20/292.79 #and(#true, #false) -> #false [0] 1149.20/292.79 #and(#true, #true) -> #true [0] 1149.20/292.79 #ckgt(#EQ) -> #false [0] 1149.20/292.79 #ckgt(#GT) -> #true [0] 1149.20/292.79 #ckgt(#LT) -> #false [0] 1149.20/292.79 #cklt(#EQ) -> #false [0] 1149.20/292.79 #cklt(#GT) -> #false [0] 1149.20/292.79 #cklt(#LT) -> #true [0] 1149.20/292.79 #compare(#0, #0) -> #EQ [0] 1149.20/292.79 #compare(#0, #neg(@y)) -> #GT [0] 1149.20/292.79 #compare(#0, #pos(@y)) -> #LT [0] 1149.20/292.79 #compare(#0, #s(@y)) -> #LT [0] 1149.20/292.79 #compare(#neg(@x), #0) -> #LT [0] 1149.20/292.79 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) [0] 1149.20/292.79 #compare(#neg(@x), #pos(@y)) -> #LT [0] 1149.20/292.79 #compare(#pos(@x), #0) -> #GT [0] 1149.20/292.79 #compare(#pos(@x), #neg(@y)) -> #GT [0] 1149.20/292.79 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) [0] 1149.20/292.79 #compare(#s(@x), #0) -> #GT [0] 1149.20/292.79 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) [0] 1149.20/292.79 #div(#0, #0) -> #divByZero [0] 1149.20/292.79 #div(#0, #neg(@y)) -> #0 [0] 1149.20/292.79 #div(#0, #pos(@y)) -> #0 [0] 1149.20/292.79 #div(#neg(@x), #0) -> #divByZero [0] 1149.20/292.79 #div(#neg(@x), #neg(@y)) -> #pos(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#neg(@x), #pos(@y)) -> #neg(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#pos(@x), #0) -> #divByZero [0] 1149.20/292.79 #div(#pos(@x), #neg(@y)) -> #neg(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#pos(@x), #pos(@y)) -> #pos(#natdiv(@x, @y)) [0] 1149.20/292.79 #eq(#0, #0) -> #true [0] 1149.20/292.79 #eq(#0, #neg(@y)) -> #false [0] 1149.20/292.79 #eq(#0, #pos(@y)) -> #false [0] 1149.20/292.79 #eq(#0, #s(@y)) -> #false [0] 1149.20/292.79 #eq(#neg(@x), #0) -> #false [0] 1149.20/292.79 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(#neg(@x), #pos(@y)) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #0) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #neg(@y)) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(#s(@x), #0) -> #false [0] 1149.20/292.79 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1149.20/292.79 #eq(::(@x_1, @x_2), nil) -> #false [0] 1149.20/292.79 #eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(nil, ::(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(nil, nil) -> #true [0] 1149.20/292.79 #eq(nil, tuple#2(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), nil) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1149.20/292.79 #mult(#0, #0) -> #0 [0] 1149.20/292.79 #mult(#0, #neg(@y)) -> #0 [0] 1149.20/292.79 #mult(#0, #pos(@y)) -> #0 [0] 1149.20/292.79 #mult(#neg(@x), #0) -> #0 [0] 1149.20/292.79 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#pos(@x), #0) -> #0 [0] 1149.20/292.79 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) [0] 1149.20/292.79 #natdiv(#0, #0) -> #divByZero [0] 1149.20/292.79 #natdiv(#s(@x), #s(@y)) -> #s(#natdiv(#natsub(@x, @y), #s(@y))) [0] 1149.20/292.79 #natmult(#0, @y) -> #0 [0] 1149.20/292.79 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) [0] 1149.20/292.79 #natsub(@x, #0) -> @x [0] 1149.20/292.79 #natsub(#s(@x), #s(@y)) -> #natsub(@x, @y) [0] 1149.20/292.79 #pred(#0) -> #neg(#s(#0)) [0] 1149.20/292.79 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) [0] 1149.20/292.79 #pred(#pos(#s(#0))) -> #0 [0] 1149.20/292.79 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) [0] 1149.20/292.79 #sub(@x, #0) -> @x [0] 1149.20/292.79 #sub(@x, #neg(@y)) -> #add(@x, #pos(@y)) [0] 1149.20/292.79 #sub(@x, #pos(@y)) -> #add(@x, #neg(@y)) [0] 1149.20/292.79 #succ(#0) -> #pos(#s(#0)) [0] 1149.20/292.79 #succ(#neg(#s(#0))) -> #0 [0] 1149.20/292.79 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) [0] 1149.20/292.79 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) [0] 1149.20/292.79 1149.20/292.79 Rewrite Strategy: INNERMOST 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (5) CpxWeightedTrsRenamingProof (BOTH BOUNDS(ID, ID)) 1149.20/292.79 Renamed defined symbols to avoid conflicts with arithmetic symbols: 1149.20/292.79 1149.20/292.79 * => times 1149.20/292.79 + => plus 1149.20/292.79 - => minus 1149.20/292.79 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (6) 1149.20/292.79 Obligation: 1149.20/292.79 The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^5). 1149.20/292.79 1149.20/292.79 1149.20/292.79 The TRS R consists of the following rules: 1149.20/292.79 1149.20/292.79 #abs(#0) -> #0 [1] 1149.20/292.79 #abs(#neg(@x)) -> #pos(@x) [1] 1149.20/292.79 #abs(#pos(@x)) -> #pos(@x) [1] 1149.20/292.79 #abs(#s(@x)) -> #pos(#s(@x)) [1] 1149.20/292.79 #equal(@x, @y) -> #eq(@x, @y) [1] 1149.20/292.79 #greater(@x, @y) -> #ckgt(#compare(@x, @y)) [1] 1149.20/292.79 #less(@x, @y) -> #cklt(#compare(@x, @y)) [1] 1149.20/292.79 times(@x, @y) -> #mult(@x, @y) [1] 1149.20/292.79 plus(@x, @y) -> #add(@x, @y) [1] 1149.20/292.79 minus(@x, @y) -> #sub(@x, @y) [1] 1149.20/292.79 add(@b1, @b2) -> add'(@b1, @b2, #abs(#0)) [1] 1149.20/292.79 add'(@b1, @b2, @r) -> add'#1(@b1, @b2, @r) [1] 1149.20/292.79 add'#1(::(@x, @xs), @b2, @r) -> add'#2(@b2, @r, @x, @xs) [1] 1149.20/292.79 add'#1(nil, @b2, @r) -> nil [1] 1149.20/292.79 add'#2(::(@y, @ys), @r, @x, @xs) -> add'#3(sum(@x, @y, @r), @xs, @ys) [1] 1149.20/292.79 add'#2(nil, @r, @x, @xs) -> nil [1] 1149.20/292.79 add'#3(tuple#2(@z, @r'), @xs, @ys) -> ::(@z, add'(@xs, @ys, @r')) [1] 1149.20/292.79 bitToInt(@b) -> bitToInt'(@b, #abs(#pos(#s(#0)))) [1] 1149.20/292.79 bitToInt'(@b, @n) -> bitToInt'#1(@b, @n) [1] 1149.20/292.79 bitToInt'#1(::(@x, @xs), @n) -> plus(times(@x, @n), bitToInt'(@xs, times(@n, #pos(#s(#s(#0)))))) [1] 1149.20/292.79 bitToInt'#1(nil, @n) -> #abs(#0) [1] 1149.20/292.79 compare(@b1, @b2) -> compare#1(@b1, @b2) [1] 1149.20/292.79 compare#1(::(@x, @xs), @b2) -> compare#2(@b2, @x, @xs) [1] 1149.20/292.79 compare#1(nil, @b2) -> #abs(#0) [1] 1149.20/292.79 compare#2(::(@y, @ys), @x, @xs) -> compare#3(compare(@xs, @ys), @x, @y) [1] 1149.20/292.79 compare#2(nil, @x, @xs) -> #abs(#0) [1] 1149.20/292.79 compare#3(@r, @x, @y) -> compare#4(#equal(@r, #0), @r, @x, @y) [1] 1149.20/292.79 compare#4(#false, @r, @x, @y) -> @r [1] 1149.20/292.79 compare#4(#true, @r, @x, @y) -> compare#5(#less(@x, @y), @x, @y) [1] 1149.20/292.79 compare#5(#false, @x, @y) -> compare#6(#greater(@x, @y)) [1] 1149.20/292.79 compare#5(#true, @x, @y) -> minus(#0, #pos(#s(#0))) [1] 1149.20/292.79 compare#6(#false) -> #abs(#0) [1] 1149.20/292.79 compare#6(#true) -> #abs(#pos(#s(#0))) [1] 1149.20/292.79 diff(@x, @y, @r) -> tuple#2(mod(plus(plus(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(minus(minus(@x, @y), @r), #0))) [1] 1149.20/292.79 diff#1(#false) -> #abs(#0) [1] 1149.20/292.79 diff#1(#true) -> #abs(#pos(#s(#0))) [1] 1149.20/292.79 div(@x, @y) -> #div(@x, @y) [1] 1149.20/292.79 leq(@b1, @b2) -> #less(compare(@b1, @b2), #pos(#s(#0))) [1] 1149.20/292.79 mod(@x, @y) -> minus(@x, times(@x, div(@x, @y))) [1] 1149.20/292.79 mult(@b1, @b2) -> mult#1(@b1, @b2) [1] 1149.20/292.79 mult#1(::(@x, @xs), @b2) -> mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) [1] 1149.20/292.79 mult#1(nil, @b2) -> nil [1] 1149.20/292.79 mult#2(@zs, @b2, @x) -> mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) [1] 1149.20/292.79 mult#3(#false, @b2, @zs) -> @zs [1] 1149.20/292.79 mult#3(#true, @b2, @zs) -> add(@b2, @zs) [1] 1149.20/292.79 mult3(@b1, @b2, @b3) -> mult(mult(@b1, @b2), @b2) [1] 1149.20/292.79 sub(@b1, @b2) -> sub#1(sub'(@b1, @b2, #abs(#0))) [1] 1149.20/292.79 sub#1(tuple#2(@b, @_@1)) -> @b [1] 1149.20/292.79 sub'(@b1, @b2, @r) -> sub'#1(@b1, @b2, @r) [1] 1149.20/292.79 sub'#1(::(@x, @xs), @b2, @r) -> sub'#2(@b2, @r, @x, @xs) [1] 1149.20/292.79 sub'#1(nil, @b2, @r) -> tuple#2(nil, @r) [1] 1149.20/292.79 sub'#2(::(@y, @ys), @r, @x, @xs) -> sub'#3(diff(@x, @y, @r), @xs, @ys) [1] 1149.20/292.79 sub'#2(nil, @r, @x, @xs) -> tuple#2(nil, @r) [1] 1149.20/292.79 sub'#3(tuple#2(@z, @r'), @xs, @ys) -> sub'#4(sub'(@xs, @ys, @r'), @z) [1] 1149.20/292.79 sub'#4(tuple#2(@zs, @s), @z) -> tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) [1] 1149.20/292.79 sub'#5(#false, @z, @zs) -> ::(@z, @zs) [1] 1149.20/292.79 sub'#5(#true, @z, @zs) -> ::(#abs(#0), @zs) [1] 1149.20/292.79 sum(@x, @y, @r) -> sum#1(plus(plus(@x, @y), @r)) [1] 1149.20/292.79 sum#1(@s) -> sum#2(#equal(@s, #0), @s) [1] 1149.20/292.79 sum#2(#false, @s) -> sum#3(#equal(@s, #pos(#s(#0))), @s) [1] 1149.20/292.79 sum#2(#true, @s) -> tuple#2(#abs(#0), #abs(#0)) [1] 1149.20/292.79 sum#3(#false, @s) -> sum#4(#equal(@s, #pos(#s(#s(#0))))) [1] 1149.20/292.79 sum#3(#true, @s) -> tuple#2(#abs(#pos(#s(#0))), #abs(#0)) [1] 1149.20/292.79 sum#4(#false) -> tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) [1] 1149.20/292.79 sum#4(#true) -> tuple#2(#abs(#0), #abs(#pos(#s(#0)))) [1] 1149.20/292.79 #add(#0, @y) -> @y [0] 1149.20/292.79 #add(#neg(#s(#0)), @y) -> #pred(@y) [0] 1149.20/292.79 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) [0] 1149.20/292.79 #add(#pos(#s(#0)), @y) -> #succ(@y) [0] 1149.20/292.79 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) [0] 1149.20/292.79 #and(#false, #false) -> #false [0] 1149.20/292.79 #and(#false, #true) -> #false [0] 1149.20/292.79 #and(#true, #false) -> #false [0] 1149.20/292.79 #and(#true, #true) -> #true [0] 1149.20/292.79 #ckgt(#EQ) -> #false [0] 1149.20/292.79 #ckgt(#GT) -> #true [0] 1149.20/292.79 #ckgt(#LT) -> #false [0] 1149.20/292.79 #cklt(#EQ) -> #false [0] 1149.20/292.79 #cklt(#GT) -> #false [0] 1149.20/292.79 #cklt(#LT) -> #true [0] 1149.20/292.79 #compare(#0, #0) -> #EQ [0] 1149.20/292.79 #compare(#0, #neg(@y)) -> #GT [0] 1149.20/292.79 #compare(#0, #pos(@y)) -> #LT [0] 1149.20/292.79 #compare(#0, #s(@y)) -> #LT [0] 1149.20/292.79 #compare(#neg(@x), #0) -> #LT [0] 1149.20/292.79 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) [0] 1149.20/292.79 #compare(#neg(@x), #pos(@y)) -> #LT [0] 1149.20/292.79 #compare(#pos(@x), #0) -> #GT [0] 1149.20/292.79 #compare(#pos(@x), #neg(@y)) -> #GT [0] 1149.20/292.79 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) [0] 1149.20/292.79 #compare(#s(@x), #0) -> #GT [0] 1149.20/292.79 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) [0] 1149.20/292.79 #div(#0, #0) -> #divByZero [0] 1149.20/292.79 #div(#0, #neg(@y)) -> #0 [0] 1149.20/292.79 #div(#0, #pos(@y)) -> #0 [0] 1149.20/292.79 #div(#neg(@x), #0) -> #divByZero [0] 1149.20/292.79 #div(#neg(@x), #neg(@y)) -> #pos(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#neg(@x), #pos(@y)) -> #neg(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#pos(@x), #0) -> #divByZero [0] 1149.20/292.79 #div(#pos(@x), #neg(@y)) -> #neg(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#pos(@x), #pos(@y)) -> #pos(#natdiv(@x, @y)) [0] 1149.20/292.79 #eq(#0, #0) -> #true [0] 1149.20/292.79 #eq(#0, #neg(@y)) -> #false [0] 1149.20/292.79 #eq(#0, #pos(@y)) -> #false [0] 1149.20/292.79 #eq(#0, #s(@y)) -> #false [0] 1149.20/292.79 #eq(#neg(@x), #0) -> #false [0] 1149.20/292.79 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(#neg(@x), #pos(@y)) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #0) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #neg(@y)) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(#s(@x), #0) -> #false [0] 1149.20/292.79 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1149.20/292.79 #eq(::(@x_1, @x_2), nil) -> #false [0] 1149.20/292.79 #eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(nil, ::(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(nil, nil) -> #true [0] 1149.20/292.79 #eq(nil, tuple#2(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), nil) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1149.20/292.79 #mult(#0, #0) -> #0 [0] 1149.20/292.79 #mult(#0, #neg(@y)) -> #0 [0] 1149.20/292.79 #mult(#0, #pos(@y)) -> #0 [0] 1149.20/292.79 #mult(#neg(@x), #0) -> #0 [0] 1149.20/292.79 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#pos(@x), #0) -> #0 [0] 1149.20/292.79 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) [0] 1149.20/292.79 #natdiv(#0, #0) -> #divByZero [0] 1149.20/292.79 #natdiv(#s(@x), #s(@y)) -> #s(#natdiv(#natsub(@x, @y), #s(@y))) [0] 1149.20/292.79 #natmult(#0, @y) -> #0 [0] 1149.20/292.79 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) [0] 1149.20/292.79 #natsub(@x, #0) -> @x [0] 1149.20/292.79 #natsub(#s(@x), #s(@y)) -> #natsub(@x, @y) [0] 1149.20/292.79 #pred(#0) -> #neg(#s(#0)) [0] 1149.20/292.79 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) [0] 1149.20/292.79 #pred(#pos(#s(#0))) -> #0 [0] 1149.20/292.79 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) [0] 1149.20/292.79 #sub(@x, #0) -> @x [0] 1149.20/292.79 #sub(@x, #neg(@y)) -> #add(@x, #pos(@y)) [0] 1149.20/292.79 #sub(@x, #pos(@y)) -> #add(@x, #neg(@y)) [0] 1149.20/292.79 #succ(#0) -> #pos(#s(#0)) [0] 1149.20/292.79 #succ(#neg(#s(#0))) -> #0 [0] 1149.20/292.79 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) [0] 1149.20/292.79 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) [0] 1149.20/292.79 1149.20/292.79 Rewrite Strategy: INNERMOST 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 1149.20/292.79 Infered types. 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (8) 1149.20/292.79 Obligation: 1149.20/292.79 Runtime Complexity Weighted TRS with Types. 1149.20/292.79 The TRS R consists of the following rules: 1149.20/292.79 1149.20/292.79 #abs(#0) -> #0 [1] 1149.20/292.79 #abs(#neg(@x)) -> #pos(@x) [1] 1149.20/292.79 #abs(#pos(@x)) -> #pos(@x) [1] 1149.20/292.79 #abs(#s(@x)) -> #pos(#s(@x)) [1] 1149.20/292.79 #equal(@x, @y) -> #eq(@x, @y) [1] 1149.20/292.79 #greater(@x, @y) -> #ckgt(#compare(@x, @y)) [1] 1149.20/292.79 #less(@x, @y) -> #cklt(#compare(@x, @y)) [1] 1149.20/292.79 times(@x, @y) -> #mult(@x, @y) [1] 1149.20/292.79 plus(@x, @y) -> #add(@x, @y) [1] 1149.20/292.79 minus(@x, @y) -> #sub(@x, @y) [1] 1149.20/292.79 add(@b1, @b2) -> add'(@b1, @b2, #abs(#0)) [1] 1149.20/292.79 add'(@b1, @b2, @r) -> add'#1(@b1, @b2, @r) [1] 1149.20/292.79 add'#1(::(@x, @xs), @b2, @r) -> add'#2(@b2, @r, @x, @xs) [1] 1149.20/292.79 add'#1(nil, @b2, @r) -> nil [1] 1149.20/292.79 add'#2(::(@y, @ys), @r, @x, @xs) -> add'#3(sum(@x, @y, @r), @xs, @ys) [1] 1149.20/292.79 add'#2(nil, @r, @x, @xs) -> nil [1] 1149.20/292.79 add'#3(tuple#2(@z, @r'), @xs, @ys) -> ::(@z, add'(@xs, @ys, @r')) [1] 1149.20/292.79 bitToInt(@b) -> bitToInt'(@b, #abs(#pos(#s(#0)))) [1] 1149.20/292.79 bitToInt'(@b, @n) -> bitToInt'#1(@b, @n) [1] 1149.20/292.79 bitToInt'#1(::(@x, @xs), @n) -> plus(times(@x, @n), bitToInt'(@xs, times(@n, #pos(#s(#s(#0)))))) [1] 1149.20/292.79 bitToInt'#1(nil, @n) -> #abs(#0) [1] 1149.20/292.79 compare(@b1, @b2) -> compare#1(@b1, @b2) [1] 1149.20/292.79 compare#1(::(@x, @xs), @b2) -> compare#2(@b2, @x, @xs) [1] 1149.20/292.79 compare#1(nil, @b2) -> #abs(#0) [1] 1149.20/292.79 compare#2(::(@y, @ys), @x, @xs) -> compare#3(compare(@xs, @ys), @x, @y) [1] 1149.20/292.79 compare#2(nil, @x, @xs) -> #abs(#0) [1] 1149.20/292.79 compare#3(@r, @x, @y) -> compare#4(#equal(@r, #0), @r, @x, @y) [1] 1149.20/292.79 compare#4(#false, @r, @x, @y) -> @r [1] 1149.20/292.79 compare#4(#true, @r, @x, @y) -> compare#5(#less(@x, @y), @x, @y) [1] 1149.20/292.79 compare#5(#false, @x, @y) -> compare#6(#greater(@x, @y)) [1] 1149.20/292.79 compare#5(#true, @x, @y) -> minus(#0, #pos(#s(#0))) [1] 1149.20/292.79 compare#6(#false) -> #abs(#0) [1] 1149.20/292.79 compare#6(#true) -> #abs(#pos(#s(#0))) [1] 1149.20/292.79 diff(@x, @y, @r) -> tuple#2(mod(plus(plus(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(minus(minus(@x, @y), @r), #0))) [1] 1149.20/292.79 diff#1(#false) -> #abs(#0) [1] 1149.20/292.79 diff#1(#true) -> #abs(#pos(#s(#0))) [1] 1149.20/292.79 div(@x, @y) -> #div(@x, @y) [1] 1149.20/292.79 leq(@b1, @b2) -> #less(compare(@b1, @b2), #pos(#s(#0))) [1] 1149.20/292.79 mod(@x, @y) -> minus(@x, times(@x, div(@x, @y))) [1] 1149.20/292.79 mult(@b1, @b2) -> mult#1(@b1, @b2) [1] 1149.20/292.79 mult#1(::(@x, @xs), @b2) -> mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) [1] 1149.20/292.79 mult#1(nil, @b2) -> nil [1] 1149.20/292.79 mult#2(@zs, @b2, @x) -> mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) [1] 1149.20/292.79 mult#3(#false, @b2, @zs) -> @zs [1] 1149.20/292.79 mult#3(#true, @b2, @zs) -> add(@b2, @zs) [1] 1149.20/292.79 mult3(@b1, @b2, @b3) -> mult(mult(@b1, @b2), @b2) [1] 1149.20/292.79 sub(@b1, @b2) -> sub#1(sub'(@b1, @b2, #abs(#0))) [1] 1149.20/292.79 sub#1(tuple#2(@b, @_@1)) -> @b [1] 1149.20/292.79 sub'(@b1, @b2, @r) -> sub'#1(@b1, @b2, @r) [1] 1149.20/292.79 sub'#1(::(@x, @xs), @b2, @r) -> sub'#2(@b2, @r, @x, @xs) [1] 1149.20/292.79 sub'#1(nil, @b2, @r) -> tuple#2(nil, @r) [1] 1149.20/292.79 sub'#2(::(@y, @ys), @r, @x, @xs) -> sub'#3(diff(@x, @y, @r), @xs, @ys) [1] 1149.20/292.79 sub'#2(nil, @r, @x, @xs) -> tuple#2(nil, @r) [1] 1149.20/292.79 sub'#3(tuple#2(@z, @r'), @xs, @ys) -> sub'#4(sub'(@xs, @ys, @r'), @z) [1] 1149.20/292.79 sub'#4(tuple#2(@zs, @s), @z) -> tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) [1] 1149.20/292.79 sub'#5(#false, @z, @zs) -> ::(@z, @zs) [1] 1149.20/292.79 sub'#5(#true, @z, @zs) -> ::(#abs(#0), @zs) [1] 1149.20/292.79 sum(@x, @y, @r) -> sum#1(plus(plus(@x, @y), @r)) [1] 1149.20/292.79 sum#1(@s) -> sum#2(#equal(@s, #0), @s) [1] 1149.20/292.79 sum#2(#false, @s) -> sum#3(#equal(@s, #pos(#s(#0))), @s) [1] 1149.20/292.79 sum#2(#true, @s) -> tuple#2(#abs(#0), #abs(#0)) [1] 1149.20/292.79 sum#3(#false, @s) -> sum#4(#equal(@s, #pos(#s(#s(#0))))) [1] 1149.20/292.79 sum#3(#true, @s) -> tuple#2(#abs(#pos(#s(#0))), #abs(#0)) [1] 1149.20/292.79 sum#4(#false) -> tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) [1] 1149.20/292.79 sum#4(#true) -> tuple#2(#abs(#0), #abs(#pos(#s(#0)))) [1] 1149.20/292.79 #add(#0, @y) -> @y [0] 1149.20/292.79 #add(#neg(#s(#0)), @y) -> #pred(@y) [0] 1149.20/292.79 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) [0] 1149.20/292.79 #add(#pos(#s(#0)), @y) -> #succ(@y) [0] 1149.20/292.79 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) [0] 1149.20/292.79 #and(#false, #false) -> #false [0] 1149.20/292.79 #and(#false, #true) -> #false [0] 1149.20/292.79 #and(#true, #false) -> #false [0] 1149.20/292.79 #and(#true, #true) -> #true [0] 1149.20/292.79 #ckgt(#EQ) -> #false [0] 1149.20/292.79 #ckgt(#GT) -> #true [0] 1149.20/292.79 #ckgt(#LT) -> #false [0] 1149.20/292.79 #cklt(#EQ) -> #false [0] 1149.20/292.79 #cklt(#GT) -> #false [0] 1149.20/292.79 #cklt(#LT) -> #true [0] 1149.20/292.79 #compare(#0, #0) -> #EQ [0] 1149.20/292.79 #compare(#0, #neg(@y)) -> #GT [0] 1149.20/292.79 #compare(#0, #pos(@y)) -> #LT [0] 1149.20/292.79 #compare(#0, #s(@y)) -> #LT [0] 1149.20/292.79 #compare(#neg(@x), #0) -> #LT [0] 1149.20/292.79 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) [0] 1149.20/292.79 #compare(#neg(@x), #pos(@y)) -> #LT [0] 1149.20/292.79 #compare(#pos(@x), #0) -> #GT [0] 1149.20/292.79 #compare(#pos(@x), #neg(@y)) -> #GT [0] 1149.20/292.79 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) [0] 1149.20/292.79 #compare(#s(@x), #0) -> #GT [0] 1149.20/292.79 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) [0] 1149.20/292.79 #div(#0, #0) -> #divByZero [0] 1149.20/292.79 #div(#0, #neg(@y)) -> #0 [0] 1149.20/292.79 #div(#0, #pos(@y)) -> #0 [0] 1149.20/292.79 #div(#neg(@x), #0) -> #divByZero [0] 1149.20/292.79 #div(#neg(@x), #neg(@y)) -> #pos(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#neg(@x), #pos(@y)) -> #neg(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#pos(@x), #0) -> #divByZero [0] 1149.20/292.79 #div(#pos(@x), #neg(@y)) -> #neg(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#pos(@x), #pos(@y)) -> #pos(#natdiv(@x, @y)) [0] 1149.20/292.79 #eq(#0, #0) -> #true [0] 1149.20/292.79 #eq(#0, #neg(@y)) -> #false [0] 1149.20/292.79 #eq(#0, #pos(@y)) -> #false [0] 1149.20/292.79 #eq(#0, #s(@y)) -> #false [0] 1149.20/292.79 #eq(#neg(@x), #0) -> #false [0] 1149.20/292.79 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(#neg(@x), #pos(@y)) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #0) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #neg(@y)) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(#s(@x), #0) -> #false [0] 1149.20/292.79 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1149.20/292.79 #eq(::(@x_1, @x_2), nil) -> #false [0] 1149.20/292.79 #eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(nil, ::(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(nil, nil) -> #true [0] 1149.20/292.79 #eq(nil, tuple#2(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), nil) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1149.20/292.79 #mult(#0, #0) -> #0 [0] 1149.20/292.79 #mult(#0, #neg(@y)) -> #0 [0] 1149.20/292.79 #mult(#0, #pos(@y)) -> #0 [0] 1149.20/292.79 #mult(#neg(@x), #0) -> #0 [0] 1149.20/292.79 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#pos(@x), #0) -> #0 [0] 1149.20/292.79 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) [0] 1149.20/292.79 #natdiv(#0, #0) -> #divByZero [0] 1149.20/292.79 #natdiv(#s(@x), #s(@y)) -> #s(#natdiv(#natsub(@x, @y), #s(@y))) [0] 1149.20/292.79 #natmult(#0, @y) -> #0 [0] 1149.20/292.79 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) [0] 1149.20/292.79 #natsub(@x, #0) -> @x [0] 1149.20/292.79 #natsub(#s(@x), #s(@y)) -> #natsub(@x, @y) [0] 1149.20/292.79 #pred(#0) -> #neg(#s(#0)) [0] 1149.20/292.79 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) [0] 1149.20/292.79 #pred(#pos(#s(#0))) -> #0 [0] 1149.20/292.79 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) [0] 1149.20/292.79 #sub(@x, #0) -> @x [0] 1149.20/292.79 #sub(@x, #neg(@y)) -> #add(@x, #pos(@y)) [0] 1149.20/292.79 #sub(@x, #pos(@y)) -> #add(@x, #neg(@y)) [0] 1149.20/292.79 #succ(#0) -> #pos(#s(#0)) [0] 1149.20/292.79 #succ(#neg(#s(#0))) -> #0 [0] 1149.20/292.79 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) [0] 1149.20/292.79 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) [0] 1149.20/292.79 1149.20/292.79 The TRS has the following type information: 1149.20/292.79 #abs :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #0 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #neg :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #pos :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #s :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #equal :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #false:#true 1149.20/292.79 #eq :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #false:#true 1149.20/292.79 #greater :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #false:#true 1149.20/292.79 #ckgt :: #EQ:#GT:#LT -> #false:#true 1149.20/292.79 #compare :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #EQ:#GT:#LT 1149.20/292.79 #less :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #false:#true 1149.20/292.79 #cklt :: #EQ:#GT:#LT -> #false:#true 1149.20/292.79 times :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #mult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 plus :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #add :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 minus :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #sub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 add :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 add' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 add'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 :: :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 add'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 nil :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 add'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sum :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 tuple#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 bitToInt :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 bitToInt' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 bitToInt'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 compare :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 compare#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 compare#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 compare#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 compare#4 :: #false:#true -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #false :: #false:#true 1149.20/292.79 #true :: #false:#true 1149.20/292.79 compare#5 :: #false:#true -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 compare#6 :: #false:#true -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 diff :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 mod :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 diff#1 :: #false:#true -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 div :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #div :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 leq :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #false:#true 1149.20/292.79 mult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 mult#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 mult#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 mult#3 :: #false:#true -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 mult3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> a -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sub#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sub' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sub'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sub'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sub'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sub'#4 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sub'#5 :: #false:#true -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sum#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sum#2 :: #false:#true -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sum#3 :: #false:#true -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 sum#4 :: #false:#true -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #pred :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #succ :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #and :: #false:#true -> #false:#true -> #false:#true 1149.20/292.79 #EQ :: #EQ:#GT:#LT 1149.20/292.79 #GT :: #EQ:#GT:#LT 1149.20/292.79 #LT :: #EQ:#GT:#LT 1149.20/292.79 #divByZero :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #natdiv :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #natmult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 #natsub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero 1149.20/292.79 1149.20/292.79 Rewrite Strategy: INNERMOST 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (9) CompletionProof (UPPER BOUND(ID)) 1149.20/292.79 The transformation into a RNTS is sound, since: 1149.20/292.79 1149.20/292.79 (a) The obligation is a constructor system where every type has a constant constructor, 1149.20/292.79 1149.20/292.79 (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: 1149.20/292.79 1149.20/292.79 bitToInt_1 1149.20/292.79 leq_2 1149.20/292.79 mult3_3 1149.20/292.79 sub_2 1149.20/292.79 sub#1_1 1149.20/292.79 1149.20/292.79 (c) The following functions are completely defined: 1149.20/292.79 1149.20/292.79 mult_2 1149.20/292.79 plus_2 1149.20/292.79 #equal_2 1149.20/292.79 #abs_1 1149.20/292.79 times_2 1149.20/292.79 bitToInt'_2 1149.20/292.79 div_2 1149.20/292.79 diff_3 1149.20/292.79 compare_2 1149.20/292.79 #less_2 1149.20/292.79 sum_3 1149.20/292.79 #greater_2 1149.20/292.79 minus_2 1149.20/292.79 sub'_3 1149.20/292.79 bitToInt'#1_2 1149.20/292.79 sum#1_1 1149.20/292.79 sub'#1_3 1149.20/292.79 sum#2_2 1149.20/292.79 mod_2 1149.20/292.79 diff#1_1 1149.20/292.79 compare#1_2 1149.20/292.79 mult#1_2 1149.20/292.79 sub'#2_4 1149.20/292.79 sum#3_2 1149.20/292.79 sum#4_1 1149.20/292.79 mult#2_3 1149.20/292.79 compare#2_3 1149.20/292.79 sub'#3_3 1149.20/292.79 mult#3_3 1149.20/292.79 sub'#4_2 1149.20/292.79 compare#3_3 1149.20/292.79 add_2 1149.20/292.79 sub'#5_3 1149.20/292.79 add'_3 1149.20/292.79 compare#4_4 1149.20/292.79 add'#1_3 1149.20/292.79 compare#5_3 1149.20/292.79 compare#6_1 1149.20/292.79 add'#2_4 1149.20/292.79 add'#3_3 1149.20/292.79 #add_2 1149.20/292.79 #and_2 1149.20/292.79 #ckgt_1 1149.20/292.79 #cklt_1 1149.20/292.79 #compare_2 1149.20/292.79 #div_2 1149.20/292.79 #eq_2 1149.20/292.79 #mult_2 1149.20/292.79 #natdiv_2 1149.20/292.79 #natmult_2 1149.20/292.79 #natsub_2 1149.20/292.79 #pred_1 1149.20/292.79 #sub_2 1149.20/292.79 #succ_1 1149.20/292.79 1149.20/292.79 Due to the following rules being added: 1149.20/292.79 1149.20/292.79 #add(v0, v1) -> null_#add [0] 1149.20/292.79 #and(v0, v1) -> null_#and [0] 1149.20/292.79 #ckgt(v0) -> null_#ckgt [0] 1149.20/292.79 #cklt(v0) -> null_#cklt [0] 1149.20/292.79 #compare(v0, v1) -> null_#compare [0] 1149.20/292.79 #div(v0, v1) -> null_#div [0] 1149.20/292.79 #eq(v0, v1) -> null_#eq [0] 1149.20/292.79 #mult(v0, v1) -> null_#mult [0] 1149.20/292.79 #natdiv(v0, v1) -> null_#natdiv [0] 1149.20/292.79 #natmult(v0, v1) -> null_#natmult [0] 1149.20/292.79 #natsub(v0, v1) -> null_#natsub [0] 1149.20/292.79 #pred(v0) -> null_#pred [0] 1149.20/292.79 #sub(v0, v1) -> null_#sub [0] 1149.20/292.79 #succ(v0) -> null_#succ [0] 1149.20/292.79 #abs(v0) -> null_#abs [0] 1149.20/292.79 bitToInt'#1(v0, v1) -> null_bitToInt'#1 [0] 1149.20/292.79 sub'#1(v0, v1, v2) -> null_sub'#1 [0] 1149.20/292.79 sum#2(v0, v1) -> null_sum#2 [0] 1149.20/292.79 diff#1(v0) -> null_diff#1 [0] 1149.20/292.79 compare#1(v0, v1) -> null_compare#1 [0] 1149.20/292.79 mult#1(v0, v1) -> null_mult#1 [0] 1149.20/292.79 sub'#2(v0, v1, v2, v3) -> null_sub'#2 [0] 1149.20/292.79 sum#3(v0, v1) -> null_sum#3 [0] 1149.20/292.79 sum#4(v0) -> null_sum#4 [0] 1149.20/292.79 compare#2(v0, v1, v2) -> null_compare#2 [0] 1149.20/292.79 sub'#3(v0, v1, v2) -> null_sub'#3 [0] 1149.20/292.79 mult#3(v0, v1, v2) -> null_mult#3 [0] 1149.20/292.79 sub'#4(v0, v1) -> null_sub'#4 [0] 1149.20/292.79 sub'#5(v0, v1, v2) -> null_sub'#5 [0] 1149.20/292.79 compare#4(v0, v1, v2, v3) -> null_compare#4 [0] 1149.20/292.79 add'#1(v0, v1, v2) -> null_add'#1 [0] 1149.20/292.79 compare#5(v0, v1, v2) -> null_compare#5 [0] 1149.20/292.79 compare#6(v0) -> null_compare#6 [0] 1149.20/292.79 add'#2(v0, v1, v2, v3) -> null_add'#2 [0] 1149.20/292.79 add'#3(v0, v1, v2) -> null_add'#3 [0] 1149.20/292.79 1149.20/292.79 And the following fresh constants: null_#add, null_#and, null_#ckgt, null_#cklt, null_#compare, null_#div, null_#eq, null_#mult, null_#natdiv, null_#natmult, null_#natsub, null_#pred, null_#sub, null_#succ, null_#abs, null_bitToInt'#1, null_sub'#1, null_sum#2, null_diff#1, null_compare#1, null_mult#1, null_sub'#2, null_sum#3, null_sum#4, null_compare#2, null_sub'#3, null_mult#3, null_sub'#4, null_sub'#5, null_compare#4, null_add'#1, null_compare#5, null_compare#6, null_add'#2, null_add'#3, const 1149.20/292.79 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (10) 1149.20/292.79 Obligation: 1149.20/292.79 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 1149.20/292.79 1149.20/292.79 Runtime Complexity Weighted TRS with Types. 1149.20/292.79 The TRS R consists of the following rules: 1149.20/292.79 1149.20/292.79 #abs(#0) -> #0 [1] 1149.20/292.79 #abs(#neg(@x)) -> #pos(@x) [1] 1149.20/292.79 #abs(#pos(@x)) -> #pos(@x) [1] 1149.20/292.79 #abs(#s(@x)) -> #pos(#s(@x)) [1] 1149.20/292.79 #equal(@x, @y) -> #eq(@x, @y) [1] 1149.20/292.79 #greater(@x, @y) -> #ckgt(#compare(@x, @y)) [1] 1149.20/292.79 #less(@x, @y) -> #cklt(#compare(@x, @y)) [1] 1149.20/292.79 times(@x, @y) -> #mult(@x, @y) [1] 1149.20/292.79 plus(@x, @y) -> #add(@x, @y) [1] 1149.20/292.79 minus(@x, @y) -> #sub(@x, @y) [1] 1149.20/292.79 add(@b1, @b2) -> add'(@b1, @b2, #abs(#0)) [1] 1149.20/292.79 add'(@b1, @b2, @r) -> add'#1(@b1, @b2, @r) [1] 1149.20/292.79 add'#1(::(@x, @xs), @b2, @r) -> add'#2(@b2, @r, @x, @xs) [1] 1149.20/292.79 add'#1(nil, @b2, @r) -> nil [1] 1149.20/292.79 add'#2(::(@y, @ys), @r, @x, @xs) -> add'#3(sum(@x, @y, @r), @xs, @ys) [1] 1149.20/292.79 add'#2(nil, @r, @x, @xs) -> nil [1] 1149.20/292.79 add'#3(tuple#2(@z, @r'), @xs, @ys) -> ::(@z, add'(@xs, @ys, @r')) [1] 1149.20/292.79 bitToInt(@b) -> bitToInt'(@b, #abs(#pos(#s(#0)))) [1] 1149.20/292.79 bitToInt'(@b, @n) -> bitToInt'#1(@b, @n) [1] 1149.20/292.79 bitToInt'#1(::(@x, @xs), @n) -> plus(times(@x, @n), bitToInt'(@xs, times(@n, #pos(#s(#s(#0)))))) [1] 1149.20/292.79 bitToInt'#1(nil, @n) -> #abs(#0) [1] 1149.20/292.79 compare(@b1, @b2) -> compare#1(@b1, @b2) [1] 1149.20/292.79 compare#1(::(@x, @xs), @b2) -> compare#2(@b2, @x, @xs) [1] 1149.20/292.79 compare#1(nil, @b2) -> #abs(#0) [1] 1149.20/292.79 compare#2(::(@y, @ys), @x, @xs) -> compare#3(compare(@xs, @ys), @x, @y) [1] 1149.20/292.79 compare#2(nil, @x, @xs) -> #abs(#0) [1] 1149.20/292.79 compare#3(@r, @x, @y) -> compare#4(#equal(@r, #0), @r, @x, @y) [1] 1149.20/292.79 compare#4(#false, @r, @x, @y) -> @r [1] 1149.20/292.79 compare#4(#true, @r, @x, @y) -> compare#5(#less(@x, @y), @x, @y) [1] 1149.20/292.79 compare#5(#false, @x, @y) -> compare#6(#greater(@x, @y)) [1] 1149.20/292.79 compare#5(#true, @x, @y) -> minus(#0, #pos(#s(#0))) [1] 1149.20/292.79 compare#6(#false) -> #abs(#0) [1] 1149.20/292.79 compare#6(#true) -> #abs(#pos(#s(#0))) [1] 1149.20/292.79 diff(@x, @y, @r) -> tuple#2(mod(plus(plus(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(minus(minus(@x, @y), @r), #0))) [1] 1149.20/292.79 diff#1(#false) -> #abs(#0) [1] 1149.20/292.79 diff#1(#true) -> #abs(#pos(#s(#0))) [1] 1149.20/292.79 div(@x, @y) -> #div(@x, @y) [1] 1149.20/292.79 leq(@b1, @b2) -> #less(compare(@b1, @b2), #pos(#s(#0))) [1] 1149.20/292.79 mod(@x, @y) -> minus(@x, times(@x, div(@x, @y))) [1] 1149.20/292.79 mult(@b1, @b2) -> mult#1(@b1, @b2) [1] 1149.20/292.79 mult#1(::(@x, @xs), @b2) -> mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) [1] 1149.20/292.79 mult#1(nil, @b2) -> nil [1] 1149.20/292.79 mult#2(@zs, @b2, @x) -> mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) [1] 1149.20/292.79 mult#3(#false, @b2, @zs) -> @zs [1] 1149.20/292.79 mult#3(#true, @b2, @zs) -> add(@b2, @zs) [1] 1149.20/292.79 mult3(@b1, @b2, @b3) -> mult(mult(@b1, @b2), @b2) [1] 1149.20/292.79 sub(@b1, @b2) -> sub#1(sub'(@b1, @b2, #abs(#0))) [1] 1149.20/292.79 sub#1(tuple#2(@b, @_@1)) -> @b [1] 1149.20/292.79 sub'(@b1, @b2, @r) -> sub'#1(@b1, @b2, @r) [1] 1149.20/292.79 sub'#1(::(@x, @xs), @b2, @r) -> sub'#2(@b2, @r, @x, @xs) [1] 1149.20/292.79 sub'#1(nil, @b2, @r) -> tuple#2(nil, @r) [1] 1149.20/292.79 sub'#2(::(@y, @ys), @r, @x, @xs) -> sub'#3(diff(@x, @y, @r), @xs, @ys) [1] 1149.20/292.79 sub'#2(nil, @r, @x, @xs) -> tuple#2(nil, @r) [1] 1149.20/292.79 sub'#3(tuple#2(@z, @r'), @xs, @ys) -> sub'#4(sub'(@xs, @ys, @r'), @z) [1] 1149.20/292.79 sub'#4(tuple#2(@zs, @s), @z) -> tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) [1] 1149.20/292.79 sub'#5(#false, @z, @zs) -> ::(@z, @zs) [1] 1149.20/292.79 sub'#5(#true, @z, @zs) -> ::(#abs(#0), @zs) [1] 1149.20/292.79 sum(@x, @y, @r) -> sum#1(plus(plus(@x, @y), @r)) [1] 1149.20/292.79 sum#1(@s) -> sum#2(#equal(@s, #0), @s) [1] 1149.20/292.79 sum#2(#false, @s) -> sum#3(#equal(@s, #pos(#s(#0))), @s) [1] 1149.20/292.79 sum#2(#true, @s) -> tuple#2(#abs(#0), #abs(#0)) [1] 1149.20/292.79 sum#3(#false, @s) -> sum#4(#equal(@s, #pos(#s(#s(#0))))) [1] 1149.20/292.79 sum#3(#true, @s) -> tuple#2(#abs(#pos(#s(#0))), #abs(#0)) [1] 1149.20/292.79 sum#4(#false) -> tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) [1] 1149.20/292.79 sum#4(#true) -> tuple#2(#abs(#0), #abs(#pos(#s(#0)))) [1] 1149.20/292.79 #add(#0, @y) -> @y [0] 1149.20/292.79 #add(#neg(#s(#0)), @y) -> #pred(@y) [0] 1149.20/292.79 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) [0] 1149.20/292.79 #add(#pos(#s(#0)), @y) -> #succ(@y) [0] 1149.20/292.79 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) [0] 1149.20/292.79 #and(#false, #false) -> #false [0] 1149.20/292.79 #and(#false, #true) -> #false [0] 1149.20/292.79 #and(#true, #false) -> #false [0] 1149.20/292.79 #and(#true, #true) -> #true [0] 1149.20/292.79 #ckgt(#EQ) -> #false [0] 1149.20/292.79 #ckgt(#GT) -> #true [0] 1149.20/292.79 #ckgt(#LT) -> #false [0] 1149.20/292.79 #cklt(#EQ) -> #false [0] 1149.20/292.79 #cklt(#GT) -> #false [0] 1149.20/292.79 #cklt(#LT) -> #true [0] 1149.20/292.79 #compare(#0, #0) -> #EQ [0] 1149.20/292.79 #compare(#0, #neg(@y)) -> #GT [0] 1149.20/292.79 #compare(#0, #pos(@y)) -> #LT [0] 1149.20/292.79 #compare(#0, #s(@y)) -> #LT [0] 1149.20/292.79 #compare(#neg(@x), #0) -> #LT [0] 1149.20/292.79 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) [0] 1149.20/292.79 #compare(#neg(@x), #pos(@y)) -> #LT [0] 1149.20/292.79 #compare(#pos(@x), #0) -> #GT [0] 1149.20/292.79 #compare(#pos(@x), #neg(@y)) -> #GT [0] 1149.20/292.79 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) [0] 1149.20/292.79 #compare(#s(@x), #0) -> #GT [0] 1149.20/292.79 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) [0] 1149.20/292.79 #div(#0, #0) -> #divByZero [0] 1149.20/292.79 #div(#0, #neg(@y)) -> #0 [0] 1149.20/292.79 #div(#0, #pos(@y)) -> #0 [0] 1149.20/292.79 #div(#neg(@x), #0) -> #divByZero [0] 1149.20/292.79 #div(#neg(@x), #neg(@y)) -> #pos(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#neg(@x), #pos(@y)) -> #neg(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#pos(@x), #0) -> #divByZero [0] 1149.20/292.79 #div(#pos(@x), #neg(@y)) -> #neg(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#pos(@x), #pos(@y)) -> #pos(#natdiv(@x, @y)) [0] 1149.20/292.79 #eq(#0, #0) -> #true [0] 1149.20/292.79 #eq(#0, #neg(@y)) -> #false [0] 1149.20/292.79 #eq(#0, #pos(@y)) -> #false [0] 1149.20/292.79 #eq(#0, #s(@y)) -> #false [0] 1149.20/292.79 #eq(#neg(@x), #0) -> #false [0] 1149.20/292.79 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(#neg(@x), #pos(@y)) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #0) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #neg(@y)) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(#s(@x), #0) -> #false [0] 1149.20/292.79 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1149.20/292.79 #eq(::(@x_1, @x_2), nil) -> #false [0] 1149.20/292.79 #eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(nil, ::(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(nil, nil) -> #true [0] 1149.20/292.79 #eq(nil, tuple#2(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), nil) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1149.20/292.79 #mult(#0, #0) -> #0 [0] 1149.20/292.79 #mult(#0, #neg(@y)) -> #0 [0] 1149.20/292.79 #mult(#0, #pos(@y)) -> #0 [0] 1149.20/292.79 #mult(#neg(@x), #0) -> #0 [0] 1149.20/292.79 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#pos(@x), #0) -> #0 [0] 1149.20/292.79 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) [0] 1149.20/292.79 #natdiv(#0, #0) -> #divByZero [0] 1149.20/292.79 #natdiv(#s(@x), #s(@y)) -> #s(#natdiv(#natsub(@x, @y), #s(@y))) [0] 1149.20/292.79 #natmult(#0, @y) -> #0 [0] 1149.20/292.79 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) [0] 1149.20/292.79 #natsub(@x, #0) -> @x [0] 1149.20/292.79 #natsub(#s(@x), #s(@y)) -> #natsub(@x, @y) [0] 1149.20/292.79 #pred(#0) -> #neg(#s(#0)) [0] 1149.20/292.79 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) [0] 1149.20/292.79 #pred(#pos(#s(#0))) -> #0 [0] 1149.20/292.79 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) [0] 1149.20/292.79 #sub(@x, #0) -> @x [0] 1149.20/292.79 #sub(@x, #neg(@y)) -> #add(@x, #pos(@y)) [0] 1149.20/292.79 #sub(@x, #pos(@y)) -> #add(@x, #neg(@y)) [0] 1149.20/292.79 #succ(#0) -> #pos(#s(#0)) [0] 1149.20/292.79 #succ(#neg(#s(#0))) -> #0 [0] 1149.20/292.79 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) [0] 1149.20/292.79 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) [0] 1149.20/292.79 #add(v0, v1) -> null_#add [0] 1149.20/292.79 #and(v0, v1) -> null_#and [0] 1149.20/292.79 #ckgt(v0) -> null_#ckgt [0] 1149.20/292.79 #cklt(v0) -> null_#cklt [0] 1149.20/292.79 #compare(v0, v1) -> null_#compare [0] 1149.20/292.79 #div(v0, v1) -> null_#div [0] 1149.20/292.79 #eq(v0, v1) -> null_#eq [0] 1149.20/292.79 #mult(v0, v1) -> null_#mult [0] 1149.20/292.79 #natdiv(v0, v1) -> null_#natdiv [0] 1149.20/292.79 #natmult(v0, v1) -> null_#natmult [0] 1149.20/292.79 #natsub(v0, v1) -> null_#natsub [0] 1149.20/292.79 #pred(v0) -> null_#pred [0] 1149.20/292.79 #sub(v0, v1) -> null_#sub [0] 1149.20/292.79 #succ(v0) -> null_#succ [0] 1149.20/292.79 #abs(v0) -> null_#abs [0] 1149.20/292.79 bitToInt'#1(v0, v1) -> null_bitToInt'#1 [0] 1149.20/292.79 sub'#1(v0, v1, v2) -> null_sub'#1 [0] 1149.20/292.79 sum#2(v0, v1) -> null_sum#2 [0] 1149.20/292.79 diff#1(v0) -> null_diff#1 [0] 1149.20/292.79 compare#1(v0, v1) -> null_compare#1 [0] 1149.20/292.79 mult#1(v0, v1) -> null_mult#1 [0] 1149.20/292.79 sub'#2(v0, v1, v2, v3) -> null_sub'#2 [0] 1149.20/292.79 sum#3(v0, v1) -> null_sum#3 [0] 1149.20/292.79 sum#4(v0) -> null_sum#4 [0] 1149.20/292.79 compare#2(v0, v1, v2) -> null_compare#2 [0] 1149.20/292.79 sub'#3(v0, v1, v2) -> null_sub'#3 [0] 1149.20/292.79 mult#3(v0, v1, v2) -> null_mult#3 [0] 1149.20/292.79 sub'#4(v0, v1) -> null_sub'#4 [0] 1149.20/292.79 sub'#5(v0, v1, v2) -> null_sub'#5 [0] 1149.20/292.79 compare#4(v0, v1, v2, v3) -> null_compare#4 [0] 1149.20/292.79 add'#1(v0, v1, v2) -> null_add'#1 [0] 1149.20/292.79 compare#5(v0, v1, v2) -> null_compare#5 [0] 1149.20/292.79 compare#6(v0) -> null_compare#6 [0] 1149.20/292.79 add'#2(v0, v1, v2, v3) -> null_add'#2 [0] 1149.20/292.79 add'#3(v0, v1, v2) -> null_add'#3 [0] 1149.20/292.79 1149.20/292.79 The TRS has the following type information: 1149.20/292.79 #abs :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #0 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #neg :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #pos :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #s :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #equal :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #eq :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #greater :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #ckgt :: #EQ:#GT:#LT:null_#compare -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #compare :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #EQ:#GT:#LT:null_#compare 1149.20/292.79 #less :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #cklt :: #EQ:#GT:#LT:null_#compare -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 times :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #mult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 plus :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #add :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 minus :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #sub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 add :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 add' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 add'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 :: :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 add'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 nil :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 add'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sum :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 tuple#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 bitToInt :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 bitToInt' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 bitToInt'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare#4 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #false :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #true :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 compare#5 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare#6 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 diff :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 mod :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 diff#1 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 div :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #div :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 leq :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 mult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 mult#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 mult#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 mult#3 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 mult3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> a -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub'#4 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub'#5 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sum#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sum#2 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sum#3 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sum#4 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #pred :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #succ :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #and :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #EQ :: #EQ:#GT:#LT:null_#compare 1149.20/292.79 #GT :: #EQ:#GT:#LT:null_#compare 1149.20/292.79 #LT :: #EQ:#GT:#LT:null_#compare 1149.20/292.79 #divByZero :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #natdiv :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #natmult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #natsub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#add :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#and :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 null_#ckgt :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 null_#cklt :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 null_#compare :: #EQ:#GT:#LT:null_#compare 1149.20/292.79 null_#div :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#eq :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 null_#mult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#natdiv :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#natmult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#natsub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#pred :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#sub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#succ :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#abs :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_bitToInt'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sub'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sum#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_diff#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_compare#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_mult#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sub'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sum#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sum#4 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_compare#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sub'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_mult#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sub'#4 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sub'#5 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_compare#4 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_add'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_compare#5 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_compare#6 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_add'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_add'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 const :: a 1149.20/292.79 1149.20/292.79 Rewrite Strategy: INNERMOST 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (11) NarrowingProof (BOTH BOUNDS(ID, ID)) 1149.20/292.79 Narrowed the inner basic terms of all right-hand sides by a single narrowing step. 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (12) 1149.20/292.79 Obligation: 1149.20/292.79 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 1149.20/292.79 1149.20/292.79 Runtime Complexity Weighted TRS with Types. 1149.20/292.79 The TRS R consists of the following rules: 1149.20/292.79 1149.20/292.79 #abs(#0) -> #0 [1] 1149.20/292.79 #abs(#neg(@x)) -> #pos(@x) [1] 1149.20/292.79 #abs(#pos(@x)) -> #pos(@x) [1] 1149.20/292.79 #abs(#s(@x)) -> #pos(#s(@x)) [1] 1149.20/292.79 #equal(@x, @y) -> #eq(@x, @y) [1] 1149.20/292.79 #greater(#0, #0) -> #ckgt(#EQ) [1] 1149.20/292.79 #greater(#0, #neg(@y')) -> #ckgt(#GT) [1] 1149.20/292.79 #greater(#0, #pos(@y'')) -> #ckgt(#LT) [1] 1149.20/292.79 #greater(#0, #s(@y1)) -> #ckgt(#LT) [1] 1149.20/292.79 #greater(#neg(@x'), #0) -> #ckgt(#LT) [1] 1149.20/292.79 #greater(#neg(@x''), #neg(@y2)) -> #ckgt(#compare(@y2, @x'')) [1] 1149.20/292.79 #greater(#neg(@x1), #pos(@y3)) -> #ckgt(#LT) [1] 1149.20/292.79 #greater(#pos(@x2), #0) -> #ckgt(#GT) [1] 1149.20/292.79 #greater(#pos(@x3), #neg(@y4)) -> #ckgt(#GT) [1] 1149.20/292.79 #greater(#pos(@x4), #pos(@y5)) -> #ckgt(#compare(@x4, @y5)) [1] 1149.20/292.79 #greater(#s(@x5), #0) -> #ckgt(#GT) [1] 1149.20/292.79 #greater(#s(@x6), #s(@y6)) -> #ckgt(#compare(@x6, @y6)) [1] 1149.20/292.79 #greater(@x, @y) -> #ckgt(null_#compare) [1] 1149.20/292.79 #less(#0, #0) -> #cklt(#EQ) [1] 1149.20/292.79 #less(#0, #neg(@y7)) -> #cklt(#GT) [1] 1149.20/292.79 #less(#0, #pos(@y8)) -> #cklt(#LT) [1] 1149.20/292.79 #less(#0, #s(@y9)) -> #cklt(#LT) [1] 1149.20/292.79 #less(#neg(@x7), #0) -> #cklt(#LT) [1] 1149.20/292.79 #less(#neg(@x8), #neg(@y10)) -> #cklt(#compare(@y10, @x8)) [1] 1149.20/292.79 #less(#neg(@x9), #pos(@y11)) -> #cklt(#LT) [1] 1149.20/292.79 #less(#pos(@x10), #0) -> #cklt(#GT) [1] 1149.20/292.79 #less(#pos(@x11), #neg(@y12)) -> #cklt(#GT) [1] 1149.20/292.79 #less(#pos(@x12), #pos(@y13)) -> #cklt(#compare(@x12, @y13)) [1] 1149.20/292.79 #less(#s(@x13), #0) -> #cklt(#GT) [1] 1149.20/292.79 #less(#s(@x14), #s(@y14)) -> #cklt(#compare(@x14, @y14)) [1] 1149.20/292.79 #less(@x, @y) -> #cklt(null_#compare) [1] 1149.20/292.79 times(@x, @y) -> #mult(@x, @y) [1] 1149.20/292.79 plus(@x, @y) -> #add(@x, @y) [1] 1149.20/292.79 minus(@x, @y) -> #sub(@x, @y) [1] 1149.20/292.79 add(@b1, @b2) -> add'(@b1, @b2, #0) [2] 1149.20/292.79 add(@b1, @b2) -> add'(@b1, @b2, null_#abs) [1] 1149.20/292.79 add'(@b1, @b2, @r) -> add'#1(@b1, @b2, @r) [1] 1149.20/292.79 add'#1(::(@x, @xs), @b2, @r) -> add'#2(@b2, @r, @x, @xs) [1] 1149.20/292.79 add'#1(nil, @b2, @r) -> nil [1] 1149.20/292.79 add'#2(::(@y, @ys), @r, @x, @xs) -> add'#3(sum#1(plus(plus(@x, @y), @r)), @xs, @ys) [2] 1149.20/292.79 add'#2(nil, @r, @x, @xs) -> nil [1] 1149.20/292.79 add'#3(tuple#2(@z, @r'), @xs, @ys) -> ::(@z, add'(@xs, @ys, @r')) [1] 1149.20/292.79 bitToInt(@b) -> bitToInt'(@b, #pos(#s(#0))) [2] 1149.20/292.79 bitToInt(@b) -> bitToInt'(@b, null_#abs) [1] 1149.20/292.79 bitToInt'(@b, @n) -> bitToInt'#1(@b, @n) [1] 1149.20/292.79 bitToInt'#1(::(@x, @xs), @n) -> plus(#mult(@x, @n), bitToInt'(@xs, #mult(@n, #pos(#s(#s(#0)))))) [3] 1149.20/292.79 bitToInt'#1(nil, @n) -> #abs(#0) [1] 1149.20/292.79 compare(@b1, @b2) -> compare#1(@b1, @b2) [1] 1149.20/292.79 compare#1(::(@x, @xs), @b2) -> compare#2(@b2, @x, @xs) [1] 1149.20/292.79 compare#1(nil, @b2) -> #abs(#0) [1] 1149.20/292.79 compare#2(::(@y, @ys), @x, @xs) -> compare#3(compare#1(@xs, @ys), @x, @y) [2] 1149.20/292.79 compare#2(nil, @x, @xs) -> #abs(#0) [1] 1149.20/292.79 compare#3(@r, @x, @y) -> compare#4(#eq(@r, #0), @r, @x, @y) [2] 1149.20/292.79 compare#4(#false, @r, @x, @y) -> @r [1] 1149.20/292.79 compare#4(#true, @r, @x, @y) -> compare#5(#cklt(#compare(@x, @y)), @x, @y) [2] 1149.20/292.79 compare#5(#false, @x, @y) -> compare#6(#ckgt(#compare(@x, @y))) [2] 1149.20/292.79 compare#5(#true, @x, @y) -> minus(#0, #pos(#s(#0))) [1] 1149.20/292.79 compare#6(#false) -> #abs(#0) [1] 1149.20/292.79 compare#6(#true) -> #abs(#pos(#s(#0))) [1] 1149.20/292.79 diff(@x, @y, @r) -> tuple#2(mod(plus(#add(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(minus(#sub(@x, @y), @r), #0))) [3] 1149.20/292.79 diff#1(#false) -> #abs(#0) [1] 1149.20/292.79 diff#1(#true) -> #abs(#pos(#s(#0))) [1] 1149.20/292.79 div(@x, @y) -> #div(@x, @y) [1] 1149.20/292.79 leq(@b1, @b2) -> #less(compare#1(@b1, @b2), #pos(#s(#0))) [2] 1149.20/292.79 mod(@x, @y) -> minus(@x, times(@x, #div(@x, @y))) [2] 1149.20/292.79 mult(@b1, @b2) -> mult#1(@b1, @b2) [1] 1149.20/292.79 mult#1(::(@x, @xs), @b2) -> mult#2(::(#0, mult#1(@xs, @b2)), @b2, @x) [3] 1149.20/292.79 mult#1(::(@x, @xs), @b2) -> mult#2(::(null_#abs, mult#1(@xs, @b2)), @b2, @x) [2] 1149.20/292.79 mult#1(nil, @b2) -> nil [1] 1149.20/292.79 mult#2(@zs, @b2, @x) -> mult#3(#eq(@x, #pos(#s(#0))), @b2, @zs) [2] 1149.20/292.79 mult#3(#false, @b2, @zs) -> @zs [1] 1149.20/292.79 mult#3(#true, @b2, @zs) -> add(@b2, @zs) [1] 1149.20/292.79 mult3(@b1, @b2, @b3) -> mult(mult#1(@b1, @b2), @b2) [2] 1149.20/292.79 sub(@b1, @b2) -> sub#1(sub'(@b1, @b2, #0)) [2] 1149.20/292.79 sub(@b1, @b2) -> sub#1(sub'(@b1, @b2, null_#abs)) [1] 1149.20/292.79 sub#1(tuple#2(@b, @_@1)) -> @b [1] 1149.20/292.79 sub'(@b1, @b2, @r) -> sub'#1(@b1, @b2, @r) [1] 1149.20/292.79 sub'#1(::(@x, @xs), @b2, @r) -> sub'#2(@b2, @r, @x, @xs) [1] 1149.20/292.79 sub'#1(nil, @b2, @r) -> tuple#2(nil, @r) [1] 1149.20/292.79 sub'#2(::(@y, @ys), @r, @x, @xs) -> sub'#3(tuple#2(mod(plus(plus(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(minus(minus(@x, @y), @r), #0))), @xs, @ys) [2] 1149.20/292.79 sub'#2(nil, @r, @x, @xs) -> tuple#2(nil, @r) [1] 1149.20/292.79 sub'#3(tuple#2(@z, @r'), @xs, @ys) -> sub'#4(sub'#1(@xs, @ys, @r'), @z) [2] 1149.20/292.79 sub'#4(tuple#2(@zs, @s), @z) -> tuple#2(sub'#5(#eq(@s, #pos(#s(#0))), @z, @zs), @s) [2] 1149.20/292.79 sub'#5(#false, @z, @zs) -> ::(@z, @zs) [1] 1149.20/292.79 sub'#5(#true, @z, @zs) -> ::(#abs(#0), @zs) [1] 1149.20/292.79 sum(@x, @y, @r) -> sum#1(plus(#add(@x, @y), @r)) [2] 1149.20/292.79 sum#1(@s) -> sum#2(#eq(@s, #0), @s) [2] 1149.20/292.79 sum#2(#false, @s) -> sum#3(#eq(@s, #pos(#s(#0))), @s) [2] 1149.20/292.79 sum#2(#true, @s) -> tuple#2(#abs(#0), #abs(#0)) [1] 1149.20/292.79 sum#3(#false, @s) -> sum#4(#eq(@s, #pos(#s(#s(#0))))) [2] 1149.20/292.79 sum#3(#true, @s) -> tuple#2(#abs(#pos(#s(#0))), #abs(#0)) [1] 1149.20/292.79 sum#4(#false) -> tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) [1] 1149.20/292.79 sum#4(#true) -> tuple#2(#abs(#0), #abs(#pos(#s(#0)))) [1] 1149.20/292.79 #add(#0, @y) -> @y [0] 1149.20/292.79 #add(#neg(#s(#0)), @y) -> #pred(@y) [0] 1149.20/292.79 #add(#neg(#s(#s(#0))), @y) -> #pred(#succ(@y)) [0] 1149.20/292.79 #add(#neg(#s(#s(#s(@x15)))), @y) -> #pred(#succ(#add(#pos(#s(@x15)), @y))) [0] 1149.20/292.79 #add(#neg(#s(#s(@x))), @y) -> #pred(null_#add) [0] 1149.20/292.79 #add(#pos(#s(#0)), @y) -> #succ(@y) [0] 1149.20/292.79 #add(#pos(#s(#s(#0))), @y) -> #succ(#succ(@y)) [0] 1149.20/292.79 #add(#pos(#s(#s(#s(@x16)))), @y) -> #succ(#succ(#add(#pos(#s(@x16)), @y))) [0] 1149.20/292.79 #add(#pos(#s(#s(@x))), @y) -> #succ(null_#add) [0] 1149.20/292.79 #and(#false, #false) -> #false [0] 1149.20/292.79 #and(#false, #true) -> #false [0] 1149.20/292.79 #and(#true, #false) -> #false [0] 1149.20/292.79 #and(#true, #true) -> #true [0] 1149.20/292.79 #ckgt(#EQ) -> #false [0] 1149.20/292.79 #ckgt(#GT) -> #true [0] 1149.20/292.79 #ckgt(#LT) -> #false [0] 1149.20/292.79 #cklt(#EQ) -> #false [0] 1149.20/292.79 #cklt(#GT) -> #false [0] 1149.20/292.79 #cklt(#LT) -> #true [0] 1149.20/292.79 #compare(#0, #0) -> #EQ [0] 1149.20/292.79 #compare(#0, #neg(@y)) -> #GT [0] 1149.20/292.79 #compare(#0, #pos(@y)) -> #LT [0] 1149.20/292.79 #compare(#0, #s(@y)) -> #LT [0] 1149.20/292.79 #compare(#neg(@x), #0) -> #LT [0] 1149.20/292.79 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) [0] 1149.20/292.79 #compare(#neg(@x), #pos(@y)) -> #LT [0] 1149.20/292.79 #compare(#pos(@x), #0) -> #GT [0] 1149.20/292.79 #compare(#pos(@x), #neg(@y)) -> #GT [0] 1149.20/292.79 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) [0] 1149.20/292.79 #compare(#s(@x), #0) -> #GT [0] 1149.20/292.79 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) [0] 1149.20/292.79 #div(#0, #0) -> #divByZero [0] 1149.20/292.79 #div(#0, #neg(@y)) -> #0 [0] 1149.20/292.79 #div(#0, #pos(@y)) -> #0 [0] 1149.20/292.79 #div(#neg(@x), #0) -> #divByZero [0] 1149.20/292.79 #div(#neg(@x), #neg(@y)) -> #pos(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#neg(@x), #pos(@y)) -> #neg(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#pos(@x), #0) -> #divByZero [0] 1149.20/292.79 #div(#pos(@x), #neg(@y)) -> #neg(#natdiv(@x, @y)) [0] 1149.20/292.79 #div(#pos(@x), #pos(@y)) -> #pos(#natdiv(@x, @y)) [0] 1149.20/292.79 #eq(#0, #0) -> #true [0] 1149.20/292.79 #eq(#0, #neg(@y)) -> #false [0] 1149.20/292.79 #eq(#0, #pos(@y)) -> #false [0] 1149.20/292.79 #eq(#0, #s(@y)) -> #false [0] 1149.20/292.79 #eq(#neg(@x), #0) -> #false [0] 1149.20/292.79 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(#neg(@x), #pos(@y)) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #0) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #neg(@y)) -> #false [0] 1149.20/292.79 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(#s(@x), #0) -> #false [0] 1149.20/292.79 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) [0] 1149.20/292.79 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1149.20/292.79 #eq(::(@x_1, @x_2), nil) -> #false [0] 1149.20/292.79 #eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(nil, ::(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(nil, nil) -> #true [0] 1149.20/292.79 #eq(nil, tuple#2(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), nil) -> #false [0] 1149.20/292.79 #eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) [0] 1149.20/292.79 #mult(#0, #0) -> #0 [0] 1149.20/292.79 #mult(#0, #neg(@y)) -> #0 [0] 1149.20/292.79 #mult(#0, #pos(@y)) -> #0 [0] 1149.20/292.79 #mult(#neg(@x), #0) -> #0 [0] 1149.20/292.79 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#pos(@x), #0) -> #0 [0] 1149.20/292.79 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) [0] 1149.20/292.79 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) [0] 1149.20/292.79 #natdiv(#0, #0) -> #divByZero [0] 1149.20/292.79 #natdiv(#s(@x), #s(#0)) -> #s(#natdiv(@x, #s(#0))) [0] 1149.20/292.79 #natdiv(#s(#s(@x385)), #s(#s(@y383))) -> #s(#natdiv(#natsub(@x385, @y383), #s(#s(@y383)))) [0] 1149.20/292.79 #natdiv(#s(@x), #s(@y)) -> #s(#natdiv(null_#natsub, #s(@y))) [0] 1149.20/292.79 #natmult(#0, @y) -> #0 [0] 1149.20/292.79 #natmult(#s(#0), @y) -> #add(#pos(@y), #0) [0] 1149.20/292.79 #natmult(#s(#s(@x386)), @y) -> #add(#pos(@y), #add(#pos(@y), #natmult(@x386, @y))) [0] 1149.20/292.79 #natmult(#s(@x), @y) -> #add(#pos(@y), null_#natmult) [0] 1149.20/292.79 #natsub(@x, #0) -> @x [0] 1149.20/292.79 #natsub(#s(@x), #s(@y)) -> #natsub(@x, @y) [0] 1149.20/292.79 #pred(#0) -> #neg(#s(#0)) [0] 1149.20/292.79 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) [0] 1149.20/292.79 #pred(#pos(#s(#0))) -> #0 [0] 1149.20/292.79 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) [0] 1149.20/292.79 #sub(@x, #0) -> @x [0] 1149.20/292.79 #sub(@x, #neg(@y)) -> #add(@x, #pos(@y)) [0] 1149.20/292.79 #sub(@x, #pos(@y)) -> #add(@x, #neg(@y)) [0] 1149.20/292.79 #succ(#0) -> #pos(#s(#0)) [0] 1149.20/292.79 #succ(#neg(#s(#0))) -> #0 [0] 1149.20/292.79 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) [0] 1149.20/292.79 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) [0] 1149.20/292.79 #add(v0, v1) -> null_#add [0] 1149.20/292.79 #and(v0, v1) -> null_#and [0] 1149.20/292.79 #ckgt(v0) -> null_#ckgt [0] 1149.20/292.79 #cklt(v0) -> null_#cklt [0] 1149.20/292.79 #compare(v0, v1) -> null_#compare [0] 1149.20/292.79 #div(v0, v1) -> null_#div [0] 1149.20/292.79 #eq(v0, v1) -> null_#eq [0] 1149.20/292.79 #mult(v0, v1) -> null_#mult [0] 1149.20/292.79 #natdiv(v0, v1) -> null_#natdiv [0] 1149.20/292.79 #natmult(v0, v1) -> null_#natmult [0] 1149.20/292.79 #natsub(v0, v1) -> null_#natsub [0] 1149.20/292.79 #pred(v0) -> null_#pred [0] 1149.20/292.79 #sub(v0, v1) -> null_#sub [0] 1149.20/292.79 #succ(v0) -> null_#succ [0] 1149.20/292.79 #abs(v0) -> null_#abs [0] 1149.20/292.79 bitToInt'#1(v0, v1) -> null_bitToInt'#1 [0] 1149.20/292.79 sub'#1(v0, v1, v2) -> null_sub'#1 [0] 1149.20/292.79 sum#2(v0, v1) -> null_sum#2 [0] 1149.20/292.79 diff#1(v0) -> null_diff#1 [0] 1149.20/292.79 compare#1(v0, v1) -> null_compare#1 [0] 1149.20/292.79 mult#1(v0, v1) -> null_mult#1 [0] 1149.20/292.79 sub'#2(v0, v1, v2, v3) -> null_sub'#2 [0] 1149.20/292.79 sum#3(v0, v1) -> null_sum#3 [0] 1149.20/292.79 sum#4(v0) -> null_sum#4 [0] 1149.20/292.79 compare#2(v0, v1, v2) -> null_compare#2 [0] 1149.20/292.79 sub'#3(v0, v1, v2) -> null_sub'#3 [0] 1149.20/292.79 mult#3(v0, v1, v2) -> null_mult#3 [0] 1149.20/292.79 sub'#4(v0, v1) -> null_sub'#4 [0] 1149.20/292.79 sub'#5(v0, v1, v2) -> null_sub'#5 [0] 1149.20/292.79 compare#4(v0, v1, v2, v3) -> null_compare#4 [0] 1149.20/292.79 add'#1(v0, v1, v2) -> null_add'#1 [0] 1149.20/292.79 compare#5(v0, v1, v2) -> null_compare#5 [0] 1149.20/292.79 compare#6(v0) -> null_compare#6 [0] 1149.20/292.79 add'#2(v0, v1, v2, v3) -> null_add'#2 [0] 1149.20/292.79 add'#3(v0, v1, v2) -> null_add'#3 [0] 1149.20/292.79 1149.20/292.79 The TRS has the following type information: 1149.20/292.79 #abs :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #0 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #neg :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #pos :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #s :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #equal :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #eq :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #greater :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #ckgt :: #EQ:#GT:#LT:null_#compare -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #compare :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #EQ:#GT:#LT:null_#compare 1149.20/292.79 #less :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #cklt :: #EQ:#GT:#LT:null_#compare -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 times :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #mult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 plus :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #add :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 minus :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #sub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 add :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 add' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 add'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 :: :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 add'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 nil :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 add'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sum :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 tuple#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 bitToInt :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 bitToInt' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 bitToInt'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare#4 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #false :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #true :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 compare#5 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 compare#6 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 diff :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 mod :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 diff#1 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 div :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #div :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 leq :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 mult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 mult#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 mult#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 mult#3 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 mult3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> a -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub' :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub'#4 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sub'#5 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sum#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sum#2 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sum#3 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 sum#4 :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #pred :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #succ :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #and :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq -> #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 #EQ :: #EQ:#GT:#LT:null_#compare 1149.20/292.79 #GT :: #EQ:#GT:#LT:null_#compare 1149.20/292.79 #LT :: #EQ:#GT:#LT:null_#compare 1149.20/292.79 #divByZero :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #natdiv :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #natmult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 #natsub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 -> #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#add :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#and :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 null_#ckgt :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 null_#cklt :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 null_#compare :: #EQ:#GT:#LT:null_#compare 1149.20/292.79 null_#div :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#eq :: #false:#true:null_#and:null_#ckgt:null_#cklt:null_#eq 1149.20/292.79 null_#mult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#natdiv :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#natmult :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#natsub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#pred :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#sub :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#succ :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_#abs :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_bitToInt'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sub'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sum#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_diff#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_compare#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_mult#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sub'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sum#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sum#4 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_compare#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sub'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_mult#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sub'#4 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_sub'#5 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_compare#4 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_add'#1 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_compare#5 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_compare#6 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_add'#2 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 null_add'#3 :: #0:#neg:#pos:#s::::nil:tuple#2:#divByZero:null_#add:null_#div:null_#mult:null_#natdiv:null_#natmult:null_#natsub:null_#pred:null_#sub:null_#succ:null_#abs:null_bitToInt'#1:null_sub'#1:null_sum#2:null_diff#1:null_compare#1:null_mult#1:null_sub'#2:null_sum#3:null_sum#4:null_compare#2:null_sub'#3:null_mult#3:null_sub'#4:null_sub'#5:null_compare#4:null_add'#1:null_compare#5:null_compare#6:null_add'#2:null_add'#3 1149.20/292.79 const :: a 1149.20/292.79 1149.20/292.79 Rewrite Strategy: INNERMOST 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (13) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) 1149.20/292.79 Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. 1149.20/292.79 The constant constructors are abstracted as follows: 1149.20/292.79 1149.20/292.79 #0 => 0 1149.20/292.79 nil => 2 1149.20/292.79 #false => 1 1149.20/292.79 #true => 2 1149.20/292.79 #EQ => 1 1149.20/292.79 #GT => 2 1149.20/292.79 #LT => 3 1149.20/292.79 #divByZero => 1 1149.20/292.79 null_#add => 0 1149.20/292.79 null_#and => 0 1149.20/292.79 null_#ckgt => 0 1149.20/292.79 null_#cklt => 0 1149.20/292.79 null_#compare => 0 1149.20/292.79 null_#div => 0 1149.20/292.79 null_#eq => 0 1149.20/292.79 null_#mult => 0 1149.20/292.79 null_#natdiv => 0 1149.20/292.79 null_#natmult => 0 1149.20/292.79 null_#natsub => 0 1149.20/292.79 null_#pred => 0 1149.20/292.79 null_#sub => 0 1149.20/292.79 null_#succ => 0 1149.20/292.79 null_#abs => 0 1149.20/292.79 null_bitToInt'#1 => 0 1149.20/292.79 null_sub'#1 => 0 1149.20/292.79 null_sum#2 => 0 1149.20/292.79 null_diff#1 => 0 1149.20/292.79 null_compare#1 => 0 1149.20/292.79 null_mult#1 => 0 1149.20/292.79 null_sub'#2 => 0 1149.20/292.79 null_sum#3 => 0 1149.20/292.79 null_sum#4 => 0 1149.20/292.79 null_compare#2 => 0 1149.20/292.79 null_sub'#3 => 0 1149.20/292.79 null_mult#3 => 0 1149.20/292.79 null_sub'#4 => 0 1149.20/292.79 null_sub'#5 => 0 1149.20/292.79 null_compare#4 => 0 1149.20/292.79 null_add'#1 => 0 1149.20/292.79 null_compare#5 => 0 1149.20/292.79 null_compare#6 => 0 1149.20/292.79 null_add'#2 => 0 1149.20/292.79 null_add'#3 => 0 1149.20/292.79 const => 0 1149.20/292.79 1149.20/292.79 ---------------------------------------- 1149.20/292.79 1149.20/292.79 (14) 1149.20/292.79 Obligation: 1149.20/292.79 Complexity RNTS consisting of the following rules: 1149.20/292.79 1149.20/292.79 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.20/292.79 #abs(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.79 #abs(z) -{ 1 }-> 1 + @x :|: @x >= 0, z = 1 + @x 1149.20/292.79 #abs(z) -{ 1 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + @x 1149.20/292.79 #add(z, z') -{ 0 }-> @y :|: z' = @y, z = 0, @y >= 0 1149.20/292.79 #add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 #add(z, z') -{ 0 }-> #succ(@y) :|: z = 1 + (1 + 0), z' = @y, @y >= 0 1149.20/292.79 #add(z, z') -{ 0 }-> #succ(0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0 1149.20/292.79 #add(z, z') -{ 0 }-> #succ(#succ(@y)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0 1149.20/292.79 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + @x16), @y))) :|: @x16 >= 0, z' = @y, z = 1 + (1 + (1 + (1 + @x16))), @y >= 0 1149.20/292.79 #add(z, z') -{ 0 }-> #pred(@y) :|: z = 1 + (1 + 0), z' = @y, @y >= 0 1149.20/292.79 #add(z, z') -{ 0 }-> #pred(0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0 1149.20/292.79 #add(z, z') -{ 0 }-> #pred(#succ(@y)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0 1149.20/292.79 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + @x15), @y))) :|: z = 1 + (1 + (1 + (1 + @x15))), z' = @y, @x15 >= 0, @y >= 0 1149.20/292.79 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.20/292.79 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.20/292.79 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.20/292.79 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.20/292.79 #and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.20/292.79 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.79 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.20/292.79 #ckgt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.79 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.20/292.79 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.79 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.20/292.79 #cklt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.79 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' = 1 + @y, @y >= 0 1149.20/292.79 #compare(z, z') -{ 0 }-> 3 :|: @x >= 0, z = 1 + @x, z' = 0 1149.20/292.79 #compare(z, z') -{ 0 }-> 3 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.79 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' = 1 + @y, @y >= 0 1149.20/292.79 #compare(z, z') -{ 0 }-> 2 :|: @x >= 0, z = 1 + @x, z' = 0 1149.20/292.79 #compare(z, z') -{ 0 }-> 2 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.79 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.79 #compare(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 #compare(z, z') -{ 0 }-> #compare(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.79 #compare(z, z') -{ 0 }-> #compare(@y, @x) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.79 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.79 #div(z, z') -{ 0 }-> 1 :|: @x >= 0, z = 1 + @x, z' = 0 1149.20/292.79 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' = 1 + @y, @y >= 0 1149.20/292.79 #div(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 #div(z, z') -{ 0 }-> 1 + #natdiv(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.79 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.20/292.79 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.20/292.79 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' = 1 + @y, @y >= 0 1149.20/292.79 #eq(z, z') -{ 0 }-> 1 :|: @x >= 0, z = 1 + @x, z' = 0 1149.20/292.79 #eq(z, z') -{ 0 }-> 1 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.79 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.20/292.79 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.79 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.79 #eq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 #eq(z, z') -{ 0 }-> #eq(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.79 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.79 #equal(z, z') -{ 1 }-> #eq(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(3) :|: z' = 1 + @y'', @y'' >= 0, z = 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(3) :|: z' = 1 + @y1, @y1 >= 0, z = 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(3) :|: z = 1 + @x', @x' >= 0, z' = 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(3) :|: @y3 >= 0, @x1 >= 0, z' = 1 + @y3, z = 1 + @x1 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(2) :|: @y' >= 0, z' = 1 + @y', z = 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(2) :|: @x2 >= 0, z = 1 + @x2, z' = 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(2) :|: @x3 >= 0, z' = 1 + @y4, z = 1 + @x3, @y4 >= 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(2) :|: z = 1 + @x5, @x5 >= 0, z' = 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(1) :|: z = 0, z' = 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(0) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(#compare(@x4, @y5)) :|: z' = 1 + @y5, @y5 >= 0, z = 1 + @x4, @x4 >= 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(#compare(@x6, @y6)) :|: z = 1 + @x6, z' = 1 + @y6, @x6 >= 0, @y6 >= 0 1149.20/292.79 #greater(z, z') -{ 1 }-> #ckgt(#compare(@y2, @x'')) :|: z = 1 + @x'', z' = 1 + @y2, @y2 >= 0, @x'' >= 0 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(3) :|: @y8 >= 0, z = 0, z' = 1 + @y8 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(3) :|: @y9 >= 0, z' = 1 + @y9, z = 0 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(3) :|: z = 1 + @x7, @x7 >= 0, z' = 0 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(3) :|: @y11 >= 0, z = 1 + @x9, z' = 1 + @y11, @x9 >= 0 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(2) :|: @y7 >= 0, z = 0, z' = 1 + @y7 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(2) :|: z = 1 + @x10, @x10 >= 0, z' = 0 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(2) :|: z = 1 + @x11, @x11 >= 0, @y12 >= 0, z' = 1 + @y12 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(2) :|: z = 1 + @x13, @x13 >= 0, z' = 0 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(1) :|: z = 0, z' = 0 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(0) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(#compare(@x12, @y13)) :|: @x12 >= 0, z = 1 + @x12, @y13 >= 0, z' = 1 + @y13 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(#compare(@x14, @y14)) :|: z = 1 + @x14, @x14 >= 0, @y14 >= 0, z' = 1 + @y14 1149.20/292.79 #less(z, z') -{ 1 }-> #cklt(#compare(@y10, @x8)) :|: z' = 1 + @y10, @y10 >= 0, z = 1 + @x8, @x8 >= 0 1149.20/292.79 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.20/292.79 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 1 + @y, @y >= 0 1149.20/292.79 #mult(z, z') -{ 0 }-> 0 :|: @x >= 0, z = 1 + @x, z' = 0 1149.20/292.79 #mult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 #mult(z, z') -{ 0 }-> 1 + #natmult(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.79 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.79 #natdiv(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(@x, 1 + 0) :|: @x >= 0, z = 1 + @x, z' = 1 + 0 1149.20/292.79 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.79 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(@x385, @y383), 1 + (1 + @y383)) :|: z = 1 + (1 + @x385), @x385 >= 0, z' = 1 + (1 + @y383), @y383 >= 0 1149.20/292.79 #natmult(z, z') -{ 0 }-> 0 :|: z' = @y, z = 0, @y >= 0 1149.20/292.79 #natmult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 #natmult(z, z') -{ 0 }-> #add(1 + @y, 0) :|: z = 1 + 0, z' = @y, @y >= 0 1149.20/292.79 #natmult(z, z') -{ 0 }-> #add(1 + @y, 0) :|: @x >= 0, z = 1 + @x, z' = @y, @y >= 0 1149.20/292.79 #natmult(z, z') -{ 0 }-> #add(1 + @y, #add(1 + @y, #natmult(@x386, @y))) :|: @x386 >= 0, z' = @y, @y >= 0, z = 1 + (1 + @x386) 1149.20/292.79 #natsub(z, z') -{ 0 }-> @x :|: z = @x, @x >= 0, z' = 0 1149.20/292.79 #natsub(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 #natsub(z, z') -{ 0 }-> #natsub(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.79 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.20/292.79 #pred(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.79 #pred(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 1149.20/292.79 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.20/292.79 #pred(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 1149.20/292.79 #sub(z, z') -{ 0 }-> @x :|: z = @x, @x >= 0, z' = 0 1149.20/292.79 #sub(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 #sub(z, z') -{ 0 }-> #add(@x, 1 + @y) :|: z = @x, @x >= 0, z' = 1 + @y, @y >= 0 1149.20/292.79 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.20/292.79 #succ(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.79 #succ(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 1149.20/292.79 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.20/292.79 #succ(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 1149.20/292.79 add(z, z') -{ 2 }-> add'(@b1, @b2, 0) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.79 add(z, z') -{ 1 }-> add'(@b1, @b2, 0) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.79 add'(z, z', z'') -{ 1 }-> add'#1(@b1, @b2, @r) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0, z'' = @r, @r >= 0 1149.20/292.79 add'#1(z, z', z'') -{ 1 }-> add'#2(@b2, @r, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0, z'' = @r, @r >= 0 1149.20/292.79 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' = @b2, @b2 >= 0, z'' = @r, @r >= 0 1149.20/292.79 add'#1(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.79 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(@x, @y), @r)), @xs, @ys) :|: z' = @r, z = 1 + @y + @ys, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @y >= 0, @ys >= 0, @r >= 0 1149.20/292.79 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z' = @r, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @r >= 0 1149.20/292.79 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 1149.20/292.79 add'#3(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.79 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(@xs, @ys, @r') :|: z' = @xs, z = 1 + @z + @r', @xs >= 0, z'' = @ys, @r' >= 0, @ys >= 0, @z >= 0 1149.20/292.79 bitToInt(z) -{ 1 }-> bitToInt'(@b, 0) :|: z = @b, @b >= 0 1149.20/292.79 bitToInt(z) -{ 2 }-> bitToInt'(@b, 1 + (1 + 0)) :|: z = @b, @b >= 0 1149.20/292.79 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(@b, @n) :|: z' = @n, @n >= 0, z = @b, @b >= 0 1149.20/292.79 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, @n), bitToInt'(@xs, #mult(@n, 1 + (1 + (1 + 0))))) :|: z' = @n, @x >= 0, z = 1 + @x + @xs, @n >= 0, @xs >= 0 1149.20/292.79 bitToInt'#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 bitToInt'#1(z, z') -{ 1 }-> #abs(0) :|: z = 2, z' = @n, @n >= 0 1149.20/292.79 compare(z, z') -{ 1 }-> compare#1(@b1, @b2) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.79 compare#1(z, z') -{ 1 }-> compare#2(@b2, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0 1149.20/292.79 compare#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.79 compare#1(z, z') -{ 1 }-> #abs(0) :|: z = 2, z' = @b2, @b2 >= 0 1149.20/292.79 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(@xs, @ys), @x, @y) :|: z = 1 + @y + @ys, @x >= 0, @xs >= 0, @y >= 0, z' = @x, z'' = @xs, @ys >= 0 1149.20/292.79 compare#2(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.79 compare#2(z, z', z'') -{ 1 }-> #abs(0) :|: z = 2, @x >= 0, @xs >= 0, z' = @x, z'' = @xs 1149.20/292.79 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(@r, 0), @r, @x, @y) :|: @x >= 0, z = @r, @y >= 0, z' = @x, @r >= 0, z'' = @y 1149.20/292.79 compare#4(z, z', z'', z1) -{ 1 }-> @r :|: z' = @r, @x >= 0, z = 1, z1 = @y, z'' = @x, @y >= 0, @r >= 0 1149.20/292.79 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(@x, @y)), @x, @y) :|: z = 2, z' = @r, @x >= 0, z1 = @y, z'' = @x, @y >= 0, @r >= 0 1149.20/292.79 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 1149.20/292.79 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, @x >= 0, @y >= 0, z' = @x, z'' = @y 1149.20/292.79 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(@x, @y))) :|: @x >= 0, z = 1, @y >= 0, z' = @x, z'' = @y 1149.20/292.79 compare#5(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.79 compare#6(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.79 compare#6(z) -{ 1 }-> #abs(0) :|: z = 1 1149.20/292.79 compare#6(z) -{ 1 }-> #abs(1 + (1 + 0)) :|: z = 2 1149.20/292.79 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(@x, @y), @r), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(@x, @y), @r), 0)) :|: z = @x, @x >= 0, z' = @y, z'' = @r, @y >= 0, @r >= 0 1149.20/292.79 diff#1(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.79 diff#1(z) -{ 1 }-> #abs(0) :|: z = 1 1149.20/292.79 diff#1(z) -{ 1 }-> #abs(1 + (1 + 0)) :|: z = 2 1149.20/292.79 div(z, z') -{ 1 }-> #div(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.79 leq(z, z') -{ 2 }-> #less(compare#1(@b1, @b2), 1 + (1 + 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.79 minus(z, z') -{ 1 }-> #sub(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.80 mod(z, z') -{ 2 }-> minus(@x, times(@x, #div(@x, @y))) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.80 mult(z, z') -{ 1 }-> mult#1(@b1, @b2) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, @b2), @b2, @x) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0 1149.20/292.80 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, @b2), @b2, @x) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0 1149.20/292.80 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' = @b2, @b2 >= 0 1149.20/292.80 mult#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(@x, 1 + (1 + 0)), @b2, @zs) :|: z' = @b2, @x >= 0, z = @zs, @b2 >= 0, @zs >= 0, z'' = @x 1149.20/292.80 mult#3(z, z', z'') -{ 1 }-> @zs :|: z' = @b2, z = 1, @b2 >= 0, @zs >= 0, z'' = @zs 1149.20/292.80 mult#3(z, z', z'') -{ 1 }-> add(@b2, @zs) :|: z = 2, z' = @b2, @b2 >= 0, @zs >= 0, z'' = @zs 1149.20/292.80 mult#3(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 mult3(z, z', z'') -{ 2 }-> mult(mult#1(@b1, @b2), @b2) :|: z' = @b2, z'' = @b3, @b3 >= 0, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 plus(z, z') -{ 1 }-> #add(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.80 sub(z, z') -{ 2 }-> sub#1(sub'(@b1, @b2, 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 sub(z, z') -{ 1 }-> sub#1(sub'(@b1, @b2, 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.20/292.80 sub'(z, z', z'') -{ 1 }-> sub'#1(@b1, @b2, @r) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0, z'' = @r, @r >= 0 1149.20/292.80 sub'#1(z, z', z'') -{ 1 }-> sub'#2(@b2, @r, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0, z'' = @r, @r >= 0 1149.20/292.80 sub'#1(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + @r :|: z = 2, z' = @b2, @b2 >= 0, z'' = @r, @r >= 0 1149.20/292.80 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(@x, @y), @r), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(@x, @y), @r), 0)), @xs, @ys) :|: z' = @r, z = 1 + @y + @ys, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @y >= 0, @ys >= 0, @r >= 0 1149.20/292.80 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 1149.20/292.80 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + @r :|: z = 2, z' = @r, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @r >= 0 1149.20/292.80 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(@xs, @ys, @r'), @z) :|: z' = @xs, z = 1 + @z + @r', @xs >= 0, z'' = @ys, @r' >= 0, @ys >= 0, @z >= 0 1149.20/292.80 sub'#3(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 sub'#4(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), @z, @zs) + @s :|: z' = @z, z = 1 + @zs + @s, @zs >= 0, @s >= 0, @z >= 0 1149.20/292.80 sub'#5(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 sub'#5(z, z', z'') -{ 1 }-> 1 + @z + @zs :|: z' = @z, z = 1, @zs >= 0, z'' = @zs, @z >= 0 1149.20/292.80 sub'#5(z, z', z'') -{ 1 }-> 1 + #abs(0) + @zs :|: z = 2, z' = @z, @zs >= 0, z'' = @zs, @z >= 0 1149.20/292.80 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(@x, @y), @r)) :|: z = @x, @x >= 0, z' = @y, z'' = @r, @y >= 0, @r >= 0 1149.20/292.80 sum#1(z) -{ 2 }-> sum#2(#eq(@s, 0), @s) :|: z = @s, @s >= 0 1149.20/292.80 sum#2(z, z') -{ 2 }-> sum#3(#eq(@s, 1 + (1 + 0)), @s) :|: z = 1, z' = @s, @s >= 0 1149.20/292.80 sum#2(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 sum#2(z, z') -{ 1 }-> 1 + #abs(0) + #abs(0) :|: z = 2, z' = @s, @s >= 0 1149.20/292.80 sum#3(z, z') -{ 2 }-> sum#4(#eq(@s, 1 + (1 + (1 + 0)))) :|: z = 1, z' = @s, @s >= 0 1149.20/292.80 sum#3(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 sum#3(z, z') -{ 1 }-> 1 + #abs(1 + (1 + 0)) + #abs(0) :|: z = 2, z' = @s, @s >= 0 1149.20/292.80 sum#4(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 sum#4(z) -{ 1 }-> 1 + #abs(0) + #abs(1 + (1 + 0)) :|: z = 2 1149.20/292.80 sum#4(z) -{ 1 }-> 1 + #abs(1 + (1 + 0)) + #abs(1 + (1 + 0)) :|: z = 1 1149.20/292.80 times(z, z') -{ 1 }-> #mult(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.80 1149.20/292.80 1149.20/292.80 ---------------------------------------- 1149.20/292.80 1149.20/292.80 (15) InliningProof (UPPER BOUND(ID)) 1149.20/292.80 Inlined the following terminating rules on right-hand sides where appropriate: 1149.20/292.80 1149.20/292.80 #abs(z) -{ 1 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + @x 1149.20/292.80 #abs(z) -{ 1 }-> 1 + @x :|: @x >= 0, z = 1 + @x 1149.20/292.80 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.20/292.80 #abs(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.20/292.80 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.20/292.80 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.20/292.80 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.20/292.80 #and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.20/292.80 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.20/292.80 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.20/292.80 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.80 #ckgt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.80 #cklt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.20/292.80 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.20/292.80 #pred(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 1149.20/292.80 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.20/292.80 #pred(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 1149.20/292.80 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.20/292.80 #pred(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 #succ(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 #succ(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 1149.20/292.80 #succ(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 1149.20/292.80 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.20/292.80 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.20/292.80 compare#6(z) -{ 1 }-> #abs(0) :|: z = 1 1149.20/292.80 compare#6(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 compare#6(z) -{ 1 }-> #abs(1 + (1 + 0)) :|: z = 2 1149.20/292.80 diff#1(z) -{ 1 }-> #abs(1 + (1 + 0)) :|: z = 2 1149.20/292.80 diff#1(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 diff#1(z) -{ 1 }-> #abs(0) :|: z = 1 1149.20/292.80 sub'#5(z, z', z'') -{ 1 }-> 1 + #abs(0) + @zs :|: z = 2, z' = @z, @zs >= 0, z'' = @zs, @z >= 0 1149.20/292.80 sub'#5(z, z', z'') -{ 1 }-> 1 + @z + @zs :|: z' = @z, z = 1, @zs >= 0, z'' = @zs, @z >= 0 1149.20/292.80 sub'#5(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 sum#4(z) -{ 1 }-> 1 + #abs(1 + (1 + 0)) + #abs(1 + (1 + 0)) :|: z = 1 1149.20/292.80 sum#4(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 sum#4(z) -{ 1 }-> 1 + #abs(0) + #abs(1 + (1 + 0)) :|: z = 2 1149.20/292.80 1149.20/292.80 ---------------------------------------- 1149.20/292.80 1149.20/292.80 (16) 1149.20/292.80 Obligation: 1149.20/292.80 Complexity RNTS consisting of the following rules: 1149.20/292.80 1149.20/292.80 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.20/292.80 #abs(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 #abs(z) -{ 1 }-> 1 + @x :|: @x >= 0, z = 1 + @x 1149.20/292.80 #abs(z) -{ 1 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + @x 1149.20/292.80 #add(z, z') -{ 0 }-> @y :|: z' = @y, z = 0, @y >= 0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @y = 1 + (1 + 0) 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' = @y, @y >= 0, v0 >= 0, @y = v0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0, v0 >= 0, 0 = v0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0, v0' >= 0, 0 = v0' 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), v0 >= 0, 1 + (1 + @x) = v0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), 1 + (1 + @x) = 1 + (1 + 0) 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), v0 >= 0, 1 + (1 + (1 + @x)) = v0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + @x) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)) 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), @x' >= 0, 1 + (1 + @x) = 1 + (1 + (1 + @x')) 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), @x' >= 0, 1 + (1 + (1 + @x)) = 1 + (1 + (1 + @x')) 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @y = 0 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: @x >= 0, z' = @y, z = 1 + (1 + (1 + @x)), @y >= 0, 0 = 0 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0, 0 = 0 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0), 0 = 0 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + 0), z' = @y, @y >= 0, @x >= 0, @y = 1 + (1 + @x) 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)), @x' >= 0, 1 + (1 + @x) = 1 + (1 + @x') 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x), @x' >= 0, 1 + (1 + (1 + @x)) = 1 + (1 + @x') 1149.20/292.80 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + @x16), @y))) :|: @x16 >= 0, z' = @y, z = 1 + (1 + (1 + (1 + @x16))), @y >= 0 1149.20/292.80 #add(z, z') -{ 0 }-> #pred(0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, v0 >= 0, @y = v0 1149.20/292.80 #add(z, z') -{ 0 }-> #pred(0) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 1 + (1 + 0) 1149.20/292.80 #add(z, z') -{ 0 }-> #pred(1 + (1 + @x)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + (1 + @x)) 1149.20/292.80 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @y = 0 1149.20/292.80 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + @x))) :|: z' = @y, z = 1 + (1 + (1 + 0)), @y >= 0, @x >= 0, @y = 1 + (1 + @x) 1149.20/292.80 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + @x15), @y))) :|: z = 1 + (1 + (1 + (1 + @x15))), z' = @y, @x15 >= 0, @y >= 0 1149.20/292.80 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.20/292.80 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.20/292.80 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.20/292.80 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.20/292.80 #and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.20/292.80 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.80 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.20/292.80 #ckgt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.20/292.80 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.80 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.20/292.80 #cklt(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' = 1 + @y, @y >= 0 1149.20/292.80 #compare(z, z') -{ 0 }-> 3 :|: @x >= 0, z = 1 + @x, z' = 0 1149.20/292.80 #compare(z, z') -{ 0 }-> 3 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.80 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' = 1 + @y, @y >= 0 1149.20/292.80 #compare(z, z') -{ 0 }-> 2 :|: @x >= 0, z = 1 + @x, z' = 0 1149.20/292.80 #compare(z, z') -{ 0 }-> 2 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.80 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.80 #compare(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 #compare(z, z') -{ 0 }-> #compare(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.80 #compare(z, z') -{ 0 }-> #compare(@y, @x) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.80 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.80 #div(z, z') -{ 0 }-> 1 :|: @x >= 0, z = 1 + @x, z' = 0 1149.20/292.80 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' = 1 + @y, @y >= 0 1149.20/292.80 #div(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 #div(z, z') -{ 0 }-> 1 + #natdiv(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.80 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.20/292.80 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.20/292.80 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' = 1 + @y, @y >= 0 1149.20/292.80 #eq(z, z') -{ 0 }-> 1 :|: @x >= 0, z = 1 + @x, z' = 0 1149.20/292.80 #eq(z, z') -{ 0 }-> 1 :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.80 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.20/292.80 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.80 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.80 #eq(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 #eq(z, z') -{ 0 }-> #eq(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.80 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.80 #equal(z, z') -{ 1 }-> #eq(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.80 #greater(z, z') -{ 1 }-> 2 :|: @y' >= 0, z' = 1 + @y', z = 0, 2 = 2 1149.20/292.80 #greater(z, z') -{ 1 }-> 2 :|: @x2 >= 0, z = 1 + @x2, z' = 0, 2 = 2 1149.20/292.80 #greater(z, z') -{ 1 }-> 2 :|: @x3 >= 0, z' = 1 + @y4, z = 1 + @x3, @y4 >= 0, 2 = 2 1149.20/292.80 #greater(z, z') -{ 1 }-> 2 :|: z = 1 + @x5, @x5 >= 0, z' = 0, 2 = 2 1149.20/292.80 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.20/292.80 #greater(z, z') -{ 1 }-> 1 :|: z' = 1 + @y'', @y'' >= 0, z = 0, 3 = 3 1149.20/292.80 #greater(z, z') -{ 1 }-> 1 :|: z' = 1 + @y1, @y1 >= 0, z = 0, 3 = 3 1149.20/292.80 #greater(z, z') -{ 1 }-> 1 :|: z = 1 + @x', @x' >= 0, z' = 0, 3 = 3 1149.20/292.80 #greater(z, z') -{ 1 }-> 1 :|: @y3 >= 0, @x1 >= 0, z' = 1 + @y3, z = 1 + @x1, 3 = 3 1149.20/292.80 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.20/292.80 #greater(z, z') -{ 1 }-> 0 :|: @y' >= 0, z' = 1 + @y', z = 0, v0 >= 0, 2 = v0 1149.20/292.80 #greater(z, z') -{ 1 }-> 0 :|: z' = 1 + @y'', @y'' >= 0, z = 0, v0 >= 0, 3 = v0 1149.20/292.80 #greater(z, z') -{ 1 }-> 0 :|: z' = 1 + @y1, @y1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.20/292.80 #greater(z, z') -{ 1 }-> 0 :|: z = 1 + @x', @x' >= 0, z' = 0, v0 >= 0, 3 = v0 1149.20/292.80 #greater(z, z') -{ 1 }-> 0 :|: @y3 >= 0, @x1 >= 0, z' = 1 + @y3, z = 1 + @x1, v0 >= 0, 3 = v0 1149.20/292.80 #greater(z, z') -{ 1 }-> 0 :|: @x2 >= 0, z = 1 + @x2, z' = 0, v0 >= 0, 2 = v0 1149.20/292.80 #greater(z, z') -{ 1 }-> 0 :|: @x3 >= 0, z' = 1 + @y4, z = 1 + @x3, @y4 >= 0, v0 >= 0, 2 = v0 1149.20/292.80 #greater(z, z') -{ 1 }-> 0 :|: z = 1 + @x5, @x5 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.20/292.80 #greater(z, z') -{ 1 }-> 0 :|: z = @x, @x >= 0, z' = @y, @y >= 0, v0 >= 0, 0 = v0 1149.20/292.80 #greater(z, z') -{ 1 }-> #ckgt(#compare(@x4, @y5)) :|: z' = 1 + @y5, @y5 >= 0, z = 1 + @x4, @x4 >= 0 1149.20/292.80 #greater(z, z') -{ 1 }-> #ckgt(#compare(@x6, @y6)) :|: z = 1 + @x6, z' = 1 + @y6, @x6 >= 0, @y6 >= 0 1149.20/292.80 #greater(z, z') -{ 1 }-> #ckgt(#compare(@y2, @x'')) :|: z = 1 + @x'', z' = 1 + @y2, @y2 >= 0, @x'' >= 0 1149.20/292.80 #less(z, z') -{ 1 }-> 2 :|: @y8 >= 0, z = 0, z' = 1 + @y8, 3 = 3 1149.20/292.80 #less(z, z') -{ 1 }-> 2 :|: @y9 >= 0, z' = 1 + @y9, z = 0, 3 = 3 1149.20/292.80 #less(z, z') -{ 1 }-> 2 :|: z = 1 + @x7, @x7 >= 0, z' = 0, 3 = 3 1149.20/292.80 #less(z, z') -{ 1 }-> 2 :|: @y11 >= 0, z = 1 + @x9, z' = 1 + @y11, @x9 >= 0, 3 = 3 1149.20/292.80 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.20/292.80 #less(z, z') -{ 1 }-> 1 :|: @y7 >= 0, z = 0, z' = 1 + @y7, 2 = 2 1149.20/292.80 #less(z, z') -{ 1 }-> 1 :|: z = 1 + @x10, @x10 >= 0, z' = 0, 2 = 2 1149.20/292.80 #less(z, z') -{ 1 }-> 1 :|: z = 1 + @x11, @x11 >= 0, @y12 >= 0, z' = 1 + @y12, 2 = 2 1149.20/292.80 #less(z, z') -{ 1 }-> 1 :|: z = 1 + @x13, @x13 >= 0, z' = 0, 2 = 2 1149.20/292.80 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.20/292.80 #less(z, z') -{ 1 }-> 0 :|: @y7 >= 0, z = 0, z' = 1 + @y7, v0 >= 0, 2 = v0 1149.20/292.80 #less(z, z') -{ 1 }-> 0 :|: @y8 >= 0, z = 0, z' = 1 + @y8, v0 >= 0, 3 = v0 1149.20/292.80 #less(z, z') -{ 1 }-> 0 :|: @y9 >= 0, z' = 1 + @y9, z = 0, v0 >= 0, 3 = v0 1149.20/292.80 #less(z, z') -{ 1 }-> 0 :|: z = 1 + @x7, @x7 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.20/292.80 #less(z, z') -{ 1 }-> 0 :|: @y11 >= 0, z = 1 + @x9, z' = 1 + @y11, @x9 >= 0, v0 >= 0, 3 = v0 1149.20/292.80 #less(z, z') -{ 1 }-> 0 :|: z = 1 + @x10, @x10 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.20/292.80 #less(z, z') -{ 1 }-> 0 :|: z = 1 + @x11, @x11 >= 0, @y12 >= 0, z' = 1 + @y12, v0 >= 0, 2 = v0 1149.20/292.80 #less(z, z') -{ 1 }-> 0 :|: z = 1 + @x13, @x13 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.20/292.80 #less(z, z') -{ 1 }-> 0 :|: z = @x, @x >= 0, z' = @y, @y >= 0, v0 >= 0, 0 = v0 1149.20/292.80 #less(z, z') -{ 1 }-> #cklt(#compare(@x12, @y13)) :|: @x12 >= 0, z = 1 + @x12, @y13 >= 0, z' = 1 + @y13 1149.20/292.80 #less(z, z') -{ 1 }-> #cklt(#compare(@x14, @y14)) :|: z = 1 + @x14, @x14 >= 0, @y14 >= 0, z' = 1 + @y14 1149.20/292.80 #less(z, z') -{ 1 }-> #cklt(#compare(@y10, @x8)) :|: z' = 1 + @y10, @y10 >= 0, z = 1 + @x8, @x8 >= 0 1149.20/292.80 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.20/292.80 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 1 + @y, @y >= 0 1149.20/292.80 #mult(z, z') -{ 0 }-> 0 :|: @x >= 0, z = 1 + @x, z' = 0 1149.20/292.80 #mult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 #mult(z, z') -{ 0 }-> 1 + #natmult(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.80 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.80 #natdiv(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(@x, 1 + 0) :|: @x >= 0, z = 1 + @x, z' = 1 + 0 1149.20/292.80 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.80 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(@x385, @y383), 1 + (1 + @y383)) :|: z = 1 + (1 + @x385), @x385 >= 0, z' = 1 + (1 + @y383), @y383 >= 0 1149.20/292.80 #natmult(z, z') -{ 0 }-> 0 :|: z' = @y, z = 0, @y >= 0 1149.20/292.80 #natmult(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 #natmult(z, z') -{ 0 }-> #add(1 + @y, 0) :|: z = 1 + 0, z' = @y, @y >= 0 1149.20/292.80 #natmult(z, z') -{ 0 }-> #add(1 + @y, 0) :|: @x >= 0, z = 1 + @x, z' = @y, @y >= 0 1149.20/292.80 #natmult(z, z') -{ 0 }-> #add(1 + @y, #add(1 + @y, #natmult(@x386, @y))) :|: @x386 >= 0, z' = @y, @y >= 0, z = 1 + (1 + @x386) 1149.20/292.80 #natsub(z, z') -{ 0 }-> @x :|: z = @x, @x >= 0, z' = 0 1149.20/292.80 #natsub(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 #natsub(z, z') -{ 0 }-> #natsub(@x, @y) :|: @x >= 0, z = 1 + @x, z' = 1 + @y, @y >= 0 1149.20/292.80 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.20/292.80 #pred(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 #pred(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 1149.20/292.80 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.20/292.80 #pred(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 1149.20/292.80 #sub(z, z') -{ 0 }-> @x :|: z = @x, @x >= 0, z' = 0 1149.20/292.80 #sub(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 #sub(z, z') -{ 0 }-> #add(@x, 1 + @y) :|: z = @x, @x >= 0, z' = 1 + @y, @y >= 0 1149.20/292.80 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.20/292.80 #succ(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 #succ(z) -{ 0 }-> 1 + (1 + @x) :|: @x >= 0, z = 1 + (1 + (1 + @x)) 1149.20/292.80 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.20/292.80 #succ(z) -{ 0 }-> 1 + (1 + (1 + @x)) :|: @x >= 0, z = 1 + (1 + @x) 1149.20/292.80 add(z, z') -{ 2 }-> add'(@b1, @b2, 0) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 add(z, z') -{ 1 }-> add'(@b1, @b2, 0) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 add'(z, z', z'') -{ 1 }-> add'#1(@b1, @b2, @r) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0, z'' = @r, @r >= 0 1149.20/292.80 add'#1(z, z', z'') -{ 1 }-> add'#2(@b2, @r, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0, z'' = @r, @r >= 0 1149.20/292.80 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' = @b2, @b2 >= 0, z'' = @r, @r >= 0 1149.20/292.80 add'#1(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(@x, @y), @r)), @xs, @ys) :|: z' = @r, z = 1 + @y + @ys, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @y >= 0, @ys >= 0, @r >= 0 1149.20/292.80 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z' = @r, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @r >= 0 1149.20/292.80 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 1149.20/292.80 add'#3(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(@xs, @ys, @r') :|: z' = @xs, z = 1 + @z + @r', @xs >= 0, z'' = @ys, @r' >= 0, @ys >= 0, @z >= 0 1149.20/292.80 bitToInt(z) -{ 1 }-> bitToInt'(@b, 0) :|: z = @b, @b >= 0 1149.20/292.80 bitToInt(z) -{ 2 }-> bitToInt'(@b, 1 + (1 + 0)) :|: z = @b, @b >= 0 1149.20/292.80 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(@b, @n) :|: z' = @n, @n >= 0, z = @b, @b >= 0 1149.20/292.80 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, @n), bitToInt'(@xs, #mult(@n, 1 + (1 + (1 + 0))))) :|: z' = @n, @x >= 0, z = 1 + @x + @xs, @n >= 0, @xs >= 0 1149.20/292.80 bitToInt'#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' = @n, @n >= 0, 0 = 0 1149.20/292.80 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' = @n, @n >= 0, v0 >= 0, 0 = v0 1149.20/292.80 compare(z, z') -{ 1 }-> compare#1(@b1, @b2) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 compare#1(z, z') -{ 1 }-> compare#2(@b2, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0 1149.20/292.80 compare#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' = @b2, @b2 >= 0, 0 = 0 1149.20/292.80 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' = @b2, @b2 >= 0, v0 >= 0, 0 = v0 1149.20/292.80 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(@xs, @ys), @x, @y) :|: z = 1 + @y + @ys, @x >= 0, @xs >= 0, @y >= 0, z' = @x, z'' = @xs, @ys >= 0 1149.20/292.80 compare#2(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, @x >= 0, @xs >= 0, z' = @x, z'' = @xs, 0 = 0 1149.20/292.80 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, @x >= 0, @xs >= 0, z' = @x, z'' = @xs, v0 >= 0, 0 = v0 1149.20/292.80 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(@r, 0), @r, @x, @y) :|: @x >= 0, z = @r, @y >= 0, z' = @x, @r >= 0, z'' = @y 1149.20/292.80 compare#4(z, z', z'', z1) -{ 1 }-> @r :|: z' = @r, @x >= 0, z = 1, z1 = @y, z'' = @x, @y >= 0, @r >= 0 1149.20/292.80 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(@x, @y)), @x, @y) :|: z = 2, z' = @r, @x >= 0, z1 = @y, z'' = @x, @y >= 0, @r >= 0 1149.20/292.80 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 1149.20/292.80 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, @x >= 0, @y >= 0, z' = @x, z'' = @y 1149.20/292.80 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(@x, @y))) :|: @x >= 0, z = 1, @y >= 0, z' = @x, z'' = @y 1149.20/292.80 compare#5(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 compare#6(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.20/292.80 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.20/292.80 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.80 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.80 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.80 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(@x, @y), @r), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(@x, @y), @r), 0)) :|: z = @x, @x >= 0, z' = @y, z'' = @r, @y >= 0, @r >= 0 1149.20/292.80 diff#1(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.20/292.80 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.20/292.80 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.80 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.80 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.80 div(z, z') -{ 1 }-> #div(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.80 leq(z, z') -{ 2 }-> #less(compare#1(@b1, @b2), 1 + (1 + 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 minus(z, z') -{ 1 }-> #sub(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.80 mod(z, z') -{ 2 }-> minus(@x, times(@x, #div(@x, @y))) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.80 mult(z, z') -{ 1 }-> mult#1(@b1, @b2) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, @b2), @b2, @x) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0 1149.20/292.80 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, @b2), @b2, @x) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0 1149.20/292.80 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' = @b2, @b2 >= 0 1149.20/292.80 mult#1(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(@x, 1 + (1 + 0)), @b2, @zs) :|: z' = @b2, @x >= 0, z = @zs, @b2 >= 0, @zs >= 0, z'' = @x 1149.20/292.80 mult#3(z, z', z'') -{ 1 }-> @zs :|: z' = @b2, z = 1, @b2 >= 0, @zs >= 0, z'' = @zs 1149.20/292.80 mult#3(z, z', z'') -{ 1 }-> add(@b2, @zs) :|: z = 2, z' = @b2, @b2 >= 0, @zs >= 0, z'' = @zs 1149.20/292.80 mult#3(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 mult3(z, z', z'') -{ 2 }-> mult(mult#1(@b1, @b2), @b2) :|: z' = @b2, z'' = @b3, @b3 >= 0, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 plus(z, z') -{ 1 }-> #add(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.80 sub(z, z') -{ 2 }-> sub#1(sub'(@b1, @b2, 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 sub(z, z') -{ 1 }-> sub#1(sub'(@b1, @b2, 0)) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0 1149.20/292.80 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.20/292.80 sub'(z, z', z'') -{ 1 }-> sub'#1(@b1, @b2, @r) :|: z' = @b2, @b2 >= 0, z = @b1, @b1 >= 0, z'' = @r, @r >= 0 1149.20/292.80 sub'#1(z, z', z'') -{ 1 }-> sub'#2(@b2, @r, @x, @xs) :|: z' = @b2, @x >= 0, z = 1 + @x + @xs, @xs >= 0, @b2 >= 0, z'' = @r, @r >= 0 1149.20/292.80 sub'#1(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + @r :|: z = 2, z' = @b2, @b2 >= 0, z'' = @r, @r >= 0 1149.20/292.80 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(@x, @y), @r), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(@x, @y), @r), 0)), @xs, @ys) :|: z' = @r, z = 1 + @y + @ys, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @y >= 0, @ys >= 0, @r >= 0 1149.20/292.80 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 1149.20/292.80 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + @r :|: z = 2, z' = @r, @x >= 0, z1 = @xs, @xs >= 0, z'' = @x, @r >= 0 1149.20/292.80 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(@xs, @ys, @r'), @z) :|: z' = @xs, z = 1 + @z + @r', @xs >= 0, z'' = @ys, @r' >= 0, @ys >= 0, @z >= 0 1149.20/292.80 sub'#3(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 sub'#4(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), @z, @zs) + @s :|: z' = @z, z = 1 + @zs + @s, @zs >= 0, @s >= 0, @z >= 0 1149.20/292.80 sub'#5(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 1149.20/292.80 sub'#5(z, z', z'') -{ 1 }-> 1 + @z + @zs :|: z' = @z, z = 1, @zs >= 0, z'' = @zs, @z >= 0 1149.20/292.80 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + @zs :|: z = 2, z' = @z, @zs >= 0, z'' = @zs, @z >= 0, 0 = 0 1149.20/292.80 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + @zs :|: z = 2, z' = @z, @zs >= 0, z'' = @zs, @z >= 0, v0 >= 0, 0 = v0 1149.20/292.80 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(@x, @y), @r)) :|: z = @x, @x >= 0, z' = @y, z'' = @r, @y >= 0, @r >= 0 1149.20/292.80 sum#1(z) -{ 2 }-> sum#2(#eq(@s, 0), @s) :|: z = @s, @s >= 0 1149.20/292.80 sum#2(z, z') -{ 2 }-> sum#3(#eq(@s, 1 + (1 + 0)), @s) :|: z = 1, z' = @s, @s >= 0 1149.20/292.80 sum#2(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' = @s, @s >= 0, 0 = 0 1149.20/292.80 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' = @s, @s >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.20/292.80 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' = @s, @s >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.20/292.80 sum#3(z, z') -{ 2 }-> sum#4(#eq(@s, 1 + (1 + (1 + 0)))) :|: z = 1, z' = @s, @s >= 0 1149.20/292.80 sum#3(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 1149.20/292.80 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' = @s, @s >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.20/292.80 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' = @s, @s >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.20/292.80 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' = @s, @s >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.20/292.80 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' = @s, @s >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.20/292.80 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' = @s, @s >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.20/292.80 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' = @s, @s >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.20/292.80 sum#4(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 1149.20/292.80 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.20/292.80 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.80 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.20/292.80 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.80 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.80 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.80 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.80 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.80 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.80 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.80 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.80 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.80 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.80 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.80 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.80 times(z, z') -{ 1 }-> #mult(@x, @y) :|: z = @x, @x >= 0, z' = @y, @y >= 0 1149.20/292.80 1149.20/292.80 1149.20/292.80 ---------------------------------------- 1149.20/292.80 1149.20/292.80 (17) SimplificationProof (BOTH BOUNDS(ID, ID)) 1149.20/292.80 Simplified the RNTS by moving equalities from the constraints into the right-hand sides. 1149.20/292.80 ---------------------------------------- 1149.20/292.80 1149.20/292.80 (18) 1149.20/292.80 Obligation: 1149.20/292.80 Complexity RNTS consisting of the following rules: 1149.20/292.80 1149.20/292.80 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.20/292.80 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.80 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.20/292.80 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.20/292.80 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.80 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.20/292.80 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.20/292.80 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.20/292.80 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 1149.20/292.80 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.20/292.80 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.20/292.82 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.20/292.82 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.20/292.82 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.20/292.82 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.20/292.82 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.20/292.82 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.82 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.20/292.82 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.20/292.82 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.82 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.20/292.82 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.82 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.82 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.82 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.20/292.82 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.20/292.82 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.20/292.82 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.20/292.82 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.20/292.82 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.20/292.82 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.20/292.82 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.20/292.82 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.20/292.82 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.20/292.82 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.20/292.82 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.20/292.82 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.20/292.82 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.20/292.82 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.20/292.82 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.20/292.82 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.20/292.82 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.82 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.20/292.82 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.20/292.82 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.20/292.82 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.20/292.82 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.20/292.82 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.20/292.82 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.20/292.82 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.20/292.82 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.20/292.82 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.20/292.82 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.20/292.82 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.20/292.82 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.20/292.82 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.20/292.82 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.20/292.82 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.20/292.82 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.20/292.82 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.20/292.82 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.20/292.82 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.20/292.82 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.20/292.82 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.20/292.82 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.20/292.82 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.20/292.82 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.20/292.82 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.20/292.82 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.20/292.82 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.20/292.82 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.20/292.82 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.20/292.82 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.20/292.82 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.20/292.82 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.20/292.82 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.20/292.82 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.20/292.82 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.20/292.82 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.20/292.82 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.20/292.82 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.20/292.82 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.20/292.82 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.20/292.82 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.20/292.82 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.20/292.82 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.20/292.82 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.20/292.82 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.20/292.82 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.20/292.82 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.20/292.82 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.20/292.82 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.20/292.82 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.20/292.82 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.20/292.82 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.20/292.82 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.20/292.82 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.20/292.82 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.20/292.82 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.20/292.82 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.20/292.82 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.20/292.82 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.20/292.82 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.20/292.82 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.20/292.82 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.20/292.82 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.20/292.82 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.20/292.82 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.20/292.82 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.20/292.82 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.20/292.82 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.20/292.82 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.20/292.82 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.20/292.82 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.20/292.82 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.20/292.82 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.20/292.82 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.20/292.82 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.20/292.82 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.20/292.82 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.20/292.82 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.20/292.82 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.20/292.82 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.20/292.82 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.20/292.82 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.20/292.82 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.20/292.82 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.82 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.20/292.82 1149.20/292.82 1149.20/292.82 ---------------------------------------- 1149.20/292.82 1149.20/292.82 (19) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) 1149.20/292.82 Found the following analysis order by SCC decomposition: 1149.20/292.82 1149.20/292.82 { #ckgt } 1149.20/292.82 { sub#1 } 1149.20/292.82 { #pred } 1149.20/292.82 { #natsub } 1149.20/292.82 { compare#6 } 1149.20/292.82 { sum#4 } 1149.20/292.82 { #and } 1149.20/292.82 { sub'#5 } 1149.20/292.82 { #cklt } 1149.20/292.82 { #compare } 1149.20/292.82 { diff#1 } 1149.20/292.82 { #abs } 1149.20/292.82 { #succ } 1149.20/292.82 { #greater } 1149.20/292.82 { #add } 1149.20/292.82 { #natdiv } 1149.20/292.82 { #eq } 1149.20/292.82 { #less } 1149.20/292.82 { #sub } 1149.20/292.82 { #natmult } 1149.20/292.82 { plus } 1149.20/292.82 { #div } 1149.20/292.82 { sum#3 } 1149.20/292.82 { sub'#4 } 1149.20/292.82 { #equal } 1149.20/292.82 { minus } 1149.20/292.82 { #mult } 1149.20/292.82 { div } 1149.20/292.82 { sum#2 } 1149.20/292.82 { compare#5 } 1149.20/292.82 { times } 1149.20/292.82 { bitToInt', bitToInt'#1 } 1149.20/292.82 { sum#1 } 1149.20/292.82 { compare#4 } 1149.20/292.82 { mod } 1149.20/292.82 { bitToInt } 1149.20/292.82 { sum } 1149.20/292.82 { add'#2, add'#1, add', add'#3 } 1149.20/292.82 { compare#3 } 1149.20/292.82 { diff } 1149.20/292.82 { sub'#2, sub'#1, sub'#3 } 1149.20/292.82 { add } 1149.20/292.82 { compare#1, compare#2 } 1149.20/292.82 { sub' } 1149.20/292.82 { mult#3 } 1149.20/292.82 { leq } 1149.20/292.82 { compare } 1149.20/292.82 { sub } 1149.20/292.82 { mult#2 } 1149.20/292.82 { mult#1 } 1149.20/292.82 { mult } 1149.20/292.82 { mult3 } 1149.20/292.82 1149.20/292.82 ---------------------------------------- 1149.20/292.82 1149.20/292.82 (20) 1149.20/292.82 Obligation: 1149.20/292.82 Complexity RNTS consisting of the following rules: 1149.20/292.82 1149.20/292.82 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.20/292.82 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.20/292.82 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.20/292.82 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.20/292.82 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.20/292.82 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.20/292.82 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.20/292.82 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.20/292.82 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.82 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.20/292.82 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.20/292.82 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.82 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.20/292.82 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.82 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.82 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.82 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.20/292.82 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.20/292.82 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.20/292.82 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.20/292.82 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.20/292.82 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.20/292.82 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.20/292.82 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.20/292.82 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.20/292.82 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.20/292.82 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.20/292.82 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.20/292.82 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.20/292.82 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.20/292.82 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.20/292.82 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.20/292.82 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.20/292.82 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.82 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.20/292.82 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.20/292.82 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.20/292.82 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.20/292.82 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.20/292.82 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.20/292.82 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.20/292.82 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.20/292.82 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.20/292.82 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.20/292.82 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.20/292.82 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.20/292.82 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.20/292.82 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.20/292.82 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.20/292.82 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.20/292.82 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.20/292.82 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.20/292.82 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.20/292.82 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.20/292.82 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.20/292.82 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.20/292.82 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.20/292.82 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.20/292.82 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.20/292.82 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.20/292.82 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.20/292.82 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.20/292.82 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.20/292.82 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.20/292.82 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.20/292.82 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.20/292.82 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.20/292.82 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.20/292.82 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.20/292.82 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.20/292.82 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.20/292.82 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.20/292.82 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.20/292.82 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.20/292.82 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.20/292.82 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.20/292.82 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.20/292.82 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.20/292.82 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.20/292.82 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.20/292.82 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.20/292.82 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.20/292.82 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.20/292.82 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.20/292.82 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.20/292.82 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.20/292.82 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.20/292.82 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.20/292.82 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.20/292.82 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.20/292.82 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.20/292.82 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.20/292.82 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.20/292.82 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.20/292.82 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.20/292.82 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.20/292.82 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.20/292.82 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.20/292.82 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.20/292.82 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.20/292.82 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.20/292.82 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.20/292.82 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.20/292.82 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.20/292.82 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.20/292.82 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.20/292.82 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.20/292.82 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.20/292.82 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.20/292.82 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.20/292.82 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.20/292.82 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.20/292.82 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.20/292.82 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.20/292.82 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.20/292.82 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.20/292.82 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.20/292.82 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.20/292.82 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.20/292.82 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.82 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.82 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.20/292.82 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.20/292.82 1149.20/292.82 Function symbols to be analyzed: {#ckgt}, {sub#1}, {#pred}, {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.20/292.82 1149.20/292.82 ---------------------------------------- 1149.20/292.82 1149.20/292.82 (21) ResultPropagationProof (UPPER BOUND(ID)) 1149.20/292.82 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1149.20/292.82 ---------------------------------------- 1149.20/292.82 1149.20/292.82 (22) 1149.20/292.82 Obligation: 1149.20/292.82 Complexity RNTS consisting of the following rules: 1149.20/292.82 1149.20/292.82 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.20/292.82 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.20/292.82 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.20/292.82 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.20/292.82 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.20/292.82 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.20/292.82 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.20/292.82 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.20/292.82 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.20/292.82 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.20/292.82 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.20/292.82 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.82 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.20/292.82 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.20/292.82 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.20/292.82 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.20/292.82 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.82 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.20/292.82 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.82 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.82 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.20/292.82 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.20/292.82 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.85 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.85 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.85 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.85 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.85 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.85 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.85 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.85 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.52/292.85 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.52/292.85 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.52/292.85 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.52/292.85 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.85 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.85 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.85 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.85 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.52/292.85 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.52/292.85 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.85 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.85 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.85 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.52/292.85 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.85 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.52/292.85 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.52/292.85 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.52/292.85 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.52/292.85 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.52/292.85 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.52/292.85 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.52/292.85 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.85 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.85 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 1149.52/292.85 Function symbols to be analyzed: {#ckgt}, {sub#1}, {#pred}, {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.52/292.85 1149.52/292.85 ---------------------------------------- 1149.52/292.85 1149.52/292.85 (23) IntTrsBoundProof (UPPER BOUND(ID)) 1149.52/292.85 1149.52/292.85 Computed SIZE bound using CoFloCo for: #ckgt 1149.52/292.85 after applying outer abstraction to obtain an ITS, 1149.52/292.85 resulting in: O(1) with polynomial bound: 2 1149.52/292.85 1149.52/292.85 ---------------------------------------- 1149.52/292.85 1149.52/292.85 (24) 1149.52/292.85 Obligation: 1149.52/292.85 Complexity RNTS consisting of the following rules: 1149.52/292.85 1149.52/292.85 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.52/292.85 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.52/292.85 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.85 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.52/292.85 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.85 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.52/292.85 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.52/292.85 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.85 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.52/292.85 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.85 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.85 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.85 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.85 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.85 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.85 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.85 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.85 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.85 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.85 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.85 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.52/292.85 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.52/292.85 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.52/292.85 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.52/292.85 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.85 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.85 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.85 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.85 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.52/292.85 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.52/292.85 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.85 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.85 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.85 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.52/292.85 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.85 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.52/292.85 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.52/292.85 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.52/292.85 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.52/292.85 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.52/292.85 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.52/292.85 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.52/292.85 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.85 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.85 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 1149.52/292.85 Function symbols to be analyzed: {#ckgt}, {sub#1}, {#pred}, {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.52/292.85 Previous analysis results are: 1149.52/292.85 #ckgt: runtime: ?, size: O(1) [2] 1149.52/292.85 1149.52/292.85 ---------------------------------------- 1149.52/292.85 1149.52/292.85 (25) IntTrsBoundProof (UPPER BOUND(ID)) 1149.52/292.85 1149.52/292.85 Computed RUNTIME bound using CoFloCo for: #ckgt 1149.52/292.85 after applying outer abstraction to obtain an ITS, 1149.52/292.85 resulting in: O(1) with polynomial bound: 0 1149.52/292.85 1149.52/292.85 ---------------------------------------- 1149.52/292.85 1149.52/292.85 (26) 1149.52/292.85 Obligation: 1149.52/292.85 Complexity RNTS consisting of the following rules: 1149.52/292.85 1149.52/292.85 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.52/292.85 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.52/292.85 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.85 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.52/292.85 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.85 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.52/292.85 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.52/292.85 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.85 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.52/292.85 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.85 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.85 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.85 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.85 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.85 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.85 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.85 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.85 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.85 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.85 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.85 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.52/292.85 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.52/292.85 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.52/292.85 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.52/292.85 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.85 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.85 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.85 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.85 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.52/292.85 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.52/292.85 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.85 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.85 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.85 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.52/292.85 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.85 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.52/292.85 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.52/292.85 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.52/292.85 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.52/292.85 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.52/292.85 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.52/292.85 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.52/292.85 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.85 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.85 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 1149.52/292.85 Function symbols to be analyzed: {sub#1}, {#pred}, {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.52/292.85 Previous analysis results are: 1149.52/292.85 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.52/292.85 1149.52/292.85 ---------------------------------------- 1149.52/292.85 1149.52/292.85 (27) ResultPropagationProof (UPPER BOUND(ID)) 1149.52/292.85 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1149.52/292.85 ---------------------------------------- 1149.52/292.85 1149.52/292.85 (28) 1149.52/292.85 Obligation: 1149.52/292.85 Complexity RNTS consisting of the following rules: 1149.52/292.85 1149.52/292.85 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.52/292.85 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.52/292.85 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.85 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.52/292.85 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.85 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.52/292.85 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.52/292.85 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.85 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.52/292.85 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.85 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.85 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.85 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.85 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.52/292.85 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.52/292.85 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.85 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.85 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.85 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.85 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.85 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.85 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.85 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.85 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.85 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.85 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.52/292.85 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.52/292.85 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.52/292.85 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.52/292.85 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.52/292.85 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.85 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.85 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.85 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.85 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.52/292.85 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.52/292.85 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.85 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.52/292.85 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.85 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.85 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.85 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.52/292.85 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.85 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.85 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.85 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.52/292.85 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.52/292.85 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.85 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.52/292.85 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.52/292.85 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.85 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.52/292.85 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.52/292.85 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.52/292.85 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.52/292.85 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.85 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.85 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.85 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.85 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.52/292.85 1149.52/292.85 Function symbols to be analyzed: {sub#1}, {#pred}, {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.52/292.85 Previous analysis results are: 1149.52/292.85 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.52/292.85 1149.52/292.85 ---------------------------------------- 1149.52/292.85 1149.52/292.85 (29) IntTrsBoundProof (UPPER BOUND(ID)) 1149.52/292.85 1149.52/292.85 Computed SIZE bound using KoAT for: sub#1 1149.52/292.85 after applying outer abstraction to obtain an ITS, 1149.52/292.85 resulting in: O(n^1) with polynomial bound: z 1149.52/292.85 1149.52/292.85 ---------------------------------------- 1149.52/292.85 1149.52/292.85 (30) 1149.52/292.85 Obligation: 1149.52/292.85 Complexity RNTS consisting of the following rules: 1149.52/292.85 1149.52/292.85 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.52/292.85 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.52/292.85 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.85 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.52/292.85 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.52/292.85 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.85 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.52/292.85 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.85 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.52/292.85 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.85 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.52/292.85 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.52/292.85 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.85 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.52/292.85 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.85 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.86 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.86 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.86 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.86 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.86 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.86 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.52/292.86 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.86 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.86 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.86 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.86 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.86 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.86 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.86 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.86 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.86 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.86 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.86 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.86 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.86 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.86 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.86 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.52/292.86 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.86 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.52/292.86 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.86 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.52/292.86 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.52/292.86 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.52/292.86 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.52/292.86 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.52/292.86 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.52/292.86 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.86 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.86 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.86 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.86 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.86 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.86 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.86 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.52/292.86 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.86 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.86 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.86 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.86 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.86 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.86 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.86 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.86 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.86 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.86 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.86 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.86 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.86 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.86 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.86 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.86 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.52/292.86 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.52/292.86 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.86 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.52/292.86 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.86 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.86 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.86 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.86 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.86 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.86 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.52/292.86 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.86 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.52/292.86 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.52/292.86 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.52/292.86 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.52/292.86 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.86 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.86 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.86 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.52/292.86 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.86 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.86 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.86 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.86 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.86 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.86 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.86 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.86 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.86 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.86 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.86 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.86 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.86 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.86 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.52/292.86 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.52/292.86 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.52/292.86 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.52/292.86 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.86 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.86 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.86 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.52/292.86 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.86 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.52/292.86 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.86 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.86 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.86 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.52/292.86 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.86 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.86 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.52/292.86 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.86 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.86 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.86 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.86 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.86 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.86 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.86 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.86 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.86 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.52/292.86 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.86 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.52/292.86 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.52/292.86 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.86 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.86 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.52/292.86 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.52/292.86 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.86 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.52/292.86 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.52/292.86 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.52/292.86 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.52/292.86 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.52/292.86 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.86 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.86 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.86 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.86 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.86 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.86 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.86 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.86 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.86 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.86 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.86 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.86 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.86 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.86 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.86 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.86 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.86 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.86 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.86 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.86 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.52/292.86 1149.52/292.86 Function symbols to be analyzed: {sub#1}, {#pred}, {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.52/292.86 Previous analysis results are: 1149.52/292.86 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.52/292.86 sub#1: runtime: ?, size: O(n^1) [z] 1149.52/292.86 1149.52/292.86 ---------------------------------------- 1149.52/292.86 1149.52/292.86 (31) IntTrsBoundProof (UPPER BOUND(ID)) 1149.52/292.86 1149.52/292.86 Computed RUNTIME bound using CoFloCo for: sub#1 1149.52/292.86 after applying outer abstraction to obtain an ITS, 1149.52/292.86 resulting in: O(1) with polynomial bound: 1 1149.52/292.86 1149.52/292.86 ---------------------------------------- 1149.52/292.86 1149.52/292.86 (32) 1149.52/292.86 Obligation: 1149.52/292.86 Complexity RNTS consisting of the following rules: 1149.52/292.86 1149.52/292.86 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.52/292.86 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.86 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.52/292.86 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.52/292.86 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.52/292.86 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.86 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.52/292.86 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.86 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.52/292.86 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.52/292.86 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.52/292.86 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.52/292.86 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.52/292.86 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.86 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.52/292.86 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.52/292.86 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.52/292.86 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.52/292.86 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.52/292.86 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.52/292.86 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.52/292.86 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.52/292.86 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.52/292.86 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.52/292.86 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.52/292.86 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.52/292.86 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.86 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 1149.52/292.86 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.86 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.52/292.86 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.52/292.86 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.52/292.86 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.86 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.86 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.52/292.86 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.52/292.86 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.52/292.86 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.52/292.86 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.86 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.52/292.86 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.86 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.52/292.86 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.86 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.52/292.86 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.86 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.52/292.86 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.52/292.86 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.52/292.86 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.52/292.86 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.86 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.86 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.86 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.86 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.86 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.86 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.86 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.86 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.52/292.86 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.86 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.86 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.86 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.86 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.86 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.86 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.86 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.86 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.86 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.86 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.86 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.86 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.86 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.86 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.86 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.86 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.52/292.88 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.88 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.88 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.88 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.88 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.88 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.88 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.52/292.88 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.88 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.88 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.88 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.88 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.88 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.88 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.88 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.88 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.88 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.88 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.88 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.88 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.52/292.88 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.52/292.88 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.88 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.52/292.88 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.88 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.88 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.88 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.88 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.52/292.88 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.52/292.88 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.52/292.88 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.52/292.88 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.88 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.88 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.52/292.88 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.88 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.88 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.88 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.88 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.52/292.88 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.52/292.88 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.88 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.88 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.88 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.52/292.88 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.88 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.52/292.88 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.88 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.88 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.88 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.52/292.88 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.88 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.88 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.88 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.88 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.88 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.52/292.88 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.52/292.88 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.52/292.88 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.52/292.88 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.52/292.88 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.88 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.52/292.88 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.52/292.88 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.52/292.88 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.52/292.88 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.52/292.88 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.88 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.88 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.88 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.88 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 1149.52/292.88 Function symbols to be analyzed: {#pred}, {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.52/292.88 Previous analysis results are: 1149.52/292.88 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.52/292.88 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.52/292.88 1149.52/292.88 ---------------------------------------- 1149.52/292.88 1149.52/292.88 (33) ResultPropagationProof (UPPER BOUND(ID)) 1149.52/292.88 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1149.52/292.88 ---------------------------------------- 1149.52/292.88 1149.52/292.88 (34) 1149.52/292.88 Obligation: 1149.52/292.88 Complexity RNTS consisting of the following rules: 1149.52/292.88 1149.52/292.88 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.52/292.88 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.52/292.88 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.88 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.88 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.52/292.88 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.52/292.88 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.52/292.88 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.52/292.88 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.88 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.52/292.88 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.52/292.88 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.88 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.52/292.88 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.88 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.88 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.88 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.88 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.88 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.88 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.88 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.88 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.88 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.88 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.88 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.88 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.88 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.52/292.88 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.88 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.88 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.88 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.88 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.88 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.88 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.52/292.88 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.88 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.88 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.88 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.88 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.88 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.88 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.88 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.88 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.88 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.88 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.88 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.88 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.52/292.88 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.52/292.88 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.88 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.52/292.88 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.88 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.88 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.88 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.88 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.52/292.88 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.52/292.88 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.52/292.88 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.52/292.88 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.88 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.88 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.52/292.88 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.88 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.88 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.88 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.88 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.52/292.88 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.52/292.88 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.88 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.88 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.88 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.52/292.88 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.88 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.52/292.88 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.88 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.88 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.88 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.52/292.88 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.88 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.88 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.88 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.88 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.88 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.52/292.88 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.52/292.88 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.52/292.88 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.52/292.88 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.52/292.88 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.88 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.52/292.88 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.52/292.88 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.52/292.88 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.52/292.88 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.52/292.88 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.88 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.88 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.88 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.88 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 1149.52/292.88 Function symbols to be analyzed: {#pred}, {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.52/292.88 Previous analysis results are: 1149.52/292.88 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.52/292.88 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.52/292.88 1149.52/292.88 ---------------------------------------- 1149.52/292.88 1149.52/292.88 (35) IntTrsBoundProof (UPPER BOUND(ID)) 1149.52/292.88 1149.52/292.88 Computed SIZE bound using CoFloCo for: #pred 1149.52/292.88 after applying outer abstraction to obtain an ITS, 1149.52/292.88 resulting in: O(n^1) with polynomial bound: 2 + z 1149.52/292.88 1149.52/292.88 ---------------------------------------- 1149.52/292.88 1149.52/292.88 (36) 1149.52/292.88 Obligation: 1149.52/292.88 Complexity RNTS consisting of the following rules: 1149.52/292.88 1149.52/292.88 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.52/292.88 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.52/292.88 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.88 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.88 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.52/292.88 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.52/292.88 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.52/292.88 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.52/292.88 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.88 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.52/292.88 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.52/292.88 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.88 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.52/292.88 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.88 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.88 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.88 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.88 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.88 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.88 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.88 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.88 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.88 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.88 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.88 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.88 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.88 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.52/292.88 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.52/292.88 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.52/292.88 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.88 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.88 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.88 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.88 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.88 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.88 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.52/292.88 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.88 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.88 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.88 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.88 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.88 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.88 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.88 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.88 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.88 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.88 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.88 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.88 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.52/292.88 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.52/292.88 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.88 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.52/292.88 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.88 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.88 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.88 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.88 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.52/292.88 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.52/292.88 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.52/292.88 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.52/292.88 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.88 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.88 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.52/292.88 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.88 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.88 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.88 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.88 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.52/292.88 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.52/292.88 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.88 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.88 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.88 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.52/292.88 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.88 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.52/292.88 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.88 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.88 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.88 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.52/292.88 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.88 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.88 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.88 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.88 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.88 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.88 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.52/292.88 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.52/292.88 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.52/292.88 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.88 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.52/292.88 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.52/292.88 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.88 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.52/292.88 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.52/292.88 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.52/292.88 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.52/292.88 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.52/292.88 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.88 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.88 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.88 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.88 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.52/292.88 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 1149.52/292.88 Function symbols to be analyzed: {#pred}, {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.52/292.88 Previous analysis results are: 1149.52/292.88 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.52/292.88 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.52/292.88 #pred: runtime: ?, size: O(n^1) [2 + z] 1149.52/292.88 1149.52/292.88 ---------------------------------------- 1149.52/292.88 1149.52/292.88 (37) IntTrsBoundProof (UPPER BOUND(ID)) 1149.52/292.88 1149.52/292.88 Computed RUNTIME bound using CoFloCo for: #pred 1149.52/292.88 after applying outer abstraction to obtain an ITS, 1149.52/292.88 resulting in: O(1) with polynomial bound: 0 1149.52/292.88 1149.52/292.88 ---------------------------------------- 1149.52/292.88 1149.52/292.88 (38) 1149.52/292.88 Obligation: 1149.52/292.88 Complexity RNTS consisting of the following rules: 1149.52/292.88 1149.52/292.88 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.52/292.88 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.52/292.88 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.88 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.52/292.88 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(1 + (1 + 0)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(1 + (1 + (z' - 3))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(1 + (1 + (1 + (z' - 2)))) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.52/292.88 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.52/292.88 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.88 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.52/292.88 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.52/292.88 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.52/292.88 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.52/292.88 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.88 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.52/292.88 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.52/292.88 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.52/292.88 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.52/292.88 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.88 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.88 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.88 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.88 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.88 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.52/292.88 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.52/292.88 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.88 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.88 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.88 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.88 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.88 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.88 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.52/292.88 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.52/292.89 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.52/292.89 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.52/292.89 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.52/292.89 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.52/292.89 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.52/292.89 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.52/292.89 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.52/292.89 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.52/292.89 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.52/292.89 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.52/292.89 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.52/292.89 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.52/292.89 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.89 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.89 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.52/292.89 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.52/292.89 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.52/292.89 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.52/292.89 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.89 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.89 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.52/292.89 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.89 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.89 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.52/292.89 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.52/292.89 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.52/292.89 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.89 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.52/292.89 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.52/292.89 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.52/292.89 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.89 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.89 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.52/292.89 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.89 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.89 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.89 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.89 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.89 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.52/292.89 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.89 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.52/292.89 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.52/292.89 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.89 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.52/292.89 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.52/292.89 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.52/292.89 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.89 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.52/292.89 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.89 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.89 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.89 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.89 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.89 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.89 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.89 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.89 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.89 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.52/292.89 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.52/292.89 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.89 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.52/292.89 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.89 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.89 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.89 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.89 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.89 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.89 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.89 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.89 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.52/292.89 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.89 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.52/292.89 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.52/292.89 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.52/292.89 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.52/292.89 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.89 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.89 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.89 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.52/292.89 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.89 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.89 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.89 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.89 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.89 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.89 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.89 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.89 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.89 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.52/292.89 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.52/292.89 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.89 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.89 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.89 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.52/292.89 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.52/292.89 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.52/292.89 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.52/292.89 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.52/292.89 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.89 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.52/292.89 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.52/292.89 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.89 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.89 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.52/292.89 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.89 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.89 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.52/292.89 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.52/292.89 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.89 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.52/292.89 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.52/292.89 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.52/292.89 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.52/292.89 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.89 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.52/292.89 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.52/292.89 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.52/292.89 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.52/292.89 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.52/292.89 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.89 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.89 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.52/292.89 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.89 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.52/292.89 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.52/292.89 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.52/292.89 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.52/292.89 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.52/292.89 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.52/292.89 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.89 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.52/292.89 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.52/292.89 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.52/292.89 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.52/292.89 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.52/292.89 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.52/292.89 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.52/292.89 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.89 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.89 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.52/292.89 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.52/292.89 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.52/292.89 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.89 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.52/292.89 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.52/292.89 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.89 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.89 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.89 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.89 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.89 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.52/292.89 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.89 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.89 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.89 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.89 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.89 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.89 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.66/292.89 1149.66/292.89 Function symbols to be analyzed: {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.66/292.89 Previous analysis results are: 1149.66/292.89 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.66/292.89 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.66/292.89 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.66/292.89 1149.66/292.89 ---------------------------------------- 1149.66/292.89 1149.66/292.89 (39) ResultPropagationProof (UPPER BOUND(ID)) 1149.66/292.89 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1149.66/292.89 ---------------------------------------- 1149.66/292.89 1149.66/292.89 (40) 1149.66/292.89 Obligation: 1149.66/292.89 Complexity RNTS consisting of the following rules: 1149.66/292.89 1149.66/292.89 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.66/292.89 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.89 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.66/292.89 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.66/292.89 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.66/292.89 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.66/292.89 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.66/292.89 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.89 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.66/292.89 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.66/292.89 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.89 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.89 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.66/292.89 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.89 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.66/292.89 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.66/292.89 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.66/292.89 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.66/292.89 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.66/292.89 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.89 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.66/292.89 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.66/292.89 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.66/292.89 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.66/292.89 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.66/292.89 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.66/292.89 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.66/292.89 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.66/292.89 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.66/292.89 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.66/292.89 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.66/292.89 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.66/292.89 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.89 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.89 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.89 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.66/292.89 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.66/292.89 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.66/292.89 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.89 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.66/292.89 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.89 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.66/292.89 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.89 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.66/292.90 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.90 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.66/292.90 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.90 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.90 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.90 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.90 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.90 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.66/292.90 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.90 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.90 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.90 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.90 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.90 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.90 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.90 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.90 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.90 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.90 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.90 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.90 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.90 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.90 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.90 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.66/292.90 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.90 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.66/292.90 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.90 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.66/292.90 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.66/292.90 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.66/292.90 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.66/292.90 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.66/292.90 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.66/292.90 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.90 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.90 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.90 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.90 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.90 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.90 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.90 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.66/292.90 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.90 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.90 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.90 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.90 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.90 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.90 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.90 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.90 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.90 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.90 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.90 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.90 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.90 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.90 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.90 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.90 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.66/292.90 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.66/292.90 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.90 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.66/292.90 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.90 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.90 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.90 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.90 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.90 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.90 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.66/292.90 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.90 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.66/292.90 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.66/292.90 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.66/292.90 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.66/292.90 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.90 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.90 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.90 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.66/292.90 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.90 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.90 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.90 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.90 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.90 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.90 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.90 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.90 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.90 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.90 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.90 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.90 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.90 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.90 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.66/292.90 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.66/292.90 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.66/292.90 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.66/292.90 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.90 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.90 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.90 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.66/292.90 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.90 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.66/292.90 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.90 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.90 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.90 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.66/292.90 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.90 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.90 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.66/292.90 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.90 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.90 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.90 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.90 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.90 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.90 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.90 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.90 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.90 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.66/292.90 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.90 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.66/292.90 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.66/292.90 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.90 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.90 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.66/292.90 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.66/292.90 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.90 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.66/292.90 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.66/292.90 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.66/292.90 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.66/292.90 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.66/292.90 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.90 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.90 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.90 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.90 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.90 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.90 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.90 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.90 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.90 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.90 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.90 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.90 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.90 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.90 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.90 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.90 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.90 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.90 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.90 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.90 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.66/292.90 1149.66/292.90 Function symbols to be analyzed: {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.66/292.90 Previous analysis results are: 1149.66/292.90 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.66/292.90 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.66/292.90 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.66/292.90 1149.66/292.90 ---------------------------------------- 1149.66/292.90 1149.66/292.90 (41) IntTrsBoundProof (UPPER BOUND(ID)) 1149.66/292.90 1149.66/292.90 Computed SIZE bound using KoAT for: #natsub 1149.66/292.90 after applying outer abstraction to obtain an ITS, 1149.66/292.90 resulting in: O(n^1) with polynomial bound: z 1149.66/292.90 1149.66/292.90 ---------------------------------------- 1149.66/292.90 1149.66/292.90 (42) 1149.66/292.90 Obligation: 1149.66/292.90 Complexity RNTS consisting of the following rules: 1149.66/292.90 1149.66/292.90 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.66/292.90 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.90 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.66/292.90 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.66/292.90 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.66/292.90 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.66/292.90 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.66/292.90 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.90 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.66/292.90 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.66/292.90 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.90 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.66/292.90 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.90 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.66/292.90 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.66/292.90 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.66/292.90 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.66/292.90 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.66/292.90 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.90 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.66/292.90 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.66/292.90 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.66/292.90 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.66/292.90 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.66/292.90 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.66/292.90 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.66/292.90 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.66/292.90 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.66/292.90 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.66/292.90 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.66/292.90 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.66/292.90 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.90 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.90 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.90 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.66/292.90 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.66/292.90 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.66/292.90 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.66/292.90 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.90 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.66/292.90 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.90 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.66/292.90 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.90 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.66/292.90 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.90 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.90 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.90 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.90 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.90 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.90 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.90 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.66/292.90 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.90 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.90 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.90 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.90 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.90 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.90 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.90 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.90 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.90 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.90 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.90 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.90 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.90 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.90 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.90 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.90 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.90 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.66/292.90 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.90 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.66/292.90 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.90 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.90 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.66/292.90 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.66/292.90 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.66/292.90 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.90 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.66/292.90 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.66/292.90 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.66/292.90 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.90 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.91 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.91 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.91 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.91 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.91 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.91 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.91 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.66/292.91 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.91 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.91 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.91 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.91 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.91 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.91 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.91 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.91 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.91 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.91 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.91 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.91 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.91 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.91 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.91 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.91 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.66/292.91 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.66/292.91 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.91 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.66/292.91 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.91 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.91 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.91 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.91 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.91 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.91 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.66/292.91 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.91 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.66/292.91 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.66/292.91 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.66/292.91 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.66/292.91 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.91 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.91 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.91 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.66/292.91 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.91 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.91 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.91 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.91 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.91 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.91 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.91 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.91 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.91 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.91 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.91 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.91 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.91 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.91 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.66/292.91 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.66/292.91 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.66/292.91 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.66/292.91 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.91 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.91 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.91 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.66/292.91 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.91 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.66/292.91 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.91 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.91 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.91 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.66/292.91 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.91 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.91 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.66/292.91 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.91 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.91 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.91 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.91 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.91 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.91 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.91 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.91 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.91 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.66/292.91 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.91 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.66/292.91 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.66/292.91 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.91 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.91 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.66/292.91 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.66/292.91 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.91 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.66/292.91 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.66/292.91 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.66/292.91 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.66/292.91 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.66/292.91 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.91 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.91 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.91 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.91 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.91 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.91 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.91 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.91 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.91 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.91 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.91 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.91 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.91 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.91 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.91 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.91 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.91 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.91 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.91 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.91 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.66/292.91 1149.66/292.91 Function symbols to be analyzed: {#natsub}, {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.66/292.91 Previous analysis results are: 1149.66/292.91 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.66/292.91 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.66/292.91 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.66/292.91 #natsub: runtime: ?, size: O(n^1) [z] 1149.66/292.91 1149.66/292.91 ---------------------------------------- 1149.66/292.91 1149.66/292.91 (43) IntTrsBoundProof (UPPER BOUND(ID)) 1149.66/292.91 1149.66/292.91 Computed RUNTIME bound using CoFloCo for: #natsub 1149.66/292.91 after applying outer abstraction to obtain an ITS, 1149.66/292.91 resulting in: O(1) with polynomial bound: 0 1149.66/292.91 1149.66/292.91 ---------------------------------------- 1149.66/292.91 1149.66/292.91 (44) 1149.66/292.91 Obligation: 1149.66/292.91 Complexity RNTS consisting of the following rules: 1149.66/292.91 1149.66/292.91 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.66/292.91 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.91 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.66/292.91 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.66/292.91 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.66/292.91 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.66/292.91 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.66/292.91 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.91 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.66/292.91 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.66/292.91 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.91 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.66/292.91 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.91 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.66/292.91 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.66/292.91 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.66/292.91 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.66/292.91 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.66/292.91 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.91 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.66/292.91 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.66/292.91 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.66/292.91 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.66/292.91 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.66/292.91 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.66/292.91 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.66/292.91 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.66/292.91 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.66/292.91 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.66/292.91 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.66/292.91 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.66/292.91 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.91 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.91 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.91 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.66/292.91 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.66/292.91 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.66/292.91 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.66/292.91 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.91 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.66/292.91 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.91 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.66/292.91 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.91 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.66/292.91 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.91 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.66/292.91 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.66/292.91 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.91 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.66/292.91 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.66/292.91 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.91 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.91 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.91 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.91 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.91 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.91 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.91 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.91 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.66/292.91 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.91 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.66/292.91 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.91 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.91 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.66/292.91 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.91 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.91 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.91 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.91 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.91 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.66/292.91 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.91 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.91 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.91 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.92 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.92 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.92 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.92 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.92 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.92 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.92 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.92 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.92 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.92 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.92 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.92 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.66/292.92 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.92 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.66/292.92 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.92 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.66/292.92 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(#natsub(z - 2, z' - 2), 1 + (1 + (z' - 2))) :|: z - 2 >= 0, z' - 2 >= 0 1149.66/292.92 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.66/292.92 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.66/292.92 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.66/292.92 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.66/292.92 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.92 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #natsub(z, z') -{ 0 }-> #natsub(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.92 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.92 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.92 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.92 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.92 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.92 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.66/292.92 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.92 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.92 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.92 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.92 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.92 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.92 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.92 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.92 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.92 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.92 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.92 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.92 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.92 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.92 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.66/292.92 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.66/292.92 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.92 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.66/292.92 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.92 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.92 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.92 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.92 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.92 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.92 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.66/292.92 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.66/292.92 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.66/292.92 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.66/292.92 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.66/292.92 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.92 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.92 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.92 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.66/292.92 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.92 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.92 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.92 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.92 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.92 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.92 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.92 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.92 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.92 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.92 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.92 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.92 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.66/292.92 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.66/292.92 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.66/292.92 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.66/292.92 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.92 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.92 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.92 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.66/292.92 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.92 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.66/292.92 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.92 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.92 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.66/292.92 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.92 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.92 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.66/292.92 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.92 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.92 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.92 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.92 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.92 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.92 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.92 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.66/292.92 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.66/292.92 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.66/292.92 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.92 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.66/292.92 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.66/292.92 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.92 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.66/292.92 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.66/292.92 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.66/292.92 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.66/292.92 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.66/292.92 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.92 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.92 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.92 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.92 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.92 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.92 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.92 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.92 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.92 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.92 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.92 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.92 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.92 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.92 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.92 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.92 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.92 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.92 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.92 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.92 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.66/292.92 1149.66/292.92 Function symbols to be analyzed: {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.66/292.92 Previous analysis results are: 1149.66/292.92 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.66/292.92 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.66/292.92 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.66/292.92 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.66/292.92 1149.66/292.92 ---------------------------------------- 1149.66/292.92 1149.66/292.92 (45) ResultPropagationProof (UPPER BOUND(ID)) 1149.66/292.92 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1149.66/292.92 ---------------------------------------- 1149.66/292.92 1149.66/292.92 (46) 1149.66/292.92 Obligation: 1149.66/292.92 Complexity RNTS consisting of the following rules: 1149.66/292.92 1149.66/292.92 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.66/292.92 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.92 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.66/292.92 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.66/292.92 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.66/292.92 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.66/292.92 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.66/292.92 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.92 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.66/292.92 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.66/292.92 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.92 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.66/292.92 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.92 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.66/292.92 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.66/292.92 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.66/292.92 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.66/292.92 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.66/292.92 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.92 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.66/292.92 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.66/292.92 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.66/292.92 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.66/292.92 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.66/292.92 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.66/292.92 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.66/292.92 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.66/292.92 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.66/292.92 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.66/292.92 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.66/292.92 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.66/292.92 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.92 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.92 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.92 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.66/292.92 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.66/292.92 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.66/292.92 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.66/292.92 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.92 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.66/292.92 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.92 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.66/292.92 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.92 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.66/292.92 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.92 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.66/292.92 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.66/292.92 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.66/292.92 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.66/292.92 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.92 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.92 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.92 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.92 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.66/292.92 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.92 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.66/292.92 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.92 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.66/292.92 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.92 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.92 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.92 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.66/292.92 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.92 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.92 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.92 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.92 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.92 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.92 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.92 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.92 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.92 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.92 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.92 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.92 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.92 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.92 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.92 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.92 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.92 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.66/292.92 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.92 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.66/292.92 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.92 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.66/292.92 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.66/292.92 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.66/292.92 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.66/292.92 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.66/292.92 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.66/292.92 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.66/292.92 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.92 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.92 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.92 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.92 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.92 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.92 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.92 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.66/292.92 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.92 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.92 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.92 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.92 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.92 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.92 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.92 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.92 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.92 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.92 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.92 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.92 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.92 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.92 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.92 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.66/292.92 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.66/292.92 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.92 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.66/292.92 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.92 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.66/292.93 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.66/292.93 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.93 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.93 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.93 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.93 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.66/292.93 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.66/292.93 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.93 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.93 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.93 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.66/292.93 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.93 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.66/292.93 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.66/292.93 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.66/292.93 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.66/292.93 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.66/292.93 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.66/292.93 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.66/292.93 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.93 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.93 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 1149.66/292.93 Function symbols to be analyzed: {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.66/292.93 Previous analysis results are: 1149.66/292.93 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.66/292.93 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.66/292.93 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.66/292.93 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.66/292.93 1149.66/292.93 ---------------------------------------- 1149.66/292.93 1149.66/292.93 (47) IntTrsBoundProof (UPPER BOUND(ID)) 1149.66/292.93 1149.66/292.93 Computed SIZE bound using CoFloCo for: compare#6 1149.66/292.93 after applying outer abstraction to obtain an ITS, 1149.66/292.93 resulting in: O(1) with polynomial bound: 3 1149.66/292.93 1149.66/292.93 ---------------------------------------- 1149.66/292.93 1149.66/292.93 (48) 1149.66/292.93 Obligation: 1149.66/292.93 Complexity RNTS consisting of the following rules: 1149.66/292.93 1149.66/292.93 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.66/292.93 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.66/292.93 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.66/292.93 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.93 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.66/292.93 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.93 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.66/292.93 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.66/292.93 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.93 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.66/292.93 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.93 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.93 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.93 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.93 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.93 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.93 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.93 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.93 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.66/292.93 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.66/292.93 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.66/292.93 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.66/292.93 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.93 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.93 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.93 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.93 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.66/292.93 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.66/292.93 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.93 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.93 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.93 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.66/292.93 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.93 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.66/292.93 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.66/292.93 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.66/292.93 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.66/292.93 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.66/292.93 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.66/292.93 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.66/292.93 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.93 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.93 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 1149.66/292.93 Function symbols to be analyzed: {compare#6}, {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.66/292.93 Previous analysis results are: 1149.66/292.93 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.66/292.93 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.66/292.93 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.66/292.93 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.66/292.93 compare#6: runtime: ?, size: O(1) [3] 1149.66/292.93 1149.66/292.93 ---------------------------------------- 1149.66/292.93 1149.66/292.93 (49) IntTrsBoundProof (UPPER BOUND(ID)) 1149.66/292.93 1149.66/292.93 Computed RUNTIME bound using CoFloCo for: compare#6 1149.66/292.93 after applying outer abstraction to obtain an ITS, 1149.66/292.93 resulting in: O(1) with polynomial bound: 2 1149.66/292.93 1149.66/292.93 ---------------------------------------- 1149.66/292.93 1149.66/292.93 (50) 1149.66/292.93 Obligation: 1149.66/292.93 Complexity RNTS consisting of the following rules: 1149.66/292.93 1149.66/292.93 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.66/292.93 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.66/292.93 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.66/292.93 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.93 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.66/292.93 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.93 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.66/292.93 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.66/292.93 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.93 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.66/292.93 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.93 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.93 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.93 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.93 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.93 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.93 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.93 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.93 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.66/292.93 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.66/292.93 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.66/292.93 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.66/292.93 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.93 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.93 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.93 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.93 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.66/292.93 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.66/292.93 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.93 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.93 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.93 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.66/292.93 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.93 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.66/292.93 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.66/292.93 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.66/292.93 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.66/292.93 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.66/292.93 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.66/292.93 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.66/292.93 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.93 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.93 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 1149.66/292.93 Function symbols to be analyzed: {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.66/292.93 Previous analysis results are: 1149.66/292.93 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.66/292.93 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.66/292.93 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.66/292.93 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.66/292.93 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.66/292.93 1149.66/292.93 ---------------------------------------- 1149.66/292.93 1149.66/292.93 (51) ResultPropagationProof (UPPER BOUND(ID)) 1149.66/292.93 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1149.66/292.93 ---------------------------------------- 1149.66/292.93 1149.66/292.93 (52) 1149.66/292.93 Obligation: 1149.66/292.93 Complexity RNTS consisting of the following rules: 1149.66/292.93 1149.66/292.93 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.66/292.93 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.66/292.93 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.66/292.93 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.93 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.66/292.93 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.93 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.66/292.93 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.66/292.93 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.93 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.66/292.93 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.93 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.93 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.93 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.93 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.93 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.93 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.93 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.93 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.66/292.93 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.66/292.93 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.66/292.93 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.66/292.93 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.66/292.93 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.93 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.93 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.93 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.93 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.66/292.93 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.66/292.93 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.66/292.93 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.93 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.93 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.93 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.66/292.93 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.93 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.66/292.93 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.66/292.93 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.66/292.93 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.66/292.93 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.66/292.93 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.66/292.93 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.66/292.93 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.66/292.93 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.93 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.93 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.93 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.93 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 1149.66/292.93 Function symbols to be analyzed: {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.66/292.93 Previous analysis results are: 1149.66/292.93 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.66/292.93 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.66/292.93 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.66/292.93 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.66/292.93 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.66/292.93 1149.66/292.93 ---------------------------------------- 1149.66/292.93 1149.66/292.93 (53) IntTrsBoundProof (UPPER BOUND(ID)) 1149.66/292.93 1149.66/292.93 Computed SIZE bound using CoFloCo for: sum#4 1149.66/292.93 after applying outer abstraction to obtain an ITS, 1149.66/292.93 resulting in: O(1) with polynomial bound: 7 1149.66/292.93 1149.66/292.93 ---------------------------------------- 1149.66/292.93 1149.66/292.93 (54) 1149.66/292.93 Obligation: 1149.66/292.93 Complexity RNTS consisting of the following rules: 1149.66/292.93 1149.66/292.93 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.66/292.93 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.66/292.93 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.66/292.93 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.93 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.66/292.93 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.93 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.93 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.66/292.93 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.66/292.93 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.93 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.66/292.93 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.66/292.93 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.66/292.93 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.66/292.93 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.66/292.93 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.66/292.93 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.93 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.93 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.93 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.93 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.66/292.93 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.66/292.93 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.66/292.93 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.66/292.93 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.93 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.66/292.93 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.93 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.93 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.93 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.93 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.66/292.93 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.66/292.93 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.93 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.93 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.93 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.93 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.66/292.93 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.93 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.66/292.93 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.66/292.93 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.66/292.94 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.66/292.94 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.94 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.94 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.94 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.66/292.94 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.94 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.94 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.94 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.94 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.94 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.94 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.94 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.94 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.94 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.66/292.94 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.66/292.94 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.94 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.94 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.94 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.66/292.94 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.66/292.94 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.66/292.94 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.66/292.94 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.66/292.94 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.94 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.66/292.94 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.66/292.94 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.94 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.94 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.66/292.94 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.94 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.94 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.66/292.94 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.66/292.94 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.94 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.66/292.94 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.66/292.94 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.66/292.94 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.66/292.94 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.94 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.66/292.94 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.66/292.94 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.66/292.94 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.66/292.94 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.66/292.94 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.94 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.94 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.66/292.94 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.94 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.66/292.94 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.66/292.94 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.94 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.66/292.94 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.66/292.94 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.66/292.94 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.94 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.66/292.94 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.66/292.94 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.66/292.94 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.66/292.94 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.94 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.66/292.94 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.66/292.94 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.94 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.94 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.66/292.94 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.66/292.94 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.94 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.94 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.94 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.66/292.94 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.94 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.94 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.94 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.94 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.94 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.66/292.94 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.94 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.94 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.94 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.94 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.94 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.66/292.94 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.66/292.94 1149.66/292.94 Function symbols to be analyzed: {sum#4}, {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.66/292.94 Previous analysis results are: 1149.66/292.94 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.66/292.94 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.66/292.94 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.66/292.94 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.66/292.94 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.66/292.94 sum#4: runtime: ?, size: O(1) [7] 1149.66/292.94 1149.66/292.94 ---------------------------------------- 1149.66/292.94 1149.66/292.94 (55) IntTrsBoundProof (UPPER BOUND(ID)) 1149.66/292.94 1149.66/292.94 Computed RUNTIME bound using CoFloCo for: sum#4 1149.66/292.94 after applying outer abstraction to obtain an ITS, 1149.66/292.94 resulting in: O(1) with polynomial bound: 3 1149.66/292.94 1149.66/292.94 ---------------------------------------- 1149.66/292.94 1149.66/292.94 (56) 1149.66/292.94 Obligation: 1149.66/292.94 Complexity RNTS consisting of the following rules: 1149.66/292.94 1149.66/292.94 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.66/292.94 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.66/292.94 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.66/292.94 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.66/292.94 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.66/292.94 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.66/292.94 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.66/292.94 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.94 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.66/292.94 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.66/292.94 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.66/292.94 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.66/292.94 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.66/292.94 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.66/292.94 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.66/292.94 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.66/292.94 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.66/292.94 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.66/292.94 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.66/292.94 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.66/292.94 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.66/292.94 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.66/292.94 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.66/292.94 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.66/292.94 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.66/292.94 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.66/292.94 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.66/292.94 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.66/292.94 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.66/292.94 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.66/292.94 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.66/292.94 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.66/292.94 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.94 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.66/292.94 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.66/292.94 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.82/292.95 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.82/292.95 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.82/292.95 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.82/292.95 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.82/292.95 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.82/292.95 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.82/292.95 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.82/292.95 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.82/292.95 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.82/292.95 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.82/292.95 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.82/292.95 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.82/292.95 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.82/292.95 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.82/292.95 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.82/292.95 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.82/292.95 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.82/292.95 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.82/292.95 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.82/292.95 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.82/292.95 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.82/292.95 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.82/292.95 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.82/292.95 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.82/292.95 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.82/292.95 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.82/292.95 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.82/292.95 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.82/292.95 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.82/292.95 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.82/292.95 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.82/292.95 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.82/292.95 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.82/292.95 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.82/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.82/292.95 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.82/292.95 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.82/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.82/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.82/292.95 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.82/292.95 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.82/292.95 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.82/292.95 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.82/292.95 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.82/292.95 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.82/292.95 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.82/292.95 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.82/292.95 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.82/292.95 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.82/292.95 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.82/292.95 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.82/292.95 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.82/292.95 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.82/292.95 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.82/292.95 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.82/292.95 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.82/292.95 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.82/292.95 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.82/292.95 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.82/292.95 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.82/292.95 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.82/292.95 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.82/292.95 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.82/292.95 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.82/292.95 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.82/292.95 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.82/292.95 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.82/292.95 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.82/292.95 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.82/292.95 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.82/292.95 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.82/292.95 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.82/292.95 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.82/292.95 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.82/292.95 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.82/292.95 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.82/292.95 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.82/292.95 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.82/292.95 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.82/292.95 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.82/292.95 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.82/292.95 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.82/292.95 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.82/292.95 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.82/292.95 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.82/292.95 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.82/292.95 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.82/292.95 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.82/292.95 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.82/292.95 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.82/292.95 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.82/292.95 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.82/292.95 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.82/292.95 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.82/292.95 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.82/292.95 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.82/292.95 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.82/292.95 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.82/292.95 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.82/292.95 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.82/292.95 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.82/292.95 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.82/292.95 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.82/292.95 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.82/292.95 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.82/292.95 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.82/292.95 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.82/292.95 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.82/292.95 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.82/292.95 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.82/292.95 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.82/292.95 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.82/292.95 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.82/292.95 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.82/292.95 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.82/292.95 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.82/292.95 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.82/292.95 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.82/292.95 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.82/292.95 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.82/292.95 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.82/292.95 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.82/292.95 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.82/292.95 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.82/292.95 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.82/292.95 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.82/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.82/292.95 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.82/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.82/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.82/292.95 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.82/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.82/292.95 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.82/292.95 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.82/292.95 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.82/292.95 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.82/292.95 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.82/292.95 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.82/292.95 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.82/292.95 1149.82/292.95 Function symbols to be analyzed: {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.82/292.95 Previous analysis results are: 1149.82/292.95 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.82/292.95 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.82/292.95 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.82/292.95 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.82/292.95 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.82/292.95 sum#4: runtime: O(1) [3], size: O(1) [7] 1149.82/292.95 1149.82/292.95 ---------------------------------------- 1149.82/292.95 1149.82/292.95 (57) ResultPropagationProof (UPPER BOUND(ID)) 1149.82/292.95 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1149.82/292.95 ---------------------------------------- 1149.82/292.95 1149.82/292.95 (58) 1149.82/292.95 Obligation: 1149.82/292.95 Complexity RNTS consisting of the following rules: 1149.82/292.95 1149.82/292.95 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.82/292.95 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.82/292.95 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.82/292.95 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.82/292.95 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.82/292.95 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.82/292.95 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.82/292.95 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.82/292.95 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.82/292.95 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.82/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.82/292.95 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.82/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.82/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.82/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.82/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.82/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.82/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.82/292.95 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.82/292.95 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.82/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.82/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.82/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.82/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.82/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.82/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.82/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.82/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.82/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.82/292.95 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.82/292.95 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.82/292.95 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.82/292.95 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.82/292.95 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.82/292.95 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.82/292.95 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.82/292.95 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.82/292.95 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.82/292.95 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.82/292.95 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.82/292.95 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.82/292.95 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.82/292.95 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.82/292.95 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.82/292.95 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.82/292.95 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.82/292.95 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.82/292.95 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.82/292.95 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.82/292.95 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.82/292.95 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.82/292.95 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.82/292.95 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.82/292.95 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.82/292.95 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.82/292.95 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.82/292.95 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.82/292.95 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.82/292.95 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.82/292.95 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.82/292.95 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.82/292.95 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.82/292.95 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.82/292.95 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.82/292.95 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.82/292.95 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.82/292.95 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.82/292.95 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.82/292.95 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.82/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.82/292.95 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.82/292.95 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.82/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.82/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.82/292.95 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.82/292.95 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.82/292.95 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.82/292.95 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.82/292.95 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.82/292.95 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.82/292.95 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.82/292.95 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.82/292.95 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.82/292.95 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.82/292.95 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.82/292.95 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.82/292.95 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.82/292.95 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.82/292.95 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.82/292.95 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.82/292.95 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.82/292.95 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.82/292.95 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.82/292.95 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.82/292.95 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.82/292.95 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.82/292.95 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.82/292.95 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.82/292.95 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.82/292.95 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.82/292.95 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.82/292.95 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.82/292.95 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.82/292.95 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.82/292.95 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.82/292.95 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.82/292.95 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.82/292.95 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.82/292.95 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.82/292.95 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.82/292.95 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.82/292.95 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.82/292.95 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.82/292.95 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.82/292.95 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.82/292.95 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.82/292.95 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.82/292.95 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.82/292.95 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/292.95 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/292.95 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.87/292.95 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.87/292.95 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.95 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.95 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.95 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.87/292.95 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.87/292.95 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.87/292.95 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.95 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.87/292.95 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/292.95 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/292.95 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.87/292.95 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/292.95 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.95 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/292.95 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.95 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.95 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/292.95 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.87/292.95 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.87/292.95 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.87/292.95 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.87/292.95 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.87/292.95 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.95 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.87/292.95 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.87/292.95 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.87/292.95 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.87/292.95 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.87/292.95 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/292.95 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/292.95 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/292.95 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/292.95 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 1149.87/292.95 Function symbols to be analyzed: {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.87/292.95 Previous analysis results are: 1149.87/292.95 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.87/292.95 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.87/292.95 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.87/292.95 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.87/292.95 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.87/292.95 sum#4: runtime: O(1) [3], size: O(1) [7] 1149.87/292.95 1149.87/292.95 ---------------------------------------- 1149.87/292.95 1149.87/292.95 (59) IntTrsBoundProof (UPPER BOUND(ID)) 1149.87/292.95 1149.87/292.95 Computed SIZE bound using CoFloCo for: #and 1149.87/292.95 after applying outer abstraction to obtain an ITS, 1149.87/292.95 resulting in: O(1) with polynomial bound: 2 1149.87/292.95 1149.87/292.95 ---------------------------------------- 1149.87/292.95 1149.87/292.95 (60) 1149.87/292.95 Obligation: 1149.87/292.95 Complexity RNTS consisting of the following rules: 1149.87/292.95 1149.87/292.95 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.87/292.95 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.87/292.95 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.87/292.95 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.87/292.95 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/292.95 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/292.95 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.87/292.95 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.87/292.95 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.87/292.95 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.87/292.95 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.87/292.95 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.87/292.95 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.87/292.95 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.87/292.95 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.87/292.95 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.95 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/292.95 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/292.95 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.95 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.95 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/292.95 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/292.95 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/292.95 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/292.95 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/292.95 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/292.95 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.95 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.95 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/292.95 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/292.95 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/292.95 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/292.95 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/292.95 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/292.95 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.95 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.87/292.95 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/292.95 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.87/292.95 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.95 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.87/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.87/292.95 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.87/292.95 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.87/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.87/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.87/292.95 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/292.95 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/292.95 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/292.95 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/292.95 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/292.95 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/292.95 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.87/292.95 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/292.95 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/292.95 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/292.95 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/292.95 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/292.95 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/292.95 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/292.95 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/292.95 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.95 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/292.95 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.95 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.95 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/292.95 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.87/292.95 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.87/292.95 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.95 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.87/292.95 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.95 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.95 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.95 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.95 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.87/292.95 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.87/292.95 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.87/292.95 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.87/292.95 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.95 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.95 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.95 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.87/292.95 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/292.95 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/292.95 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/292.95 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/292.95 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.87/292.95 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.87/292.95 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.95 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.95 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.95 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.87/292.95 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.87/292.95 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.87/292.95 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.95 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.87/292.95 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/292.95 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/292.95 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.87/292.95 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/292.95 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.95 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/292.95 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.95 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.95 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/292.95 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.87/292.95 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.87/292.95 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.87/292.95 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.87/292.95 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.87/292.95 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.95 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.87/292.95 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.87/292.95 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.87/292.95 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.87/292.95 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.87/292.95 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/292.95 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/292.95 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/292.95 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/292.95 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 1149.87/292.95 Function symbols to be analyzed: {#and}, {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.87/292.95 Previous analysis results are: 1149.87/292.95 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.87/292.95 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.87/292.95 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.87/292.95 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.87/292.95 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.87/292.95 sum#4: runtime: O(1) [3], size: O(1) [7] 1149.87/292.95 #and: runtime: ?, size: O(1) [2] 1149.87/292.95 1149.87/292.95 ---------------------------------------- 1149.87/292.95 1149.87/292.95 (61) IntTrsBoundProof (UPPER BOUND(ID)) 1149.87/292.95 1149.87/292.95 Computed RUNTIME bound using CoFloCo for: #and 1149.87/292.95 after applying outer abstraction to obtain an ITS, 1149.87/292.95 resulting in: O(1) with polynomial bound: 0 1149.87/292.95 1149.87/292.95 ---------------------------------------- 1149.87/292.95 1149.87/292.95 (62) 1149.87/292.95 Obligation: 1149.87/292.95 Complexity RNTS consisting of the following rules: 1149.87/292.95 1149.87/292.95 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.87/292.95 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.87/292.95 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.87/292.95 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.87/292.95 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.87/292.95 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/292.95 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/292.95 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/292.95 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.87/292.95 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.87/292.95 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.87/292.95 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.87/292.95 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.87/292.95 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.87/292.95 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.87/292.95 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.87/292.95 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.87/292.95 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.95 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.95 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/292.95 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/292.95 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.95 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.95 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.95 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/292.95 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/292.95 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/292.95 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/292.95 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/292.95 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/292.95 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.95 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.95 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/292.95 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/292.95 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/292.95 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/292.95 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/292.95 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/292.95 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.95 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.87/292.95 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/292.95 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.87/292.95 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.95 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.87/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.87/292.95 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.87/292.95 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.87/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.87/292.95 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.87/292.95 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.87/292.95 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/292.95 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/292.95 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/292.95 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/292.95 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/292.95 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/292.95 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.87/292.95 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/292.95 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/292.95 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/292.95 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/292.95 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/292.95 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/292.95 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/292.95 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/292.95 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.95 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/292.95 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.95 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.95 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/292.95 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.87/292.95 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.87/292.95 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.95 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.87/292.95 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.95 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.95 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.95 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.95 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.87/292.95 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.87/292.95 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.87/292.95 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.87/292.95 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.95 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.95 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.95 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.87/292.95 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/292.95 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/292.95 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/292.95 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/292.95 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.87/292.95 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.87/292.95 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.95 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.95 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.95 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.87/292.95 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.87/292.95 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.87/292.95 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.95 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.87/292.95 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/292.95 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/292.95 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.87/292.95 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/292.95 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.95 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/292.95 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.95 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.95 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/292.95 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.87/292.95 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.87/292.95 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.87/292.95 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.95 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.95 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.87/292.95 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.87/292.95 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.95 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.87/292.95 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.87/292.95 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.87/292.95 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.95 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.87/292.95 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.87/292.95 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/292.95 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/292.95 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/292.95 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/292.95 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.95 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.95 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.87/292.95 1149.87/292.95 Function symbols to be analyzed: {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.87/292.95 Previous analysis results are: 1149.87/292.95 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.87/292.95 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.87/292.95 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.87/292.95 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.87/292.95 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.87/292.95 sum#4: runtime: O(1) [3], size: O(1) [7] 1149.87/292.96 #and: runtime: O(1) [0], size: O(1) [2] 1149.87/292.96 1149.87/292.96 ---------------------------------------- 1149.87/292.96 1149.87/292.96 (63) ResultPropagationProof (UPPER BOUND(ID)) 1149.87/292.96 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1149.87/292.96 ---------------------------------------- 1149.87/292.96 1149.87/292.96 (64) 1149.87/292.96 Obligation: 1149.87/292.96 Complexity RNTS consisting of the following rules: 1149.87/292.96 1149.87/292.96 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.87/292.96 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.96 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.87/292.96 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.87/292.96 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.87/292.96 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.87/292.96 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.87/292.96 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.87/292.96 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.87/292.96 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.87/292.96 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.96 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.87/292.96 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.87/292.96 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.96 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.87/292.96 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.87/292.96 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.87/292.96 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.87/292.96 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.87/292.96 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.96 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.87/292.96 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.87/292.96 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.87/292.96 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.87/292.96 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.87/292.96 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.87/292.96 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.87/292.96 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.87/292.96 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.87/292.96 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.87/292.96 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.87/292.96 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.87/292.96 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/292.96 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/292.96 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/292.96 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.87/292.96 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.87/292.96 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.87/292.96 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.96 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.87/292.96 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.87/292.96 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.87/292.96 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.96 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.87/292.96 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.87/292.96 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.87/292.96 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.96 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.87/292.96 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.87/292.96 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.96 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.87/292.96 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.87/292.96 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.96 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.96 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.96 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.96 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.96 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.96 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/292.96 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/292.96 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.96 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.96 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.87/292.96 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/292.96 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.87/292.96 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/292.96 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.96 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.87/292.96 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.96 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.96 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.96 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.96 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.96 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.87/292.96 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/292.96 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/292.96 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/292.96 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/292.96 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/292.96 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/292.96 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/292.96 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/292.96 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/292.96 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/292.96 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/292.96 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/292.96 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/292.96 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/292.96 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.96 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.96 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.96 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/292.96 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/292.96 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/292.96 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/292.96 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/292.96 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/292.96 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/292.96 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/292.97 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/292.97 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/292.97 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/292.97 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/292.97 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/292.97 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/292.97 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.97 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.97 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.97 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.87/292.97 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/292.97 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.87/292.97 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.97 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.97 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.87/292.97 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.97 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.87/292.97 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.87/292.97 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.87/292.97 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.87/292.97 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.87/292.97 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.87/292.97 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/292.97 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/292.97 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.97 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/292.97 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/292.97 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/292.97 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/292.97 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.87/292.97 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/292.97 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.97 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/292.97 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/292.97 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/292.97 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/292.97 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/292.97 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/292.97 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/292.97 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.97 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.97 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/292.97 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.97 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.97 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.97 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/292.97 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.87/292.97 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.87/292.97 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.97 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.87/292.97 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.97 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.97 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.97 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.97 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.97 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.97 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.87/292.97 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.97 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.87/292.97 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.87/292.97 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.87/292.97 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.87/292.97 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.97 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.97 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.97 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.87/292.97 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.97 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.97 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/292.97 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/292.97 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.97 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.97 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.97 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.97 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.97 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/292.97 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/292.97 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.97 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.97 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.97 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.87/292.97 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.87/292.97 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.87/292.97 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.87/292.97 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.97 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.97 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.97 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.87/292.97 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.87/292.97 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.87/292.97 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.97 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.97 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.87/292.97 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.87/292.97 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/292.97 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/292.97 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.87/292.97 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/292.97 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/292.97 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.97 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.97 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/292.97 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.97 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.97 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/292.97 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.97 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.87/292.97 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.97 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.87/292.97 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.87/292.97 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.97 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.97 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.87/292.97 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.87/292.97 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.97 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.87/292.97 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.87/292.97 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.87/292.97 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.87/292.97 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.87/292.97 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/292.97 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/292.97 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/292.97 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/292.97 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.97 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/292.97 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.97 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/292.97 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.97 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.97 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.97 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.97 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.97 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.97 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.97 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.97 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.97 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.97 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.97 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.97 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.87/292.97 1149.87/292.97 Function symbols to be analyzed: {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.87/292.97 Previous analysis results are: 1149.87/292.97 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.87/292.97 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.87/292.97 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.87/292.97 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.87/292.97 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.87/292.97 sum#4: runtime: O(1) [3], size: O(1) [7] 1149.87/292.97 #and: runtime: O(1) [0], size: O(1) [2] 1149.87/292.97 1149.87/292.97 ---------------------------------------- 1149.87/292.97 1149.87/292.97 (65) IntTrsBoundProof (UPPER BOUND(ID)) 1149.87/292.97 1149.87/292.97 Computed SIZE bound using CoFloCo for: sub'#5 1149.87/292.97 after applying outer abstraction to obtain an ITS, 1149.87/292.97 resulting in: O(n^1) with polynomial bound: 1 + z' + z'' 1149.87/292.97 1149.87/292.97 ---------------------------------------- 1149.87/292.97 1149.87/292.97 (66) 1149.87/292.97 Obligation: 1149.87/292.97 Complexity RNTS consisting of the following rules: 1149.87/292.97 1149.87/292.97 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.87/292.97 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.97 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.87/292.97 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.87/292.97 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.87/292.97 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.87/292.97 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.87/292.97 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.87/292.97 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.87/292.97 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.87/292.97 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.87/292.97 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.87/292.97 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.97 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.87/292.97 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.87/292.97 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.87/292.97 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.87/292.97 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.87/292.97 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.97 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.87/292.97 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.87/292.97 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.87/292.97 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.87/292.97 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.87/292.97 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.87/292.97 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.87/292.97 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.87/292.97 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.87/292.97 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.87/292.97 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.87/292.97 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.87/292.97 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/292.97 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/292.97 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/292.97 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.87/292.97 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.87/292.97 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.87/292.97 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.97 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.87/292.97 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.87/292.97 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.87/292.97 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.97 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.87/292.97 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.87/292.97 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.87/292.97 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.97 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.87/292.97 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.98 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/292.98 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/292.98 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.98 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.98 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.87/292.98 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/292.98 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/292.98 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/292.98 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/292.98 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/292.98 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/292.98 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.98 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.98 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/292.98 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/292.98 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/292.98 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/292.98 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/292.98 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/292.98 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.98 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.87/292.98 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/292.98 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.87/292.98 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.98 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.87/292.98 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.87/292.98 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.87/292.98 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.87/292.98 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.87/292.98 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.87/292.98 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/292.98 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/292.98 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.98 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/292.98 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/292.98 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/292.98 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/292.98 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.87/292.98 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/292.98 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.98 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/292.98 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/292.98 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/292.98 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/292.98 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/292.98 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/292.98 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/292.98 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.98 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.98 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/292.98 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.98 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.98 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.98 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/292.98 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.87/292.98 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.87/292.98 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.98 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.87/292.98 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.98 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.98 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.98 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.98 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.98 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.98 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.87/292.98 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.98 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.87/292.98 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.87/292.98 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.87/292.98 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.87/292.98 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.98 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.98 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.98 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.87/292.98 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.98 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.98 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/292.98 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/292.98 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.98 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.98 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.98 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.98 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.98 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/292.98 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/292.98 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.98 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.98 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.98 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.87/292.98 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.87/292.98 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.87/292.98 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.87/292.98 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.87/292.98 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.98 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/292.98 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.87/292.98 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.87/292.98 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.87/292.98 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.98 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.98 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.87/292.98 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.87/292.98 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/292.98 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/292.98 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.87/292.98 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/292.98 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/292.98 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.98 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.87/292.98 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/292.98 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/292.98 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/292.98 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/292.98 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.98 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.87/292.98 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.98 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.87/292.98 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.87/292.98 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.98 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/292.98 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.87/292.98 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.87/292.98 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/292.98 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.87/292.98 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.87/292.98 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.87/292.98 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.87/292.98 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.87/292.98 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/292.98 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/292.98 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/292.98 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/292.98 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.98 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/292.98 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.98 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/292.98 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.98 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.98 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.98 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.98 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.98 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/292.98 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.98 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.98 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.98 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.98 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.98 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/292.98 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.87/292.98 1149.87/292.98 Function symbols to be analyzed: {sub'#5}, {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.87/292.98 Previous analysis results are: 1149.87/292.98 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.87/292.98 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.87/292.98 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.87/292.98 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.87/292.98 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.87/292.98 sum#4: runtime: O(1) [3], size: O(1) [7] 1149.87/292.98 #and: runtime: O(1) [0], size: O(1) [2] 1149.87/292.98 sub'#5: runtime: ?, size: O(n^1) [1 + z' + z''] 1149.87/292.98 1149.87/292.98 ---------------------------------------- 1149.87/292.98 1149.87/292.98 (67) IntTrsBoundProof (UPPER BOUND(ID)) 1149.87/292.98 1149.87/292.98 Computed RUNTIME bound using CoFloCo for: sub'#5 1149.87/292.98 after applying outer abstraction to obtain an ITS, 1149.87/292.98 resulting in: O(1) with polynomial bound: 2 1149.87/292.98 1149.87/292.98 ---------------------------------------- 1149.87/292.98 1149.87/292.98 (68) 1149.87/292.98 Obligation: 1149.87/292.98 Complexity RNTS consisting of the following rules: 1149.87/292.98 1149.87/292.98 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.87/292.98 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.98 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.87/292.98 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.87/292.98 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.87/292.98 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.87/292.98 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.87/292.98 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.87/292.98 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.87/292.98 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.87/292.98 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.87/292.98 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.87/292.98 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.98 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.87/292.98 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.87/292.98 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.87/292.98 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.87/292.98 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.87/292.98 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/292.98 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.87/292.98 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.87/292.98 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.87/292.98 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.87/292.98 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.87/292.98 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.87/292.98 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.87/292.98 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.87/292.98 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.87/292.98 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.87/292.98 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.87/292.98 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.87/292.98 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/292.98 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/292.98 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/292.98 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.87/292.98 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.87/292.98 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.87/292.98 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.87/292.98 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.87/292.98 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.87/292.98 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.98 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.87/292.98 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.87/292.98 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.87/292.98 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.98 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.98 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/292.98 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/292.98 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.98 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.98 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/292.98 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.87/292.98 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/292.98 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/292.98 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/292.98 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/292.98 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/292.98 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/292.98 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.98 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.98 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.98 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/292.98 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/292.98 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/292.98 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/292.98 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/292.98 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/292.98 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/292.98 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/292.98 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.87/292.98 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/292.98 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.87/292.98 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/292.98 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.87/292.98 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/292.98 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.87/292.98 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.87/292.98 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/292.98 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.87/292.98 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.87/292.98 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.87/292.98 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/293.01 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/293.01 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/293.01 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/293.01 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/293.01 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/293.01 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/293.01 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/293.01 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/293.01 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.87/293.01 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.87/293.01 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/293.01 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/293.01 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.87/293.01 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.87/293.01 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/293.01 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/293.01 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/293.01 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/293.01 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.87/293.01 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.87/293.01 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.87/293.01 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/293.01 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/293.01 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.87/293.01 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/293.01 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.87/293.01 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.87/293.01 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.87/293.01 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.87/293.01 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.87/293.01 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/293.01 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.87/293.01 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.87/293.01 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.87/293.01 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.87/293.01 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.87/293.01 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/293.01 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/293.01 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/293.01 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/293.01 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 1149.87/293.01 Function symbols to be analyzed: {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.87/293.01 Previous analysis results are: 1149.87/293.01 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.87/293.01 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.87/293.01 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.87/293.01 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.87/293.01 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.87/293.01 sum#4: runtime: O(1) [3], size: O(1) [7] 1149.87/293.01 #and: runtime: O(1) [0], size: O(1) [2] 1149.87/293.01 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1149.87/293.01 1149.87/293.01 ---------------------------------------- 1149.87/293.01 1149.87/293.01 (69) ResultPropagationProof (UPPER BOUND(ID)) 1149.87/293.01 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1149.87/293.01 ---------------------------------------- 1149.87/293.01 1149.87/293.01 (70) 1149.87/293.01 Obligation: 1149.87/293.01 Complexity RNTS consisting of the following rules: 1149.87/293.01 1149.87/293.01 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.87/293.01 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.87/293.01 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.87/293.01 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/293.01 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/293.01 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.87/293.01 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.87/293.01 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.87/293.01 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.87/293.01 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.87/293.01 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.87/293.01 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.87/293.01 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.87/293.01 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.87/293.01 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/293.01 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/293.01 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/293.01 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/293.01 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/293.01 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/293.01 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/293.01 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/293.01 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/293.01 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.87/293.01 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/293.01 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/293.01 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/293.01 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/293.01 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/293.01 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/293.01 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/293.01 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/293.01 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/293.01 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.87/293.01 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.87/293.01 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/293.01 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/293.01 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.87/293.01 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.87/293.01 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/293.01 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/293.01 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/293.01 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/293.01 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.87/293.01 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.87/293.01 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.87/293.01 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/293.01 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/293.01 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.87/293.01 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/293.01 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.87/293.01 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.87/293.01 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.87/293.01 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.87/293.01 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.87/293.01 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/293.01 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.87/293.01 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.87/293.01 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.87/293.01 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.87/293.01 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.87/293.01 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/293.01 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/293.01 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/293.01 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/293.01 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 1149.87/293.01 Function symbols to be analyzed: {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.87/293.01 Previous analysis results are: 1149.87/293.01 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.87/293.01 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.87/293.01 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.87/293.01 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.87/293.01 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.87/293.01 sum#4: runtime: O(1) [3], size: O(1) [7] 1149.87/293.01 #and: runtime: O(1) [0], size: O(1) [2] 1149.87/293.01 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1149.87/293.01 1149.87/293.01 ---------------------------------------- 1149.87/293.01 1149.87/293.01 (71) IntTrsBoundProof (UPPER BOUND(ID)) 1149.87/293.01 1149.87/293.01 Computed SIZE bound using CoFloCo for: #cklt 1149.87/293.01 after applying outer abstraction to obtain an ITS, 1149.87/293.01 resulting in: O(1) with polynomial bound: 2 1149.87/293.01 1149.87/293.01 ---------------------------------------- 1149.87/293.01 1149.87/293.01 (72) 1149.87/293.01 Obligation: 1149.87/293.01 Complexity RNTS consisting of the following rules: 1149.87/293.01 1149.87/293.01 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.87/293.01 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.87/293.01 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.87/293.01 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/293.01 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/293.01 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.87/293.01 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.87/293.01 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.87/293.01 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.87/293.01 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.87/293.01 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.87/293.01 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.87/293.01 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.87/293.01 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.87/293.01 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/293.01 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/293.01 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/293.01 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/293.01 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/293.01 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/293.01 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/293.01 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/293.01 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/293.01 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.87/293.01 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/293.01 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/293.01 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/293.01 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/293.01 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/293.01 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/293.01 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/293.01 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/293.01 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/293.01 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.87/293.01 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.87/293.01 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/293.01 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/293.01 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.87/293.01 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.87/293.01 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/293.01 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/293.01 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/293.01 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/293.01 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.87/293.01 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.87/293.01 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.87/293.01 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/293.01 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/293.01 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.87/293.01 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/293.01 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1149.87/293.01 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1149.87/293.01 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1149.87/293.01 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1149.87/293.01 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1149.87/293.01 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/293.01 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1149.87/293.01 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1149.87/293.01 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1149.87/293.01 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1149.87/293.01 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1149.87/293.01 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/293.01 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/293.01 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1149.87/293.01 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1149.87/293.01 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1149.87/293.01 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 1149.87/293.01 Function symbols to be analyzed: {#cklt}, {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1149.87/293.01 Previous analysis results are: 1149.87/293.01 #ckgt: runtime: O(1) [0], size: O(1) [2] 1149.87/293.01 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1149.87/293.01 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1149.87/293.01 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1149.87/293.01 compare#6: runtime: O(1) [2], size: O(1) [3] 1149.87/293.01 sum#4: runtime: O(1) [3], size: O(1) [7] 1149.87/293.01 #and: runtime: O(1) [0], size: O(1) [2] 1149.87/293.01 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1149.87/293.01 #cklt: runtime: ?, size: O(1) [2] 1149.87/293.01 1149.87/293.01 ---------------------------------------- 1149.87/293.01 1149.87/293.01 (73) IntTrsBoundProof (UPPER BOUND(ID)) 1149.87/293.01 1149.87/293.01 Computed RUNTIME bound using CoFloCo for: #cklt 1149.87/293.01 after applying outer abstraction to obtain an ITS, 1149.87/293.01 resulting in: O(1) with polynomial bound: 0 1149.87/293.01 1149.87/293.01 ---------------------------------------- 1149.87/293.01 1149.87/293.01 (74) 1149.87/293.01 Obligation: 1149.87/293.01 Complexity RNTS consisting of the following rules: 1149.87/293.01 1149.87/293.01 #abs(z) -{ 1 }-> 0 :|: z = 0 1149.87/293.01 #abs(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1149.87/293.01 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1149.87/293.01 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1149.87/293.01 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/293.01 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1149.87/293.01 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/293.01 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1149.87/293.01 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1149.87/293.01 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1149.87/293.01 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1149.87/293.01 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1149.87/293.01 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1149.87/293.01 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #cklt(z) -{ 0 }-> 2 :|: z = 3 1149.87/293.01 #cklt(z) -{ 0 }-> 1 :|: z = 1 1149.87/293.01 #cklt(z) -{ 0 }-> 1 :|: z = 2 1149.87/293.01 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/293.01 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/293.01 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/293.01 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/293.01 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1149.87/293.01 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/293.01 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/293.01 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/293.01 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/293.01 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/293.01 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1149.87/293.01 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1149.87/293.01 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1149.87/293.01 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1149.87/293.01 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1149.87/293.01 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1149.87/293.01 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/293.01 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/293.01 #pred(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/293.01 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/293.01 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1149.87/293.01 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1149.87/293.01 #succ(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1149.87/293.01 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1149.87/293.01 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/293.01 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1149.87/293.01 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/293.01 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1149.87/293.01 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1149.87/293.01 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/293.01 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1149.87/293.01 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1149.87/293.01 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1149.87/293.01 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1149.87/293.01 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1149.87/293.01 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/293.01 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/293.01 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1149.87/293.01 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1149.87/293.01 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1149.87/293.01 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1149.87/293.01 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1149.87/293.01 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1149.87/293.01 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1149.87/293.01 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1149.87/293.01 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1149.87/293.01 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1149.87/293.01 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1149.87/293.01 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/293.01 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1149.87/293.01 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1149.87/293.01 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1149.87/293.01 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1149.87/293.01 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1149.87/293.01 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1149.87/293.01 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1149.87/293.01 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.11/293.02 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.02 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.11/293.02 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.11/293.02 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.02 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.02 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.11/293.02 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.11/293.02 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.02 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.02 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.11/293.02 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.11/293.02 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.11/293.02 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.02 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.11/293.02 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.11/293.02 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.02 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.02 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.02 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.02 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.02 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.02 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.02 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.02 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.02 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.02 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.02 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.02 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.02 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.02 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.02 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.02 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.02 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.02 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.02 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.02 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.11/293.02 1150.11/293.02 Function symbols to be analyzed: {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.11/293.02 Previous analysis results are: 1150.11/293.02 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.02 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.11/293.02 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.11/293.02 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.11/293.02 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.11/293.02 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.11/293.02 #and: runtime: O(1) [0], size: O(1) [2] 1150.11/293.02 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.11/293.02 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.02 1150.11/293.02 ---------------------------------------- 1150.11/293.02 1150.11/293.02 (75) ResultPropagationProof (UPPER BOUND(ID)) 1150.11/293.02 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.11/293.02 ---------------------------------------- 1150.11/293.02 1150.11/293.02 (76) 1150.11/293.02 Obligation: 1150.11/293.02 Complexity RNTS consisting of the following rules: 1150.11/293.02 1150.11/293.02 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.11/293.02 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.02 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.11/293.02 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.11/293.02 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.11/293.02 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.11/293.02 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.11/293.02 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.02 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.11/293.02 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.11/293.02 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.02 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.02 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.11/293.02 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.02 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.11/293.02 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.11/293.02 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.11/293.02 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.11/293.02 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.11/293.02 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.02 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.11/293.02 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.11/293.02 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.11/293.02 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.11/293.02 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.11/293.02 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.11/293.02 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.11/293.02 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.11/293.02 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.11/293.02 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.11/293.02 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.11/293.02 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.11/293.02 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.02 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.02 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.02 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.11/293.02 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.11/293.02 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.11/293.02 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.02 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.11/293.02 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.02 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.11/293.02 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.02 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.11/293.02 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.02 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.11/293.02 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.02 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.11/293.02 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.11/293.02 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.02 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.04 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.04 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.04 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.04 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.04 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.11/293.04 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.04 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.04 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.04 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.04 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.04 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.04 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1150.11/293.04 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1150.11/293.04 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.04 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.04 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.04 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.04 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.04 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.04 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1150.11/293.04 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.11/293.04 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.04 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.11/293.04 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.04 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.11/293.04 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.11/293.04 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.11/293.04 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.11/293.04 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.11/293.04 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.11/293.04 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.04 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.04 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.04 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.04 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.04 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.04 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.11/293.04 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.04 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.04 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.04 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.04 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.04 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.04 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.04 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.04 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.04 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.04 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.04 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.04 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.04 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.11/293.04 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.11/293.04 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.04 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.11/293.04 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.04 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.04 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.04 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.04 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.11/293.04 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.11/293.04 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.11/293.04 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.11/293.04 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.04 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.04 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.04 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1150.11/293.04 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.04 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.04 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.04 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.04 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.04 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.04 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.11/293.04 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.11/293.04 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.11/293.04 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.11/293.04 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.04 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.04 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.04 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.11/293.04 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.04 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.11/293.04 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.04 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.04 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.11/293.04 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.04 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.04 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.11/293.04 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.04 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.04 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.04 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.04 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.04 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.04 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.04 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.11/293.04 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.11/293.04 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.11/293.04 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.11/293.04 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.11/293.04 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.04 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.11/293.04 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.11/293.04 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.11/293.04 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.11/293.04 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.11/293.04 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.04 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.04 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.04 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.04 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.04 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.04 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.04 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.04 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.04 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.04 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.04 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.04 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.04 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.11/293.04 1150.11/293.04 Function symbols to be analyzed: {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.11/293.04 Previous analysis results are: 1150.11/293.04 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.04 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.11/293.04 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.11/293.04 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.11/293.04 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.11/293.04 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.11/293.04 #and: runtime: O(1) [0], size: O(1) [2] 1150.11/293.04 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.11/293.04 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.04 1150.11/293.04 ---------------------------------------- 1150.11/293.04 1150.11/293.04 (77) IntTrsBoundProof (UPPER BOUND(ID)) 1150.11/293.04 1150.11/293.04 Computed SIZE bound using CoFloCo for: #compare 1150.11/293.04 after applying outer abstraction to obtain an ITS, 1150.11/293.04 resulting in: O(1) with polynomial bound: 3 1150.11/293.04 1150.11/293.04 ---------------------------------------- 1150.11/293.04 1150.11/293.04 (78) 1150.11/293.04 Obligation: 1150.11/293.04 Complexity RNTS consisting of the following rules: 1150.11/293.04 1150.11/293.04 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.11/293.04 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.11/293.04 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.11/293.04 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.11/293.04 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.11/293.04 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.11/293.04 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.04 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.11/293.04 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.11/293.04 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.04 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.11/293.04 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.11/293.04 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.11/293.04 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.11/293.04 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.11/293.04 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.11/293.04 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.04 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.11/293.04 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.11/293.04 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.11/293.04 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.11/293.04 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.11/293.04 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.11/293.04 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.11/293.04 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.11/293.04 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.11/293.04 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.11/293.04 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.11/293.04 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.11/293.04 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.04 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.04 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.04 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.11/293.04 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.11/293.04 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.11/293.04 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.11/293.04 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.04 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.11/293.04 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.11/293.04 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.04 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.11/293.04 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.04 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.04 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.04 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.04 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.04 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.04 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.04 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.11/293.04 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.04 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.04 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.04 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.04 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.04 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.04 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1150.11/293.04 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1150.11/293.04 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.04 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.04 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.04 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.04 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.04 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.04 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1150.11/293.04 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.11/293.04 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.04 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.11/293.04 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.04 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.11/293.04 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.11/293.04 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.11/293.04 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.11/293.04 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.11/293.04 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.11/293.04 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.11/293.04 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.04 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.04 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.04 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.04 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.04 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.04 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.11/293.04 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.04 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.04 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.04 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.04 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.04 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.04 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.04 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.04 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.04 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.04 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.04 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.04 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.04 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.11/293.04 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.11/293.04 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.04 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.11/293.04 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.04 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.04 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.04 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.04 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.11/293.04 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.11/293.04 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.11/293.04 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.11/293.04 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.04 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.04 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.04 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1150.11/293.04 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.04 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.04 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.04 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.04 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.04 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.04 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.04 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.11/293.04 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.11/293.04 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.11/293.04 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.11/293.04 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.04 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.04 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.04 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.11/293.04 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.04 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.11/293.04 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.04 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.04 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.11/293.04 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.04 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.04 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.11/293.04 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.04 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.04 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.04 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.04 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.04 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.04 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.04 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.11/293.04 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.11/293.04 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.11/293.04 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.04 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.04 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.11/293.04 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.11/293.04 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.04 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.11/293.04 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.11/293.04 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.11/293.04 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.04 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.11/293.04 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.11/293.04 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.04 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.04 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.04 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.04 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.04 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 1150.11/293.05 Function symbols to be analyzed: {#compare}, {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.11/293.05 Previous analysis results are: 1150.11/293.05 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.05 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.11/293.05 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.11/293.05 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.11/293.05 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.11/293.05 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.11/293.05 #and: runtime: O(1) [0], size: O(1) [2] 1150.11/293.05 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.11/293.05 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.05 #compare: runtime: ?, size: O(1) [3] 1150.11/293.05 1150.11/293.05 ---------------------------------------- 1150.11/293.05 1150.11/293.05 (79) IntTrsBoundProof (UPPER BOUND(ID)) 1150.11/293.05 1150.11/293.05 Computed RUNTIME bound using CoFloCo for: #compare 1150.11/293.05 after applying outer abstraction to obtain an ITS, 1150.11/293.05 resulting in: O(1) with polynomial bound: 0 1150.11/293.05 1150.11/293.05 ---------------------------------------- 1150.11/293.05 1150.11/293.05 (80) 1150.11/293.05 Obligation: 1150.11/293.05 Complexity RNTS consisting of the following rules: 1150.11/293.05 1150.11/293.05 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.11/293.05 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.11/293.05 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.11/293.05 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.05 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.05 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.11/293.05 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.11/293.05 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.11/293.05 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.11/293.05 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.05 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.11/293.05 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.11/293.05 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.05 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.11/293.05 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> #compare(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> #compare(z' - 1, z - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.05 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.05 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.05 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.05 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.05 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> #ckgt(#compare(z - 1, z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1150.11/293.05 #greater(z, z') -{ 1 }-> #ckgt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1150.11/293.05 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.05 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.05 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.05 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.05 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.05 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.05 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> #cklt(#compare(z - 1, z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #less(z, z') -{ 1 }-> #cklt(#compare(z' - 1, z - 1)) :|: z' - 1 >= 0, z - 1 >= 0 1150.11/293.05 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.11/293.05 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.05 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.11/293.05 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.11/293.05 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.11/293.05 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.11/293.05 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.11/293.05 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.11/293.05 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.05 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.05 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.05 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.05 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.05 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.05 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.11/293.05 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.05 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.05 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.05 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.05 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.05 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.05 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.05 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.05 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.05 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.05 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.05 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.05 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.05 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.11/293.05 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.11/293.05 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.05 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.11/293.05 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.05 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.05 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.05 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.05 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.11/293.05 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.11/293.05 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.11/293.05 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.11/293.05 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(#cklt(#compare(z'', z1)), z'', z1) :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.05 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.05 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.05 compare#5(z, z', z'') -{ 2 }-> compare#6(#ckgt(#compare(z', z''))) :|: z' >= 0, z = 1, z'' >= 0 1150.11/293.05 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.05 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.05 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.05 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.05 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.11/293.05 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.11/293.05 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.05 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.05 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.05 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.11/293.05 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.05 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.11/293.05 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.05 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.05 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.05 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.05 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.11/293.05 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.05 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.05 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.05 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.05 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.05 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.05 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.05 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.11/293.05 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.11/293.05 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.11/293.05 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.11/293.05 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.11/293.05 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.05 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.11/293.05 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.11/293.05 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.11/293.05 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.11/293.05 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.11/293.05 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.05 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.05 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.05 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.05 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 1150.11/293.05 Function symbols to be analyzed: {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.11/293.05 Previous analysis results are: 1150.11/293.05 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.05 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.11/293.05 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.11/293.05 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.11/293.05 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.11/293.05 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.11/293.05 #and: runtime: O(1) [0], size: O(1) [2] 1150.11/293.05 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.11/293.05 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.05 #compare: runtime: O(1) [0], size: O(1) [3] 1150.11/293.05 1150.11/293.05 ---------------------------------------- 1150.11/293.05 1150.11/293.05 (81) ResultPropagationProof (UPPER BOUND(ID)) 1150.11/293.05 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.11/293.05 ---------------------------------------- 1150.11/293.05 1150.11/293.05 (82) 1150.11/293.05 Obligation: 1150.11/293.05 Complexity RNTS consisting of the following rules: 1150.11/293.05 1150.11/293.05 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.11/293.05 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.11/293.05 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.11/293.05 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.05 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.05 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.11/293.05 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.11/293.05 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.11/293.05 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.11/293.05 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.05 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.11/293.05 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.11/293.05 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.05 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.11/293.05 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.05 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.05 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.05 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.05 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.05 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.05 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.05 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.05 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.05 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.05 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.05 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.05 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.05 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.05 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.11/293.05 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.05 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.11/293.05 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.11/293.05 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.11/293.05 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.11/293.05 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.11/293.05 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.11/293.05 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.05 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.05 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.05 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.05 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.05 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.05 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.11/293.05 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.05 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.05 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.05 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.05 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.05 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.05 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.05 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.05 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.05 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.05 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.05 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.05 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.05 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.11/293.05 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.11/293.05 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.05 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.11/293.05 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.05 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.05 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.05 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.05 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.11/293.05 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.11/293.05 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.11/293.05 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.11/293.05 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.05 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.05 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.11/293.05 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.05 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.05 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.05 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.05 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.05 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.11/293.05 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.11/293.05 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.05 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.05 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.05 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.11/293.05 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.05 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.11/293.05 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.05 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.05 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.05 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.05 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.11/293.05 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.05 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.05 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.05 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.05 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.05 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.05 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.05 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.11/293.05 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.11/293.05 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.11/293.05 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.05 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.11/293.05 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.11/293.05 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.05 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.11/293.05 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.11/293.05 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.11/293.05 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.11/293.05 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.11/293.05 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.05 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.05 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.05 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.05 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.05 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 1150.11/293.05 Function symbols to be analyzed: {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.11/293.05 Previous analysis results are: 1150.11/293.05 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.05 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.11/293.05 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.11/293.05 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.11/293.05 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.11/293.05 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.11/293.05 #and: runtime: O(1) [0], size: O(1) [2] 1150.11/293.05 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.11/293.05 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.05 #compare: runtime: O(1) [0], size: O(1) [3] 1150.11/293.05 1150.11/293.05 ---------------------------------------- 1150.11/293.05 1150.11/293.05 (83) IntTrsBoundProof (UPPER BOUND(ID)) 1150.11/293.05 1150.11/293.05 Computed SIZE bound using CoFloCo for: diff#1 1150.11/293.05 after applying outer abstraction to obtain an ITS, 1150.11/293.05 resulting in: O(1) with polynomial bound: 3 1150.11/293.05 1150.11/293.05 ---------------------------------------- 1150.11/293.05 1150.11/293.05 (84) 1150.11/293.05 Obligation: 1150.11/293.05 Complexity RNTS consisting of the following rules: 1150.11/293.05 1150.11/293.05 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.11/293.05 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.11/293.05 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.11/293.05 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.05 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.11/293.05 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.05 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.05 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.05 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.11/293.05 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.11/293.05 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.11/293.05 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.11/293.05 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.05 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.11/293.05 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.11/293.05 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.05 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.11/293.05 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.05 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.05 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.05 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.05 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.05 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.11/293.05 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.05 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.05 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.05 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.05 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.05 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.05 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.05 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.05 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.11/293.05 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.05 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.05 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.05 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.05 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.06 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.06 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.06 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.06 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.06 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.06 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.06 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.06 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.11/293.06 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.11/293.06 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.11/293.06 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.11/293.06 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.06 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.06 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.06 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.06 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.11/293.06 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.11/293.06 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.06 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.06 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.06 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.11/293.06 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.06 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.11/293.06 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.11/293.06 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.11/293.06 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.11/293.06 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.11/293.06 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.11/293.06 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.11/293.06 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.06 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.06 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 1150.11/293.06 Function symbols to be analyzed: {diff#1}, {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.11/293.06 Previous analysis results are: 1150.11/293.06 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.11/293.06 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.11/293.06 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.11/293.06 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.11/293.06 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.11/293.06 #and: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.11/293.06 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 #compare: runtime: O(1) [0], size: O(1) [3] 1150.11/293.06 diff#1: runtime: ?, size: O(1) [3] 1150.11/293.06 1150.11/293.06 ---------------------------------------- 1150.11/293.06 1150.11/293.06 (85) IntTrsBoundProof (UPPER BOUND(ID)) 1150.11/293.06 1150.11/293.06 Computed RUNTIME bound using CoFloCo for: diff#1 1150.11/293.06 after applying outer abstraction to obtain an ITS, 1150.11/293.06 resulting in: O(1) with polynomial bound: 2 1150.11/293.06 1150.11/293.06 ---------------------------------------- 1150.11/293.06 1150.11/293.06 (86) 1150.11/293.06 Obligation: 1150.11/293.06 Complexity RNTS consisting of the following rules: 1150.11/293.06 1150.11/293.06 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.11/293.06 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.11/293.06 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.11/293.06 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.06 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.11/293.06 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.06 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.11/293.06 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.11/293.06 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.06 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.11/293.06 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.06 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.06 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.06 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.06 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.06 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.06 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.06 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.06 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.11/293.06 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.11/293.06 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.11/293.06 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.11/293.06 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.06 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.06 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.06 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.06 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.11/293.06 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.11/293.06 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.06 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.06 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.06 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.11/293.06 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.06 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.11/293.06 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.11/293.06 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.11/293.06 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.11/293.06 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.11/293.06 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.11/293.06 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.11/293.06 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.06 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.06 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 1150.11/293.06 Function symbols to be analyzed: {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.11/293.06 Previous analysis results are: 1150.11/293.06 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.11/293.06 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.11/293.06 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.11/293.06 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.11/293.06 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.11/293.06 #and: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.11/293.06 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 #compare: runtime: O(1) [0], size: O(1) [3] 1150.11/293.06 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.11/293.06 1150.11/293.06 ---------------------------------------- 1150.11/293.06 1150.11/293.06 (87) ResultPropagationProof (UPPER BOUND(ID)) 1150.11/293.06 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.11/293.06 ---------------------------------------- 1150.11/293.06 1150.11/293.06 (88) 1150.11/293.06 Obligation: 1150.11/293.06 Complexity RNTS consisting of the following rules: 1150.11/293.06 1150.11/293.06 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.11/293.06 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.11/293.06 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.11/293.06 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.06 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.11/293.06 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.06 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.11/293.06 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.11/293.06 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.06 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.11/293.06 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.06 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.06 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.06 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.06 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.06 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.06 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.06 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.06 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.11/293.06 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.11/293.06 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.11/293.06 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.11/293.06 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.06 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.06 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.06 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.06 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.11/293.06 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.11/293.06 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.06 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.06 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.06 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.11/293.06 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.06 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.11/293.06 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.11/293.06 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.11/293.06 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.11/293.06 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.11/293.06 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.11/293.06 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.11/293.06 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.06 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.06 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 1150.11/293.06 Function symbols to be analyzed: {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.11/293.06 Previous analysis results are: 1150.11/293.06 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.11/293.06 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.11/293.06 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.11/293.06 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.11/293.06 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.11/293.06 #and: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.11/293.06 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 #compare: runtime: O(1) [0], size: O(1) [3] 1150.11/293.06 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.11/293.06 1150.11/293.06 ---------------------------------------- 1150.11/293.06 1150.11/293.06 (89) IntTrsBoundProof (UPPER BOUND(ID)) 1150.11/293.06 1150.11/293.06 Computed SIZE bound using CoFloCo for: #abs 1150.11/293.06 after applying outer abstraction to obtain an ITS, 1150.11/293.06 resulting in: O(n^1) with polynomial bound: 1 + z 1150.11/293.06 1150.11/293.06 ---------------------------------------- 1150.11/293.06 1150.11/293.06 (90) 1150.11/293.06 Obligation: 1150.11/293.06 Complexity RNTS consisting of the following rules: 1150.11/293.06 1150.11/293.06 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.11/293.06 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.11/293.06 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.11/293.06 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.06 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.11/293.06 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.06 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.11/293.06 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.11/293.06 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.06 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.11/293.06 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.06 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.06 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.06 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.06 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.06 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.06 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.06 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.06 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.11/293.06 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.11/293.06 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.11/293.06 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.11/293.06 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.06 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.06 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.06 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.06 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.11/293.06 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.11/293.06 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.06 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.06 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.06 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.11/293.06 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.06 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.11/293.06 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.11/293.06 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.11/293.06 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.11/293.06 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.11/293.06 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.11/293.06 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.11/293.06 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.06 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.06 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 1150.11/293.06 Function symbols to be analyzed: {#abs}, {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.11/293.06 Previous analysis results are: 1150.11/293.06 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.11/293.06 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.11/293.06 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.11/293.06 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.11/293.06 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.11/293.06 #and: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.11/293.06 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 #compare: runtime: O(1) [0], size: O(1) [3] 1150.11/293.06 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.11/293.06 #abs: runtime: ?, size: O(n^1) [1 + z] 1150.11/293.06 1150.11/293.06 ---------------------------------------- 1150.11/293.06 1150.11/293.06 (91) IntTrsBoundProof (UPPER BOUND(ID)) 1150.11/293.06 1150.11/293.06 Computed RUNTIME bound using CoFloCo for: #abs 1150.11/293.06 after applying outer abstraction to obtain an ITS, 1150.11/293.06 resulting in: O(1) with polynomial bound: 1 1150.11/293.06 1150.11/293.06 ---------------------------------------- 1150.11/293.06 1150.11/293.06 (92) 1150.11/293.06 Obligation: 1150.11/293.06 Complexity RNTS consisting of the following rules: 1150.11/293.06 1150.11/293.06 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.11/293.06 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.11/293.06 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.11/293.06 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.06 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.11/293.06 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.11/293.06 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.06 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.11/293.06 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.11/293.06 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.06 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.11/293.06 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.06 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.06 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.06 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.11/293.06 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.11/293.06 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.06 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.06 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.06 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.06 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.11/293.06 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.11/293.06 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.11/293.06 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.11/293.06 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.06 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.11/293.06 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.06 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.11/293.06 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.11/293.06 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.11/293.06 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.11/293.06 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.06 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.06 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.11/293.06 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.11/293.06 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.11/293.06 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.11/293.06 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.11/293.06 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.11/293.06 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.11/293.06 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.06 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.11/293.06 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.11/293.06 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.11/293.06 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.11/293.06 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.11/293.06 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.11/293.06 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.11/293.06 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.11/293.06 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.11/293.06 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.11/293.06 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.11/293.06 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.11/293.06 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.11/293.06 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.11/293.06 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.11/293.06 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.06 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.11/293.06 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.11/293.06 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.11/293.06 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.11/293.06 1150.11/293.06 Function symbols to be analyzed: {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.11/293.06 Previous analysis results are: 1150.11/293.06 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.11/293.06 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.11/293.06 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.11/293.06 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.11/293.06 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.11/293.06 #and: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.11/293.06 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.11/293.06 #compare: runtime: O(1) [0], size: O(1) [3] 1150.11/293.06 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.11/293.06 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.11/293.06 1150.11/293.06 ---------------------------------------- 1150.11/293.06 1150.11/293.06 (93) ResultPropagationProof (UPPER BOUND(ID)) 1150.11/293.06 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.11/293.06 ---------------------------------------- 1150.11/293.06 1150.11/293.06 (94) 1150.11/293.06 Obligation: 1150.11/293.06 Complexity RNTS consisting of the following rules: 1150.11/293.06 1150.11/293.06 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.11/293.06 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.06 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.11/293.06 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.11/293.06 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.11/293.06 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.11/293.06 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.11/293.06 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.07 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.11/293.07 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.07 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.11/293.07 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.11/293.07 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.11/293.07 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.07 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.11/293.07 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.07 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.11/293.07 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.07 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.11/293.07 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.11/293.07 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.11/293.07 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.11/293.07 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.07 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.11/293.07 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.11/293.07 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.11/293.07 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.07 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.11/293.07 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.11/293.07 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.07 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.07 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.07 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.11/293.07 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.07 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.11/293.07 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.07 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.07 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.11/293.07 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.11/293.07 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.11/293.07 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.11/293.07 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.07 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.11/293.07 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.07 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.07 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.11/293.07 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.11/293.07 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.11/293.07 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.11/293.07 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.07 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.11/293.07 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.11/293.07 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.11/293.07 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.11/293.07 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.11/293.07 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.11/293.07 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.11/293.07 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.11/293.07 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.11/293.07 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.11/293.07 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.08 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.08 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.08 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.08 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.08 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.08 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.08 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.08 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.08 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.08 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.08 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.08 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.08 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.08 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.08 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.08 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.08 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.08 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.08 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.08 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.08 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.08 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.08 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.08 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.08 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.08 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.08 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.08 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.08 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.08 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.08 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.08 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 1150.28/293.08 Function symbols to be analyzed: {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.08 Previous analysis results are: 1150.28/293.08 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.08 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.08 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.08 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.08 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.08 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.08 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.08 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.08 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.08 1150.28/293.08 ---------------------------------------- 1150.28/293.08 1150.28/293.08 (95) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.08 1150.28/293.08 Computed SIZE bound using CoFloCo for: #succ 1150.28/293.08 after applying outer abstraction to obtain an ITS, 1150.28/293.08 resulting in: O(n^1) with polynomial bound: 2 + z 1150.28/293.08 1150.28/293.08 ---------------------------------------- 1150.28/293.08 1150.28/293.08 (96) 1150.28/293.08 Obligation: 1150.28/293.08 Complexity RNTS consisting of the following rules: 1150.28/293.08 1150.28/293.08 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.08 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.08 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.08 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.08 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.08 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.08 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.08 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.08 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.08 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.08 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.08 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.08 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.08 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.08 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.08 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.08 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.08 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.08 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.08 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.08 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.08 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.08 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.08 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.08 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.08 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.08 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.08 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.08 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.08 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.08 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.08 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.08 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.08 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.08 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.08 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.08 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.08 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.08 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.08 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.08 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.08 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.08 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 1150.28/293.08 Function symbols to be analyzed: {#succ}, {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.08 Previous analysis results are: 1150.28/293.08 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.08 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.08 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.08 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.08 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.08 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.08 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.08 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.08 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.08 #succ: runtime: ?, size: O(n^1) [2 + z] 1150.28/293.08 1150.28/293.08 ---------------------------------------- 1150.28/293.08 1150.28/293.08 (97) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.08 1150.28/293.08 Computed RUNTIME bound using CoFloCo for: #succ 1150.28/293.08 after applying outer abstraction to obtain an ITS, 1150.28/293.08 resulting in: O(1) with polynomial bound: 0 1150.28/293.08 1150.28/293.08 ---------------------------------------- 1150.28/293.08 1150.28/293.08 (98) 1150.28/293.08 Obligation: 1150.28/293.08 Complexity RNTS consisting of the following rules: 1150.28/293.08 1150.28/293.08 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.08 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.08 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.08 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.08 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.08 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.08 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.08 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.08 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.08 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.08 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.08 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.08 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.08 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.08 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.08 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.08 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.08 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.08 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.08 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.08 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.08 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.08 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.08 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.08 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.08 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.08 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.08 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.08 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.08 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.08 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.08 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.08 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.08 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.08 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.08 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.08 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.08 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.08 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.08 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.08 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.08 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.08 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 1150.28/293.08 Function symbols to be analyzed: {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.08 Previous analysis results are: 1150.28/293.08 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.08 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.08 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.08 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.08 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.08 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.08 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.08 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.08 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.08 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.08 1150.28/293.08 ---------------------------------------- 1150.28/293.08 1150.28/293.08 (99) ResultPropagationProof (UPPER BOUND(ID)) 1150.28/293.08 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.28/293.08 ---------------------------------------- 1150.28/293.08 1150.28/293.08 (100) 1150.28/293.08 Obligation: 1150.28/293.08 Complexity RNTS consisting of the following rules: 1150.28/293.08 1150.28/293.08 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.08 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.08 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.08 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.08 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.08 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.08 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.08 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.08 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.08 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.08 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.08 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.08 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.08 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.08 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.08 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.08 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.08 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.08 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.08 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.08 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.08 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.08 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.08 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.08 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.08 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.08 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.08 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.08 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.08 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.08 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.08 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.08 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.08 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.08 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.08 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.08 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.08 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.08 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.08 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.08 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.08 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.08 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 1150.28/293.08 Function symbols to be analyzed: {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.08 Previous analysis results are: 1150.28/293.08 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.08 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.08 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.08 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.08 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.08 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.08 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.08 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.08 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.08 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.08 1150.28/293.08 ---------------------------------------- 1150.28/293.08 1150.28/293.08 (101) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.08 1150.28/293.08 Computed SIZE bound using CoFloCo for: #greater 1150.28/293.08 after applying outer abstraction to obtain an ITS, 1150.28/293.08 resulting in: O(1) with polynomial bound: 2 1150.28/293.08 1150.28/293.08 ---------------------------------------- 1150.28/293.08 1150.28/293.08 (102) 1150.28/293.08 Obligation: 1150.28/293.08 Complexity RNTS consisting of the following rules: 1150.28/293.08 1150.28/293.08 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.08 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.08 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.08 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.08 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.08 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.08 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.08 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.08 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.08 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.08 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.08 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.08 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.08 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.08 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.08 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.08 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.28/293.08 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.08 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.08 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.08 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.08 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.08 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.08 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.08 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.08 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.08 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.08 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.08 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.08 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.08 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.08 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.08 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.08 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.08 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.08 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.08 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.08 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.08 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.08 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.08 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.08 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.08 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.08 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.08 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.08 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.08 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.08 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.08 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.08 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.08 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.08 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.08 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.08 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.08 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.08 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.08 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.08 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.08 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.08 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.08 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.08 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.08 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.08 1150.28/293.08 Function symbols to be analyzed: {#greater}, {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.08 Previous analysis results are: 1150.28/293.08 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.08 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.08 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.08 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.08 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.08 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.08 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.08 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.08 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.08 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.08 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.08 #greater: runtime: ?, size: O(1) [2] 1150.28/293.08 1150.28/293.08 ---------------------------------------- 1150.28/293.08 1150.28/293.08 (103) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.08 1150.28/293.08 Computed RUNTIME bound using CoFloCo for: #greater 1150.28/293.08 after applying outer abstraction to obtain an ITS, 1150.28/293.08 resulting in: O(1) with polynomial bound: 1 1150.28/293.08 1150.28/293.08 ---------------------------------------- 1150.28/293.08 1150.28/293.08 (104) 1150.28/293.08 Obligation: 1150.28/293.08 Complexity RNTS consisting of the following rules: 1150.28/293.08 1150.28/293.08 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.08 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.08 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.08 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.08 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.08 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.09 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.09 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.09 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.09 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.09 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.09 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.09 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.09 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.09 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.09 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.09 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.09 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.09 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.09 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.09 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.09 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.09 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.09 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.09 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.09 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.09 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.09 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.09 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.09 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.09 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.09 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.09 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.09 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.09 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.09 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.09 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.09 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.28/293.09 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.28/293.09 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.09 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.09 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.09 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.09 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.09 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.09 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.09 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.28/293.09 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.09 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.09 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.09 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.09 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.09 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.09 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.09 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.09 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.09 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.09 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.09 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.09 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.09 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.09 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.09 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.09 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.09 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.09 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.09 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.09 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.09 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.09 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.09 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.09 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.09 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.09 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.09 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.09 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.09 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.09 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.09 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.09 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.09 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.09 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.09 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.09 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.09 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.09 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.09 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.09 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.09 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.09 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.09 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.09 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.09 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.28/293.09 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.09 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.09 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.09 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.09 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.09 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.09 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.09 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.09 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.09 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.09 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.09 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.09 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.09 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.09 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.09 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.09 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.09 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.09 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.09 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.09 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.09 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.09 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.09 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.09 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.09 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.09 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.09 1150.28/293.09 Function symbols to be analyzed: {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.09 Previous analysis results are: 1150.28/293.09 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.09 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.09 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.09 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.09 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.09 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.09 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.09 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.09 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.09 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.09 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.09 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.09 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.09 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.09 1150.28/293.09 ---------------------------------------- 1150.28/293.09 1150.28/293.09 (105) ResultPropagationProof (UPPER BOUND(ID)) 1150.28/293.09 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.28/293.09 ---------------------------------------- 1150.28/293.09 1150.28/293.09 (106) 1150.28/293.09 Obligation: 1150.28/293.09 Complexity RNTS consisting of the following rules: 1150.28/293.09 1150.28/293.09 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.09 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.09 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.09 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.09 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.09 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.09 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.09 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.09 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.09 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.09 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.09 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.09 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.09 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.09 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.09 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.09 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.09 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.09 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.09 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.09 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.09 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.09 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.09 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.09 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.09 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.09 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.09 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.09 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.09 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.09 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.09 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.09 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.09 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.09 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.09 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.09 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.28/293.09 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.28/293.09 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.09 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.09 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.09 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.09 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.09 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.09 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.09 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.28/293.09 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.09 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.09 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.09 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.09 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.09 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.09 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.09 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.09 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.09 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.09 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.09 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.09 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.09 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.09 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.09 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.09 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.09 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.09 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.09 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.09 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.09 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.09 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.09 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.09 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.09 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.09 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.09 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.09 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.09 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.09 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.09 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.09 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.09 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.09 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.09 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.09 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.09 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.09 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.09 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.09 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.09 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.09 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.09 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.09 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.09 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.28/293.09 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.09 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.09 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.09 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.09 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.09 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.09 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.09 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.09 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.09 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.09 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.09 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.09 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.09 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.09 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.09 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.09 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.09 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.09 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.09 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.09 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.09 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.09 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.09 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.09 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.09 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.09 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.09 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.09 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.09 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.09 1150.28/293.09 Function symbols to be analyzed: {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.09 Previous analysis results are: 1150.28/293.09 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.09 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.09 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.09 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.09 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.09 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.09 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.09 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.09 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.09 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.09 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.09 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.09 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.09 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.09 1150.28/293.09 ---------------------------------------- 1150.28/293.09 1150.28/293.09 (107) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.09 1150.28/293.09 Computed SIZE bound using KoAT for: #add 1150.28/293.09 after applying outer abstraction to obtain an ITS, 1150.28/293.09 resulting in: O(n^1) with polynomial bound: 2*z + z' 1150.28/293.09 1150.28/293.09 ---------------------------------------- 1150.28/293.09 1150.28/293.09 (108) 1150.28/293.09 Obligation: 1150.28/293.09 Complexity RNTS consisting of the following rules: 1150.28/293.09 1150.28/293.09 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.09 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.09 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.09 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.09 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.09 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.09 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.09 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.09 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.09 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.09 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.09 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.09 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.09 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.09 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.09 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.09 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.09 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.09 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.09 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.09 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.09 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.09 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.09 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.09 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.09 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.09 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.09 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.09 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.09 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.09 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.09 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.10 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.10 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.10 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.10 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.10 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.10 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.10 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.10 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.10 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.10 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.10 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.10 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.10 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.10 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.10 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.10 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.10 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.10 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.10 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.10 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.10 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.10 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.10 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.10 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.10 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.10 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.10 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.10 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.10 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.10 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.10 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.10 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.10 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.10 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.10 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.10 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.10 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.10 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.10 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.10 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.10 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 1150.28/293.10 Function symbols to be analyzed: {#add}, {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.10 Previous analysis results are: 1150.28/293.10 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.10 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.10 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.10 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.10 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.10 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.10 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.10 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.10 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.10 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.10 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.10 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.10 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.10 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.10 #add: runtime: ?, size: O(n^1) [2*z + z'] 1150.28/293.10 1150.28/293.10 ---------------------------------------- 1150.28/293.10 1150.28/293.10 (109) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.10 1150.28/293.10 Computed RUNTIME bound using CoFloCo for: #add 1150.28/293.10 after applying outer abstraction to obtain an ITS, 1150.28/293.10 resulting in: O(1) with polynomial bound: 0 1150.28/293.10 1150.28/293.10 ---------------------------------------- 1150.28/293.10 1150.28/293.10 (110) 1150.28/293.10 Obligation: 1150.28/293.10 Complexity RNTS consisting of the following rules: 1150.28/293.10 1150.28/293.10 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.10 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.10 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.10 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> #succ(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> #pred(#succ(#add(1 + (1 + (z - 4)), z'))) :|: z - 4 >= 0, z' >= 0 1150.28/293.10 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.10 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.10 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.10 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.10 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.10 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.10 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.10 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.10 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.10 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.10 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.10 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.10 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.10 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.10 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.10 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.10 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.10 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.10 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z = 1 + 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> #add(1 + z', 0) :|: z - 1 >= 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.10 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.10 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.10 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #sub(z, z') -{ 0 }-> #add(z, 1 + (z' - 1)) :|: z >= 0, z' - 1 >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.10 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.10 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.10 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.10 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.10 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.10 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.10 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.10 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.10 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.10 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.10 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.10 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.10 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(#add(z, z'), z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.10 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.10 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.10 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.10 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.10 plus(z, z') -{ 1 }-> #add(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.10 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.10 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.10 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.10 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.10 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.10 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.10 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 sum(z, z', z'') -{ 2 }-> sum#1(plus(#add(z, z'), z'')) :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.10 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.10 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.10 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.10 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.10 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.10 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.10 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.10 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.10 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.10 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.10 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.10 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 1150.28/293.10 Function symbols to be analyzed: {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.10 Previous analysis results are: 1150.28/293.10 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.10 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.10 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.10 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.10 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.10 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.10 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.10 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.10 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.10 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.10 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.10 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.10 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.10 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.10 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.10 1150.28/293.10 ---------------------------------------- 1150.28/293.10 1150.28/293.10 (111) ResultPropagationProof (UPPER BOUND(ID)) 1150.28/293.10 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.28/293.10 ---------------------------------------- 1150.28/293.10 1150.28/293.10 (112) 1150.28/293.10 Obligation: 1150.28/293.10 Complexity RNTS consisting of the following rules: 1150.28/293.10 1150.28/293.10 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.10 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.10 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.10 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.10 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.10 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.10 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.10 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.10 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.10 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.10 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.10 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.10 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.10 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.10 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.10 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.10 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.10 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.10 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.10 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.10 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.10 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.10 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.10 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.10 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.10 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.10 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.10 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.10 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.10 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.10 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.10 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.10 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.10 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.10 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.10 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.10 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.10 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.10 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.10 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.10 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.10 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.10 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.10 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.10 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.10 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.10 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.10 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.10 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.10 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.10 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.10 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.10 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.10 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.10 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.10 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.10 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.10 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.10 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.10 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.10 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.10 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.10 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.10 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.10 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.10 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 1150.28/293.10 Function symbols to be analyzed: {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.10 Previous analysis results are: 1150.28/293.10 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.10 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.10 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.10 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.10 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.10 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.10 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.10 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.10 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.10 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.10 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.10 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.10 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.10 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.10 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.10 1150.28/293.10 ---------------------------------------- 1150.28/293.10 1150.28/293.10 (113) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.10 1150.28/293.10 Computed SIZE bound using CoFloCo for: #natdiv 1150.28/293.10 after applying outer abstraction to obtain an ITS, 1150.28/293.10 resulting in: O(n^1) with polynomial bound: 1 + z 1150.28/293.10 1150.28/293.10 ---------------------------------------- 1150.28/293.10 1150.28/293.10 (114) 1150.28/293.10 Obligation: 1150.28/293.10 Complexity RNTS consisting of the following rules: 1150.28/293.10 1150.28/293.10 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.10 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.10 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.10 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.10 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.10 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.10 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.10 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.10 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.10 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.10 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.10 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.10 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.10 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.10 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.10 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.10 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.10 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.10 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.10 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.10 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.10 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.10 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.10 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.10 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.10 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.10 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.10 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.10 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.10 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.10 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.10 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.10 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.10 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.10 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.10 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.10 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.10 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.10 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.10 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.10 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.10 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.10 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.10 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.10 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.10 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.10 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.10 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.10 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.10 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.10 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.10 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.10 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.10 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.10 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.10 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.10 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.10 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.10 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.10 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.10 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.10 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.10 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.10 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.10 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.10 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.10 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.10 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.10 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.10 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.11 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.11 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.11 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.11 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.11 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.11 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.11 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.11 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.11 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.11 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 1150.28/293.11 Function symbols to be analyzed: {#natdiv}, {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.11 Previous analysis results are: 1150.28/293.11 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.11 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.11 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.11 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.11 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.11 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.11 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.11 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.11 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.11 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.11 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.11 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.11 #natdiv: runtime: ?, size: O(n^1) [1 + z] 1150.28/293.11 1150.28/293.11 ---------------------------------------- 1150.28/293.11 1150.28/293.11 (115) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.11 1150.28/293.11 Computed RUNTIME bound using CoFloCo for: #natdiv 1150.28/293.11 after applying outer abstraction to obtain an ITS, 1150.28/293.11 resulting in: O(1) with polynomial bound: 0 1150.28/293.11 1150.28/293.11 ---------------------------------------- 1150.28/293.11 1150.28/293.11 (116) 1150.28/293.11 Obligation: 1150.28/293.11 Complexity RNTS consisting of the following rules: 1150.28/293.11 1150.28/293.11 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.11 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.11 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.11 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.11 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.11 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.11 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.11 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.11 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.11 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.11 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.11 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #div(z, z') -{ 0 }-> 1 + #natdiv(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.11 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.11 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.11 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.11 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.11 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.11 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.11 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.11 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.11 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(s3, 1 + (1 + (z' - 2))) :|: s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(0, 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 + #natdiv(z - 1, 1 + 0) :|: z - 1 >= 0, z' = 1 + 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.11 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.11 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.11 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.11 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.11 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.11 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.11 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.11 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.11 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.11 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.11 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.11 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.11 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.11 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.11 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.11 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.11 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.11 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.11 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.11 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.11 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.11 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.11 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.11 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.11 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.11 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.11 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.11 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.11 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.11 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.11 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.11 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.11 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.11 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.11 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.11 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.11 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.11 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.11 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.11 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.11 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.11 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.11 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.11 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.11 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.11 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.11 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.11 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.11 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.11 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.11 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.11 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.11 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.11 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.11 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.11 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.11 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.11 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.11 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.11 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.11 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.11 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.11 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.11 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.11 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.11 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.11 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 1150.28/293.11 Function symbols to be analyzed: {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.11 Previous analysis results are: 1150.28/293.11 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.11 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.11 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.11 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.11 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.11 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.11 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.11 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.11 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.11 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.11 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.11 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.11 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.11 1150.28/293.11 ---------------------------------------- 1150.28/293.11 1150.28/293.11 (117) ResultPropagationProof (UPPER BOUND(ID)) 1150.28/293.11 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.28/293.11 ---------------------------------------- 1150.28/293.11 1150.28/293.11 (118) 1150.28/293.11 Obligation: 1150.28/293.11 Complexity RNTS consisting of the following rules: 1150.28/293.11 1150.28/293.11 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.11 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.11 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.11 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.11 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.11 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.11 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.11 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.11 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.11 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.11 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.11 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.11 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.11 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.11 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.11 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.11 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.11 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.11 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.11 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.11 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.11 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.11 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.11 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.11 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.11 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.11 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.11 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.11 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.11 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.11 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.11 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.11 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.11 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.11 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.11 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.11 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.11 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.11 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.11 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.11 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.11 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.11 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.11 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.11 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.11 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.11 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.11 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.11 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.11 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.11 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.11 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.11 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.11 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.11 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.11 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.11 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.11 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.11 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.11 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.11 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.11 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.11 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.11 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.11 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.11 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.11 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.11 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.11 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.11 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.11 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.11 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.11 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.11 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.11 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.11 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.11 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.11 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.11 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.11 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.11 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.11 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.11 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.11 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.11 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.11 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.11 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.11 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 1150.28/293.11 Function symbols to be analyzed: {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.11 Previous analysis results are: 1150.28/293.11 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.11 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.11 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.11 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.11 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.11 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.11 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.11 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.11 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.11 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.11 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.11 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.11 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.11 1150.28/293.11 ---------------------------------------- 1150.28/293.11 1150.28/293.11 (119) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.11 1150.28/293.11 Computed SIZE bound using CoFloCo for: #eq 1150.28/293.11 after applying outer abstraction to obtain an ITS, 1150.28/293.11 resulting in: O(1) with polynomial bound: 2 1150.28/293.11 1150.28/293.11 ---------------------------------------- 1150.28/293.11 1150.28/293.11 (120) 1150.28/293.11 Obligation: 1150.28/293.11 Complexity RNTS consisting of the following rules: 1150.28/293.11 1150.28/293.11 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.11 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.11 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.11 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.11 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.11 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.11 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.11 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.11 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.11 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.11 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.11 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.11 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.11 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.11 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.11 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.11 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.11 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.11 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.11 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.11 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.11 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.11 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.11 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.11 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.11 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.11 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.11 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.11 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.11 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.11 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.11 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.11 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.11 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.11 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.11 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.11 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.11 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.11 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.11 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.11 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.11 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.11 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.11 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.11 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.11 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.11 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.11 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.11 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.11 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.11 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.11 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.11 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.11 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.11 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.11 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.11 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.11 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.11 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.11 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.11 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.11 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.11 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.11 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.11 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.11 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.11 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.11 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.11 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.11 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.11 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.11 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.11 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.11 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.11 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.11 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.11 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.11 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.11 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.11 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.11 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.11 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.11 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.11 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.11 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.11 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.11 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.11 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.11 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.11 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.11 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.11 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.11 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.11 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.11 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.11 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.11 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.11 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.11 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.11 1150.28/293.11 Function symbols to be analyzed: {#eq}, {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.11 Previous analysis results are: 1150.28/293.11 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.11 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.11 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.11 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.11 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.11 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.11 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.11 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.11 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.11 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.11 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.11 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.11 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.11 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.11 #eq: runtime: ?, size: O(1) [2] 1150.28/293.11 1150.28/293.11 ---------------------------------------- 1150.28/293.11 1150.28/293.11 (121) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.11 1150.28/293.11 Computed RUNTIME bound using CoFloCo for: #eq 1150.28/293.11 after applying outer abstraction to obtain an ITS, 1150.28/293.11 resulting in: O(1) with polynomial bound: 0 1150.28/293.11 1150.28/293.11 ---------------------------------------- 1150.28/293.11 1150.28/293.11 (122) 1150.28/293.11 Obligation: 1150.28/293.11 Complexity RNTS consisting of the following rules: 1150.28/293.11 1150.28/293.11 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.11 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.11 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.11 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.11 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.11 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.11 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.11 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.11 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.11 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.11 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.11 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.11 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.11 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.11 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.11 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.12 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.12 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> #eq(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.12 #equal(z, z') -{ 1 }-> #eq(z, z') :|: z >= 0, z' >= 0 1150.28/293.12 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.12 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.12 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.12 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.12 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.12 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.12 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.12 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.12 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.12 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.12 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.12 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.12 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.12 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.12 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.12 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.12 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.12 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.12 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.12 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.12 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.12 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.12 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.12 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.12 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.12 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.12 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.12 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.12 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.12 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.12 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.12 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.12 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.12 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.12 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.12 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.12 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.12 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.12 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 compare#3(z, z', z'') -{ 2 }-> compare#4(#eq(z, 0), z, z', z'') :|: z' >= 0, z'' >= 0, z >= 0 1150.28/293.12 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.12 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.12 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.12 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.12 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.12 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.12 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.12 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.12 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.12 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.12 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.12 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.12 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.12 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.12 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.12 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.12 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.12 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 mult#2(z, z', z'') -{ 2 }-> mult#3(#eq(z'', 1 + (1 + 0)), z', z) :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.12 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.12 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.12 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.12 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.12 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.12 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.12 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.12 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.12 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.12 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.12 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.12 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.12 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.12 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.12 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 sub'#4(z, z') -{ 2 }-> 1 + sub'#5(#eq(@s, 1 + (1 + 0)), z', @zs) + @s :|: z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.12 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.12 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.12 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 sum#1(z) -{ 2 }-> sum#2(#eq(z, 0), z) :|: z >= 0 1150.28/293.12 sum#2(z, z') -{ 2 }-> sum#3(#eq(z', 1 + (1 + 0)), z') :|: z = 1, z' >= 0 1150.28/293.12 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.12 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.12 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.12 sum#3(z, z') -{ 2 }-> sum#4(#eq(z', 1 + (1 + (1 + 0)))) :|: z = 1, z' >= 0 1150.28/293.12 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.12 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.12 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.12 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.12 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.12 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.12 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.12 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.12 1150.28/293.12 Function symbols to be analyzed: {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.12 Previous analysis results are: 1150.28/293.12 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.12 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.12 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.12 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.12 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.12 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.12 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.12 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.12 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.12 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.12 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.12 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.12 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.12 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.12 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.12 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.12 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.12 1150.28/293.12 ---------------------------------------- 1150.28/293.12 1150.28/293.12 (123) ResultPropagationProof (UPPER BOUND(ID)) 1150.28/293.12 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.28/293.12 ---------------------------------------- 1150.28/293.12 1150.28/293.12 (124) 1150.28/293.12 Obligation: 1150.28/293.12 Complexity RNTS consisting of the following rules: 1150.28/293.12 1150.28/293.12 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.12 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.12 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.12 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.12 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.12 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.12 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.12 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.12 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.12 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.12 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.12 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.12 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.12 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.12 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.12 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.12 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.12 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.12 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.12 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.12 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.12 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.12 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.12 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.12 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.12 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.12 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.12 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.12 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.12 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.12 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.12 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.12 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.12 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.12 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.12 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.12 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.12 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.12 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.12 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.12 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.12 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.12 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.12 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.12 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.12 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.12 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.12 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.12 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.12 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.12 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.12 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.12 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.12 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.12 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.12 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.12 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.12 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.12 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.12 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.12 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.12 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.12 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.12 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.12 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.12 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.12 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.12 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.12 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.12 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.12 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.12 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.12 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.12 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.12 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.12 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.12 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.12 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.12 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.12 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.12 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.12 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.12 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.12 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.12 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.12 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.12 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.12 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.12 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.12 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.12 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.12 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.12 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.12 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.12 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.12 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.12 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.12 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.12 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.12 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.12 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.12 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.12 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.12 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.12 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.12 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.12 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.12 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.12 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.12 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.12 1150.28/293.12 Function symbols to be analyzed: {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.12 Previous analysis results are: 1150.28/293.12 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.12 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.12 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.12 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.12 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.12 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.12 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.12 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.12 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.12 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.12 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.12 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.12 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.12 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.12 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.12 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.12 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.12 1150.28/293.12 ---------------------------------------- 1150.28/293.12 1150.28/293.12 (125) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.12 1150.28/293.12 Computed SIZE bound using CoFloCo for: #less 1150.28/293.12 after applying outer abstraction to obtain an ITS, 1150.28/293.12 resulting in: O(1) with polynomial bound: 2 1150.28/293.12 1150.28/293.12 ---------------------------------------- 1150.28/293.12 1150.28/293.12 (126) 1150.28/293.12 Obligation: 1150.28/293.12 Complexity RNTS consisting of the following rules: 1150.28/293.12 1150.28/293.12 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.12 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.12 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.12 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.12 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.12 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.12 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.12 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.12 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.12 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.12 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.12 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.12 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.12 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.12 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.12 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.12 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.12 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.12 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.12 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.12 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.12 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.12 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.12 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.12 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.12 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.12 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.12 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.12 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.12 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.12 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.12 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.12 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.12 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.12 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.12 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.12 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.12 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.12 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.12 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.12 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.12 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.12 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.12 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.12 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.13 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.13 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.13 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.13 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.13 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.13 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.13 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.13 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.13 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.13 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.13 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.13 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.13 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.13 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.13 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.13 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.13 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.13 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.13 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.13 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.13 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.13 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.13 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.13 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.13 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.13 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.13 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.13 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.13 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.13 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.13 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.13 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 1150.28/293.13 Function symbols to be analyzed: {#less}, {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.13 Previous analysis results are: 1150.28/293.13 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.13 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.13 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.13 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.13 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.13 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.13 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.13 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.13 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.13 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.13 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.13 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.13 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.13 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 #less: runtime: ?, size: O(1) [2] 1150.28/293.13 1150.28/293.13 ---------------------------------------- 1150.28/293.13 1150.28/293.13 (127) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.13 1150.28/293.13 Computed RUNTIME bound using CoFloCo for: #less 1150.28/293.13 after applying outer abstraction to obtain an ITS, 1150.28/293.13 resulting in: O(1) with polynomial bound: 1 1150.28/293.13 1150.28/293.13 ---------------------------------------- 1150.28/293.13 1150.28/293.13 (128) 1150.28/293.13 Obligation: 1150.28/293.13 Complexity RNTS consisting of the following rules: 1150.28/293.13 1150.28/293.13 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.13 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.13 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.13 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.13 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.13 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.13 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.13 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.13 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.13 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.13 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.13 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.13 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.13 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.13 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.13 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.13 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.13 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.13 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.13 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.13 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.13 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.13 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.13 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.13 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.13 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.13 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.13 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.13 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.13 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.13 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.13 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.13 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.13 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.13 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.13 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.13 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.13 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.13 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.13 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.13 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.13 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.13 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.13 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.13 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 1150.28/293.13 Function symbols to be analyzed: {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.13 Previous analysis results are: 1150.28/293.13 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.13 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.13 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.13 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.13 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.13 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.13 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.13 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.13 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.13 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.13 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.13 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.13 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.13 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 #less: runtime: O(1) [1], size: O(1) [2] 1150.28/293.13 1150.28/293.13 ---------------------------------------- 1150.28/293.13 1150.28/293.13 (129) ResultPropagationProof (UPPER BOUND(ID)) 1150.28/293.13 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.28/293.13 ---------------------------------------- 1150.28/293.13 1150.28/293.13 (130) 1150.28/293.13 Obligation: 1150.28/293.13 Complexity RNTS consisting of the following rules: 1150.28/293.13 1150.28/293.13 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.13 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.13 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.13 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.13 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.13 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.13 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.13 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.13 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.13 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.13 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.13 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.13 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.13 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.13 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.13 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.13 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.13 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.13 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.13 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.13 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.13 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.13 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.13 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.13 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.13 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.13 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.13 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.13 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.13 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.13 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.13 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.13 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.13 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.13 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.13 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.13 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.13 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.13 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.13 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.13 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.13 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.13 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.13 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.13 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 1150.28/293.13 Function symbols to be analyzed: {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.13 Previous analysis results are: 1150.28/293.13 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.13 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.13 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.13 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.13 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.13 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.13 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.13 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.13 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.13 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.13 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.13 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.13 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.13 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 #less: runtime: O(1) [1], size: O(1) [2] 1150.28/293.13 1150.28/293.13 ---------------------------------------- 1150.28/293.13 1150.28/293.13 (131) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.13 1150.28/293.13 Computed SIZE bound using CoFloCo for: #sub 1150.28/293.13 after applying outer abstraction to obtain an ITS, 1150.28/293.13 resulting in: O(n^1) with polynomial bound: 2*z + z' 1150.28/293.13 1150.28/293.13 ---------------------------------------- 1150.28/293.13 1150.28/293.13 (132) 1150.28/293.13 Obligation: 1150.28/293.13 Complexity RNTS consisting of the following rules: 1150.28/293.13 1150.28/293.13 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.13 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.13 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.13 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.13 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.13 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.13 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.13 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.13 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.13 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.13 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.13 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.13 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.13 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.13 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.13 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.13 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.13 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.13 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.13 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.13 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.13 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.13 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.13 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.13 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.13 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.13 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.13 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.13 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.13 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.13 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.13 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.13 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.13 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.13 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.13 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.13 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.13 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.13 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.13 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.13 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.13 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.13 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.13 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.13 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 1150.28/293.13 Function symbols to be analyzed: {#sub}, {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.13 Previous analysis results are: 1150.28/293.13 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.13 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.13 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.13 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.13 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.13 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.13 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.13 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.13 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.13 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.13 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.13 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.13 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.13 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 #less: runtime: O(1) [1], size: O(1) [2] 1150.28/293.13 #sub: runtime: ?, size: O(n^1) [2*z + z'] 1150.28/293.13 1150.28/293.13 ---------------------------------------- 1150.28/293.13 1150.28/293.13 (133) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.13 1150.28/293.13 Computed RUNTIME bound using CoFloCo for: #sub 1150.28/293.13 after applying outer abstraction to obtain an ITS, 1150.28/293.13 resulting in: O(1) with polynomial bound: 0 1150.28/293.13 1150.28/293.13 ---------------------------------------- 1150.28/293.13 1150.28/293.13 (134) 1150.28/293.13 Obligation: 1150.28/293.13 Complexity RNTS consisting of the following rules: 1150.28/293.13 1150.28/293.13 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.13 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.13 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.13 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.13 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.13 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.13 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.13 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.13 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.13 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.13 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.13 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.13 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.13 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.13 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.13 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.13 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.13 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.13 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.13 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.13 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.13 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.13 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.13 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.13 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.13 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.13 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.13 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.13 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(#sub(z, z'), z''), 0)) :|: s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.13 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.13 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.13 minus(z, z') -{ 1 }-> #sub(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.13 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.13 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.13 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.13 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.13 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.13 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.13 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.13 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.13 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.13 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.13 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.13 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.13 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.13 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.13 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.13 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.13 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.13 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.13 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.13 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.13 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.13 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.13 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.13 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.13 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.13 1150.28/293.13 Function symbols to be analyzed: {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.13 Previous analysis results are: 1150.28/293.13 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.13 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.13 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.13 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.13 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.13 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.13 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.13 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.13 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.13 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.13 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.13 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.13 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.13 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.13 #less: runtime: O(1) [1], size: O(1) [2] 1150.28/293.13 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.13 1150.28/293.13 ---------------------------------------- 1150.28/293.13 1150.28/293.13 (135) ResultPropagationProof (UPPER BOUND(ID)) 1150.28/293.13 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.28/293.13 ---------------------------------------- 1150.28/293.13 1150.28/293.13 (136) 1150.28/293.13 Obligation: 1150.28/293.13 Complexity RNTS consisting of the following rules: 1150.28/293.13 1150.28/293.13 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.13 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.13 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.13 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.13 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.13 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.13 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.13 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.13 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.13 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.13 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.13 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.13 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.13 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.13 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.13 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.13 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.13 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.13 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.14 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.14 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.14 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.14 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.14 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.14 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.14 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.14 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.14 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.14 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.14 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.14 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.14 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.14 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.14 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.14 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.14 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.14 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.14 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.14 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.14 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.14 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.14 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.14 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.14 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.14 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.14 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.14 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.14 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.14 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.14 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.14 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.14 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.14 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.14 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.14 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.14 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.14 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.14 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.14 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.14 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.14 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.14 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.14 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.14 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.14 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.14 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.14 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.14 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.14 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.14 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.14 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.14 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.14 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.14 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.14 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.14 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.14 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.14 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.14 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.14 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.14 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.14 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.14 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.14 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.14 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.14 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.14 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.14 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.14 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.14 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.14 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.14 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.14 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.14 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.14 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.14 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.14 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.14 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.14 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.14 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.14 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.14 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.14 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.14 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.14 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.14 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.14 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.14 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.14 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.14 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.14 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.14 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.14 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.14 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.14 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.14 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.14 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.14 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.14 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.14 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.14 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.14 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.14 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.14 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.14 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.14 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.14 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.14 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.14 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.14 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.14 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.14 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.14 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.14 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.14 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.14 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.14 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.14 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.14 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.14 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.14 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.14 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.14 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.14 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.14 1150.28/293.14 Function symbols to be analyzed: {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.14 Previous analysis results are: 1150.28/293.14 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.14 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.14 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.14 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.14 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.14 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.14 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.14 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.14 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.14 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.14 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.14 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.14 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.14 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.14 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.14 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.14 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.14 #less: runtime: O(1) [1], size: O(1) [2] 1150.28/293.14 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.14 1150.28/293.14 ---------------------------------------- 1150.28/293.14 1150.28/293.14 (137) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.14 1150.28/293.14 Computed SIZE bound using KoAT for: #natmult 1150.28/293.14 after applying outer abstraction to obtain an ITS, 1150.28/293.14 resulting in: O(n^2) with polynomial bound: 4 + 4*z + 4*z*z' + 4*z' 1150.28/293.14 1150.28/293.14 ---------------------------------------- 1150.28/293.14 1150.28/293.14 (138) 1150.28/293.14 Obligation: 1150.28/293.14 Complexity RNTS consisting of the following rules: 1150.28/293.14 1150.28/293.14 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.14 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.14 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.14 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.14 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.14 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.14 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.14 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.14 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.14 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.14 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.14 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.14 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.14 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.14 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.14 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.14 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.14 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.14 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.14 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.14 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.14 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.14 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.14 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.14 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.14 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.14 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.14 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.14 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.14 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.14 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.14 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.14 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.14 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.14 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.14 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.14 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.14 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.14 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.14 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.14 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.14 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.14 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.14 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.14 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.14 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.14 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.14 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.14 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.14 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.14 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.14 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.14 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.14 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.14 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.14 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.14 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.14 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.14 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.14 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.14 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.14 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.14 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.14 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.14 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.14 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.14 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.14 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.14 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.14 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.14 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.14 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.14 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.14 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.14 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.14 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.14 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.14 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.14 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.14 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.14 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.14 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.14 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.14 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.14 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.14 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.14 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.14 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.14 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.14 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.14 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.14 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.14 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.14 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.14 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.14 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.15 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.15 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.15 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.15 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.15 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.15 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.15 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.15 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.15 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.15 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.15 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.15 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.15 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.15 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.15 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.15 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.15 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.15 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.15 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.15 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.15 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.15 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.15 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.15 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.15 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.15 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.15 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.15 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.15 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.15 1150.28/293.15 Function symbols to be analyzed: {#natmult}, {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.15 Previous analysis results are: 1150.28/293.15 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.15 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.15 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.15 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.15 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.15 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.15 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.15 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.15 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.15 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.15 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.15 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.15 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.15 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 #less: runtime: O(1) [1], size: O(1) [2] 1150.28/293.15 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.15 #natmult: runtime: ?, size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.28/293.15 1150.28/293.15 ---------------------------------------- 1150.28/293.15 1150.28/293.15 (139) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.15 1150.28/293.15 Computed RUNTIME bound using CoFloCo for: #natmult 1150.28/293.15 after applying outer abstraction to obtain an ITS, 1150.28/293.15 resulting in: O(1) with polynomial bound: 0 1150.28/293.15 1150.28/293.15 ---------------------------------------- 1150.28/293.15 1150.28/293.15 (140) 1150.28/293.15 Obligation: 1150.28/293.15 Complexity RNTS consisting of the following rules: 1150.28/293.15 1150.28/293.15 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.15 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.15 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.15 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.15 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.15 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.15 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 1 + #natmult(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> #add(1 + z', #add(1 + z', #natmult(z - 2, z'))) :|: z - 2 >= 0, z' >= 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.15 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.15 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.15 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.15 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.15 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.15 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.15 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.15 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.15 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.15 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.15 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.15 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.15 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.15 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.15 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.15 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.15 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.15 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.15 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.15 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.15 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.15 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.15 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.15 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.15 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.15 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.15 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.15 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.15 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.15 1150.28/293.15 Function symbols to be analyzed: {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.15 Previous analysis results are: 1150.28/293.15 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.15 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.15 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.15 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.15 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.15 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.15 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.15 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.15 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.15 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.15 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.15 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.15 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.15 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 #less: runtime: O(1) [1], size: O(1) [2] 1150.28/293.15 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.15 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.28/293.15 1150.28/293.15 ---------------------------------------- 1150.28/293.15 1150.28/293.15 (141) ResultPropagationProof (UPPER BOUND(ID)) 1150.28/293.15 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.28/293.15 ---------------------------------------- 1150.28/293.15 1150.28/293.15 (142) 1150.28/293.15 Obligation: 1150.28/293.15 Complexity RNTS consisting of the following rules: 1150.28/293.15 1150.28/293.15 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.15 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.15 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.15 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.15 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.15 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.15 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.15 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.15 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.15 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.15 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.15 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.15 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.15 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.15 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.15 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.15 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.15 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.15 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.15 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.15 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.15 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.15 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.15 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.15 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.15 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.15 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.15 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.15 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.15 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.15 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.15 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.15 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.15 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.15 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.15 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.15 1150.28/293.15 Function symbols to be analyzed: {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.15 Previous analysis results are: 1150.28/293.15 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.15 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.15 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.15 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.15 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.15 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.15 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.15 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.15 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.15 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.15 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.15 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.15 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.15 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 #less: runtime: O(1) [1], size: O(1) [2] 1150.28/293.15 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.15 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.28/293.15 1150.28/293.15 ---------------------------------------- 1150.28/293.15 1150.28/293.15 (143) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.15 1150.28/293.15 Computed SIZE bound using CoFloCo for: plus 1150.28/293.15 after applying outer abstraction to obtain an ITS, 1150.28/293.15 resulting in: O(n^1) with polynomial bound: 2*z + z' 1150.28/293.15 1150.28/293.15 ---------------------------------------- 1150.28/293.15 1150.28/293.15 (144) 1150.28/293.15 Obligation: 1150.28/293.15 Complexity RNTS consisting of the following rules: 1150.28/293.15 1150.28/293.15 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.15 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.15 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.15 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.15 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.15 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.15 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.15 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.15 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.15 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.15 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.15 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.15 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.15 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.15 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.15 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.15 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.15 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.15 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.15 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.15 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.15 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.15 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.15 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.15 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.15 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.15 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.15 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.15 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.15 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.15 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.15 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.15 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.15 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.15 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.15 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.28/293.15 1150.28/293.15 Function symbols to be analyzed: {plus}, {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.28/293.15 Previous analysis results are: 1150.28/293.15 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.28/293.15 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.15 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.28/293.15 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.28/293.15 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.28/293.15 #and: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.28/293.15 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 #compare: runtime: O(1) [0], size: O(1) [3] 1150.28/293.15 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.28/293.15 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.28/293.15 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.28/293.15 #greater: runtime: O(1) [1], size: O(1) [2] 1150.28/293.15 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.15 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.28/293.15 #eq: runtime: O(1) [0], size: O(1) [2] 1150.28/293.15 #less: runtime: O(1) [1], size: O(1) [2] 1150.28/293.15 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.28/293.15 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.28/293.15 plus: runtime: ?, size: O(n^1) [2*z + z'] 1150.28/293.15 1150.28/293.15 ---------------------------------------- 1150.28/293.15 1150.28/293.15 (145) IntTrsBoundProof (UPPER BOUND(ID)) 1150.28/293.15 1150.28/293.15 Computed RUNTIME bound using CoFloCo for: plus 1150.28/293.15 after applying outer abstraction to obtain an ITS, 1150.28/293.15 resulting in: O(1) with polynomial bound: 1 1150.28/293.15 1150.28/293.15 ---------------------------------------- 1150.28/293.15 1150.28/293.15 (146) 1150.28/293.15 Obligation: 1150.28/293.15 Complexity RNTS consisting of the following rules: 1150.28/293.15 1150.28/293.15 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.28/293.15 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.28/293.15 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.28/293.15 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.28/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.28/293.15 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.28/293.15 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.28/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.28/293.15 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.28/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.28/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.28/293.15 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.28/293.15 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.15 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.28/293.15 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.28/293.15 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.28/293.15 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.28/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.15 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.15 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.15 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.15 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.28/293.15 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.28/293.15 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.28/293.15 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.28/293.15 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.28/293.15 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.15 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.28/293.15 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 2 }-> add'#3(sum#1(plus(plus(z'', @y), z')), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.15 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.28/293.15 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.28/293.15 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.28/293.15 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.28/293.15 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 diff(z, z', z'') -{ 3 }-> 1 + mod(plus(s31, z''), 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.28/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.28/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.28/293.15 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.28/293.15 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.15 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.28/293.15 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.28/293.15 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.28/293.15 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.28/293.15 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.28/293.15 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.15 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.28/293.15 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.28/293.15 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 2 }-> sub'#3(1 + mod(plus(plus(z'', @y), z'), 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.28/293.15 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.28/293.15 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.28/293.15 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.28/293.15 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.28/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.28/293.15 sum(z, z', z'') -{ 2 }-> sum#1(plus(s21, z'')) :|: s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.28/293.15 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.28/293.15 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.28/293.15 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.28/293.15 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.28/293.15 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.28/293.15 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.28/293.15 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.28/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.28/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.28/293.15 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.28/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.28/293.15 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.28/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.15 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.15 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.58/293.15 1150.58/293.15 Function symbols to be analyzed: {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.58/293.15 Previous analysis results are: 1150.58/293.15 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.15 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.58/293.15 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.15 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.58/293.15 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.58/293.15 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.58/293.15 #and: runtime: O(1) [0], size: O(1) [2] 1150.58/293.15 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.58/293.15 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.15 #compare: runtime: O(1) [0], size: O(1) [3] 1150.58/293.15 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.58/293.15 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.58/293.15 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.15 #greater: runtime: O(1) [1], size: O(1) [2] 1150.58/293.15 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.15 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.58/293.15 #eq: runtime: O(1) [0], size: O(1) [2] 1150.58/293.15 #less: runtime: O(1) [1], size: O(1) [2] 1150.58/293.15 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.15 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.58/293.15 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.58/293.15 1150.58/293.15 ---------------------------------------- 1150.58/293.15 1150.58/293.15 (147) ResultPropagationProof (UPPER BOUND(ID)) 1150.58/293.15 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.58/293.15 ---------------------------------------- 1150.58/293.15 1150.58/293.15 (148) 1150.58/293.15 Obligation: 1150.58/293.15 Complexity RNTS consisting of the following rules: 1150.58/293.15 1150.58/293.15 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.58/293.15 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.15 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.58/293.15 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.15 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.58/293.15 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.58/293.15 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.58/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.58/293.15 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.58/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.58/293.15 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.58/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.58/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.58/293.15 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.15 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.58/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.58/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.58/293.15 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.15 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.58/293.15 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.58/293.15 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.15 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.58/293.15 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.58/293.15 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.58/293.15 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.58/293.15 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.58/293.15 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.15 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.15 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.58/293.15 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.15 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.15 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.58/293.15 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.58/293.15 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.58/293.15 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.58/293.15 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.58/293.15 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.58/293.15 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.58/293.15 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.58/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.58/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.58/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.58/293.15 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.58/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.58/293.15 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.58/293.15 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.15 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.15 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.58/293.15 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.58/293.15 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.58/293.15 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.58/293.15 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.58/293.15 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.58/293.15 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.58/293.15 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.58/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.58/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.58/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.58/293.15 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.58/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.58/293.15 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.58/293.15 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.58/293.15 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.58/293.15 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.58/293.15 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.15 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.58/293.15 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.58/293.15 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.58/293.15 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.58/293.15 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.58/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.58/293.15 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.58/293.15 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.58/293.15 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.15 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.58/293.15 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.58/293.15 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.58/293.15 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.58/293.15 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.58/293.15 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.58/293.15 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.15 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.58/293.15 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.58/293.15 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.58/293.15 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.58/293.15 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.58/293.15 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.58/293.15 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.58/293.15 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.15 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.15 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.58/293.15 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.15 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.15 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.15 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.58/293.15 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.58/293.15 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.58/293.15 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.15 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.58/293.15 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.15 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.15 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.15 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.15 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.15 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.15 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.58/293.15 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.15 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.58/293.15 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.58/293.15 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.58/293.15 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.58/293.15 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.15 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.15 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.58/293.15 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.15 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.15 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.15 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.58/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.58/293.15 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.15 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.15 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.15 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.58/293.15 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.15 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.58/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.58/293.15 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.15 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.15 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.15 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.58/293.15 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.58/293.15 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.58/293.15 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.58/293.15 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.15 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.15 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.15 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.58/293.15 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.58/293.15 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.58/293.15 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.15 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.15 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.58/293.15 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.58/293.15 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.58/293.15 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.58/293.15 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.58/293.15 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.58/293.15 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.58/293.15 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.15 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.15 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.58/293.15 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.15 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.15 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.58/293.15 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.15 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.58/293.15 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.58/293.15 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.58/293.15 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.15 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.58/293.15 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.58/293.15 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.58/293.15 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.15 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.58/293.15 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.58/293.15 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.58/293.15 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.58/293.15 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.58/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.58/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.58/293.15 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.58/293.15 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.58/293.15 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.58/293.15 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.15 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.58/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.15 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.15 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.15 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.15 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.15 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.15 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.15 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.58/293.15 1150.58/293.15 Function symbols to be analyzed: {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.58/293.15 Previous analysis results are: 1150.58/293.15 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.15 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.58/293.15 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.15 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.58/293.15 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.58/293.15 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.58/293.15 #and: runtime: O(1) [0], size: O(1) [2] 1150.58/293.15 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.58/293.15 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.15 #compare: runtime: O(1) [0], size: O(1) [3] 1150.58/293.15 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.58/293.15 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.58/293.15 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.15 #greater: runtime: O(1) [1], size: O(1) [2] 1150.58/293.15 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.15 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.58/293.15 #eq: runtime: O(1) [0], size: O(1) [2] 1150.58/293.15 #less: runtime: O(1) [1], size: O(1) [2] 1150.58/293.15 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.15 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.58/293.15 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.58/293.15 1150.58/293.15 ---------------------------------------- 1150.58/293.15 1150.58/293.15 (149) IntTrsBoundProof (UPPER BOUND(ID)) 1150.58/293.15 1150.58/293.15 Computed SIZE bound using CoFloCo for: #div 1150.58/293.15 after applying outer abstraction to obtain an ITS, 1150.58/293.15 resulting in: O(n^1) with polynomial bound: 1 + z 1150.58/293.15 1150.58/293.15 ---------------------------------------- 1150.58/293.15 1150.58/293.15 (150) 1150.58/293.15 Obligation: 1150.58/293.15 Complexity RNTS consisting of the following rules: 1150.58/293.15 1150.58/293.15 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.58/293.15 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.15 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.58/293.15 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.15 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.58/293.15 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.15 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.58/293.15 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.58/293.15 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.58/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.58/293.15 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.58/293.15 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.58/293.15 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.58/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.58/293.15 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.58/293.15 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.15 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.58/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.58/293.15 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.58/293.15 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.15 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.15 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.58/293.15 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.58/293.15 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.15 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.15 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.58/293.16 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.16 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.58/293.16 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.58/293.16 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.58/293.16 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.58/293.16 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.16 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.58/293.16 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.16 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.16 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.16 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.58/293.16 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.16 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.16 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.58/293.16 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.58/293.16 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.58/293.16 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.58/293.16 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.58/293.16 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.58/293.16 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.58/293.16 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.58/293.16 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.58/293.16 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.58/293.16 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.58/293.16 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.58/293.16 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.58/293.16 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.58/293.16 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.16 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.16 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.58/293.16 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.58/293.16 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.58/293.16 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.58/293.16 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.58/293.16 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.58/293.16 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.58/293.16 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.58/293.16 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.58/293.16 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.58/293.16 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.58/293.16 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.58/293.16 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.58/293.16 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.58/293.16 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.58/293.16 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.16 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.58/293.16 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.58/293.16 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.58/293.16 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.16 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.58/293.16 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.16 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.16 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.58/293.16 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.58/293.16 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.16 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.58/293.16 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.58/293.16 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.58/293.16 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.58/293.16 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.16 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.16 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.58/293.16 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.16 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.58/293.16 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.16 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.58/293.16 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.58/293.16 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.58/293.16 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.58/293.16 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.58/293.16 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.16 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.58/293.16 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.16 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.58/293.16 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.58/293.16 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.58/293.16 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.58/293.16 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.58/293.16 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.58/293.16 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.58/293.16 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.16 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.16 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.58/293.16 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.16 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.16 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.16 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.58/293.17 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.58/293.17 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.58/293.17 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.17 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.58/293.17 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.17 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.17 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.17 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.17 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.17 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.17 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.17 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.17 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.58/293.17 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.17 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.58/293.17 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.58/293.17 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.58/293.17 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.58/293.17 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.17 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.17 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.58/293.17 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.17 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.17 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.17 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.58/293.17 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.58/293.17 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.17 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.17 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.17 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.58/293.17 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.17 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.58/293.17 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.58/293.17 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.17 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.17 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.17 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.58/293.17 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.58/293.17 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.58/293.17 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.58/293.17 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.17 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.17 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.17 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.58/293.17 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.17 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.58/293.17 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.58/293.17 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.17 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.17 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.58/293.17 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.58/293.17 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.58/293.17 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.58/293.17 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.58/293.17 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.58/293.17 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.58/293.17 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.17 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.17 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.58/293.17 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.17 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.17 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.58/293.17 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.17 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.17 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.58/293.17 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.17 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.58/293.17 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.58/293.17 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.17 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.58/293.17 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.58/293.17 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.58/293.17 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.17 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.17 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.58/293.17 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.58/293.17 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.58/293.17 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.17 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.58/293.17 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.58/293.17 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.58/293.17 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.58/293.17 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.58/293.17 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.58/293.17 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.17 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.58/293.17 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.17 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.58/293.17 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.17 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.17 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.17 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.17 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.17 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.17 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.17 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.17 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.17 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.17 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.17 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.17 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.58/293.17 1150.58/293.17 Function symbols to be analyzed: {#div}, {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.58/293.17 Previous analysis results are: 1150.58/293.17 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.17 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.58/293.17 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.17 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.58/293.17 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.58/293.17 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.58/293.17 #and: runtime: O(1) [0], size: O(1) [2] 1150.58/293.17 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.58/293.17 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.17 #compare: runtime: O(1) [0], size: O(1) [3] 1150.58/293.17 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.58/293.17 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.58/293.17 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.17 #greater: runtime: O(1) [1], size: O(1) [2] 1150.58/293.17 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.17 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.58/293.17 #eq: runtime: O(1) [0], size: O(1) [2] 1150.58/293.17 #less: runtime: O(1) [1], size: O(1) [2] 1150.58/293.17 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.17 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.58/293.17 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.58/293.17 #div: runtime: ?, size: O(n^1) [1 + z] 1150.58/293.17 1150.58/293.17 ---------------------------------------- 1150.58/293.17 1150.58/293.17 (151) IntTrsBoundProof (UPPER BOUND(ID)) 1150.58/293.17 1150.58/293.17 Computed RUNTIME bound using CoFloCo for: #div 1150.58/293.17 after applying outer abstraction to obtain an ITS, 1150.58/293.17 resulting in: O(1) with polynomial bound: 0 1150.58/293.17 1150.58/293.17 ---------------------------------------- 1150.58/293.17 1150.58/293.17 (152) 1150.58/293.17 Obligation: 1150.58/293.17 Complexity RNTS consisting of the following rules: 1150.58/293.17 1150.58/293.17 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.58/293.17 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.17 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.58/293.17 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.58/293.17 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.58/293.17 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.58/293.17 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.58/293.17 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.17 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.58/293.17 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.58/293.17 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.58/293.17 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.58/293.17 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.17 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.17 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.58/293.17 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.17 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.58/293.17 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.58/293.17 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.58/293.17 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.58/293.17 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.58/293.17 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.17 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.58/293.17 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.58/293.17 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.58/293.17 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.58/293.17 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.58/293.17 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.58/293.17 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.58/293.17 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.58/293.17 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.58/293.17 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.58/293.17 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.58/293.17 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.58/293.17 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.58/293.17 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.58/293.17 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.58/293.17 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.58/293.17 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.17 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.58/293.17 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.58/293.17 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.58/293.17 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.17 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.58/293.17 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.58/293.17 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.58/293.17 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.17 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.58/293.17 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.58/293.17 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.58/293.17 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.58/293.17 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.17 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.58/293.17 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.58/293.17 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.17 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.17 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.17 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.17 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.58/293.17 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.58/293.17 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.17 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.17 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.58/293.17 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.17 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.58/293.17 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.58/293.17 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.58/293.17 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.58/293.17 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.17 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.58/293.17 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.17 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.17 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.17 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.58/293.17 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.17 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.17 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.58/293.17 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.58/293.17 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.58/293.17 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.58/293.17 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.58/293.17 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.58/293.17 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.58/293.17 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.58/293.17 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.18 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.58/293.18 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.58/293.18 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.58/293.18 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.58/293.18 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.58/293.18 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.58/293.18 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.58/293.18 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.58/293.18 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.58/293.18 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.58/293.18 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.58/293.18 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.58/293.18 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.58/293.18 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.58/293.18 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.58/293.18 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.58/293.18 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.58/293.18 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.58/293.18 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.18 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.18 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.58/293.18 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.58/293.18 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.58/293.18 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.18 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.58/293.18 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.18 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.18 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.18 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.18 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.58/293.18 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.58/293.18 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.58/293.18 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.58/293.18 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.18 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.18 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.58/293.18 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.58/293.18 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.58/293.18 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.58/293.18 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.58/293.18 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 div(z, z') -{ 1 }-> #div(z, z') :|: z >= 0, z' >= 0 1150.58/293.18 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.58/293.18 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.58/293.18 mod(z, z') -{ 2 }-> minus(z, times(z, #div(z, z'))) :|: z >= 0, z' >= 0 1150.58/293.18 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.18 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.18 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.18 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.58/293.18 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.58/293.18 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.58/293.18 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.58/293.18 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.58/293.18 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.58/293.18 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.58/293.18 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.58/293.18 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.58/293.18 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.58/293.18 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.18 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.18 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.58/293.18 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.58/293.18 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.58/293.18 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.58/293.18 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.58/293.18 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.58/293.18 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.18 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.58/293.18 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.58/293.18 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.58/293.18 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.58/293.18 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.58/293.18 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.58/293.18 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.58/293.18 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.58/293.18 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.58/293.18 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.58/293.18 1150.58/293.18 Function symbols to be analyzed: {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.58/293.18 Previous analysis results are: 1150.58/293.18 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.58/293.18 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.18 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.58/293.18 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.58/293.18 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.58/293.18 #and: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.58/293.18 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 #compare: runtime: O(1) [0], size: O(1) [3] 1150.58/293.18 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.58/293.18 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.58/293.18 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.18 #greater: runtime: O(1) [1], size: O(1) [2] 1150.58/293.18 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.18 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.58/293.18 #eq: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 #less: runtime: O(1) [1], size: O(1) [2] 1150.58/293.18 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.18 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.58/293.18 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.58/293.18 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.58/293.18 1150.58/293.18 ---------------------------------------- 1150.58/293.18 1150.58/293.18 (153) ResultPropagationProof (UPPER BOUND(ID)) 1150.58/293.18 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.58/293.18 ---------------------------------------- 1150.58/293.18 1150.58/293.18 (154) 1150.58/293.18 Obligation: 1150.58/293.18 Complexity RNTS consisting of the following rules: 1150.58/293.18 1150.58/293.18 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.58/293.18 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.58/293.18 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.58/293.18 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.58/293.18 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.58/293.18 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.58/293.18 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.58/293.18 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.58/293.18 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.58/293.18 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.58/293.18 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.58/293.18 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.58/293.18 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.58/293.18 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.58/293.18 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.18 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.58/293.18 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.58/293.18 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.18 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.58/293.18 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.18 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.58/293.18 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.18 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.18 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.58/293.18 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.58/293.18 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.58/293.18 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.58/293.18 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.58/293.18 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.58/293.18 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.18 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.58/293.18 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.58/293.18 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.58/293.18 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.58/293.18 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.58/293.18 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.58/293.18 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.58/293.18 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.58/293.18 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.58/293.18 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.58/293.18 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.58/293.18 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.58/293.18 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.58/293.18 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.58/293.18 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.58/293.18 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.58/293.18 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.58/293.18 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.58/293.18 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.18 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.18 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.58/293.18 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.58/293.18 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.58/293.18 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.18 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.58/293.18 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.18 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.18 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.18 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.18 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.58/293.18 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.58/293.18 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.58/293.18 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.58/293.18 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.18 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.18 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.58/293.18 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.58/293.18 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.58/293.18 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.58/293.18 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.58/293.18 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.58/293.18 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.58/293.18 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.58/293.18 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.58/293.18 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.18 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.18 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.18 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.58/293.18 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.58/293.18 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.58/293.18 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.58/293.18 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.58/293.18 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.58/293.18 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.58/293.18 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.58/293.18 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.58/293.18 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.58/293.18 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.18 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.18 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.58/293.18 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.58/293.18 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.58/293.18 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.58/293.18 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.58/293.18 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.58/293.18 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.18 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.58/293.18 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.58/293.18 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.58/293.18 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.58/293.18 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.58/293.18 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.58/293.18 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.58/293.18 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.58/293.18 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.58/293.18 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.58/293.18 1150.58/293.18 Function symbols to be analyzed: {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.58/293.18 Previous analysis results are: 1150.58/293.18 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.58/293.18 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.18 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.58/293.18 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.58/293.18 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.58/293.18 #and: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.58/293.18 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 #compare: runtime: O(1) [0], size: O(1) [3] 1150.58/293.18 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.58/293.18 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.58/293.18 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.18 #greater: runtime: O(1) [1], size: O(1) [2] 1150.58/293.18 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.18 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.58/293.18 #eq: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 #less: runtime: O(1) [1], size: O(1) [2] 1150.58/293.18 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.18 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.58/293.18 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.58/293.18 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.58/293.18 1150.58/293.18 ---------------------------------------- 1150.58/293.18 1150.58/293.18 (155) IntTrsBoundProof (UPPER BOUND(ID)) 1150.58/293.18 1150.58/293.18 Computed SIZE bound using CoFloCo for: sum#3 1150.58/293.18 after applying outer abstraction to obtain an ITS, 1150.58/293.18 resulting in: O(1) with polynomial bound: 7 1150.58/293.18 1150.58/293.18 ---------------------------------------- 1150.58/293.18 1150.58/293.18 (156) 1150.58/293.18 Obligation: 1150.58/293.18 Complexity RNTS consisting of the following rules: 1150.58/293.18 1150.58/293.18 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.58/293.18 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.58/293.18 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.58/293.18 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.58/293.18 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.58/293.18 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.58/293.18 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.58/293.18 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.58/293.18 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.58/293.18 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.58/293.18 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.58/293.18 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.58/293.18 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.58/293.18 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.58/293.18 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.18 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.18 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.58/293.18 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.58/293.18 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.18 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.58/293.18 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.18 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.58/293.18 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.58/293.18 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.18 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.18 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.58/293.18 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.58/293.18 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.58/293.18 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.58/293.18 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.58/293.18 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.58/293.18 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.58/293.18 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.58/293.18 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.58/293.18 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.58/293.18 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.58/293.18 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.58/293.18 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.58/293.18 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.58/293.18 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.58/293.18 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.58/293.18 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.58/293.18 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.58/293.18 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.58/293.18 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.58/293.18 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.58/293.18 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.58/293.18 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.58/293.18 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.58/293.18 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.58/293.18 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.58/293.18 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.58/293.18 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.58/293.18 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.58/293.18 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.58/293.18 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.58/293.18 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.18 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.18 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.58/293.18 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.58/293.18 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.58/293.18 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.18 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.58/293.18 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.18 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.18 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.18 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.18 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.58/293.18 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.58/293.18 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.58/293.18 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.58/293.18 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.18 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.18 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.58/293.18 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.58/293.18 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.58/293.18 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.58/293.18 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.58/293.18 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.58/293.18 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.58/293.18 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.58/293.18 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.58/293.18 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.58/293.18 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.18 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.58/293.18 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.58/293.18 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.58/293.18 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.58/293.18 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.58/293.18 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.58/293.18 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.58/293.18 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.58/293.18 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.58/293.18 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.58/293.18 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.58/293.18 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.58/293.18 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.58/293.18 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.58/293.18 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.58/293.18 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.58/293.18 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.58/293.18 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.58/293.18 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.58/293.18 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.58/293.18 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.58/293.18 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.58/293.18 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.58/293.18 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.58/293.18 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.58/293.18 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.58/293.18 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.58/293.18 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.58/293.18 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.58/293.18 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.58/293.18 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.58/293.18 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.58/293.18 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.58/293.18 1150.58/293.18 Function symbols to be analyzed: {sum#3}, {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.58/293.18 Previous analysis results are: 1150.58/293.18 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.58/293.18 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.18 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.58/293.18 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.58/293.18 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.58/293.18 #and: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.58/293.18 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 #compare: runtime: O(1) [0], size: O(1) [3] 1150.58/293.18 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.58/293.18 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.58/293.18 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.58/293.18 #greater: runtime: O(1) [1], size: O(1) [2] 1150.58/293.18 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.18 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.58/293.18 #eq: runtime: O(1) [0], size: O(1) [2] 1150.58/293.18 #less: runtime: O(1) [1], size: O(1) [2] 1150.58/293.18 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.58/293.18 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.58/293.18 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.58/293.18 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.58/293.18 sum#3: runtime: ?, size: O(1) [7] 1150.58/293.18 1150.58/293.18 ---------------------------------------- 1150.58/293.18 1150.58/293.18 (157) IntTrsBoundProof (UPPER BOUND(ID)) 1150.58/293.18 1150.58/293.18 Computed RUNTIME bound using CoFloCo for: sum#3 1150.58/293.18 after applying outer abstraction to obtain an ITS, 1150.58/293.18 resulting in: O(1) with polynomial bound: 5 1150.58/293.18 1150.58/293.18 ---------------------------------------- 1150.58/293.18 1150.58/293.18 (158) 1150.58/293.18 Obligation: 1150.58/293.18 Complexity RNTS consisting of the following rules: 1150.58/293.18 1150.58/293.18 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.58/293.18 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.58/293.18 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.58/293.18 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.58/293.18 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.58/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.58/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.18 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.18 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.18 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.18 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.18 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.18 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.18 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.18 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.18 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.18 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.18 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.18 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.18 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.18 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.18 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.18 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.18 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.18 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.18 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.18 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.18 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.18 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.18 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.18 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.18 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.18 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.18 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.18 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.18 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.18 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.18 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.18 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.18 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.18 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.18 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.18 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.18 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.18 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.18 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.18 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.18 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.18 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.18 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.18 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.18 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.18 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.18 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.18 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.18 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.18 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.18 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.18 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.18 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.18 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.18 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.18 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.18 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.18 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.18 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.18 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.18 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.18 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.18 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.18 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.18 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.18 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.18 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.18 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.18 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.18 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.18 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.18 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.18 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.18 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.18 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.18 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.18 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.18 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.18 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.18 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.18 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.18 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.18 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.18 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.18 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.18 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.18 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.18 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.18 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.18 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.18 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.18 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.18 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.18 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.18 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.18 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.18 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.18 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.18 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.18 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.18 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.18 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.18 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.18 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.18 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.18 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.18 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.18 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.18 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.18 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.18 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.18 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.18 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.18 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.18 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.18 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.18 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.18 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.18 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.18 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.18 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.18 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.18 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.18 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.18 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.18 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.18 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.18 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.18 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.18 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.18 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.18 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.18 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.18 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.18 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.18 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.18 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.18 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.18 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.18 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.18 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.18 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.18 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.18 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.18 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.18 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.18 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.18 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.18 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.18 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.18 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.18 sum#2(z, z') -{ 2 }-> sum#3(s40, z') :|: s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.18 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.18 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.18 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.18 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.18 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.18 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.18 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.18 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.18 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.18 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.18 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.18 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.18 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.18 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.18 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.18 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.18 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.18 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.18 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.18 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.18 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.18 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.18 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.18 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.18 1150.69/293.18 Function symbols to be analyzed: {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.18 Previous analysis results are: 1150.69/293.18 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.18 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.18 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.18 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.18 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.18 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.18 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.18 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.18 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.18 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.18 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.18 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.18 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.18 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.18 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.18 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.18 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.18 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.18 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.18 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.18 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.18 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.18 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.18 1150.69/293.18 ---------------------------------------- 1150.69/293.18 1150.69/293.18 (159) ResultPropagationProof (UPPER BOUND(ID)) 1150.69/293.18 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.69/293.18 ---------------------------------------- 1150.69/293.18 1150.69/293.18 (160) 1150.69/293.18 Obligation: 1150.69/293.18 Complexity RNTS consisting of the following rules: 1150.69/293.18 1150.69/293.18 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.18 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.18 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.18 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.18 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.18 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.18 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.18 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.18 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.18 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.18 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.18 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.18 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.18 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.18 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.18 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.18 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.18 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.18 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.18 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.18 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.18 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.18 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.18 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.18 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.18 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.18 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.18 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.18 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.18 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.18 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.18 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.18 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.18 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.18 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.18 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.18 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.18 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.18 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.19 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.19 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.19 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.19 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.19 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.19 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.19 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.19 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.19 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.19 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.19 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.19 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.19 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.19 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.19 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.19 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.19 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.19 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.19 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.19 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.19 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.19 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.19 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.19 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.19 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.19 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.19 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.19 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.19 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.19 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.19 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.19 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.19 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.19 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.19 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.19 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.19 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.19 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.19 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.19 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.19 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.19 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.19 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.19 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.19 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.19 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.19 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.19 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.19 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.19 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.19 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.19 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.19 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.19 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.19 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.19 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.19 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.19 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.19 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.19 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.19 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.19 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.19 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.19 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.19 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.19 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.19 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.19 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.19 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.19 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.19 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.19 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.19 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.19 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.19 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.19 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.19 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.19 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.19 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.19 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.19 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.19 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.19 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.19 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.19 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.19 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.19 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.19 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.19 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.19 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.19 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.19 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.19 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.19 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.19 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.19 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.19 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.19 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.19 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.19 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.19 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.19 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.19 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.19 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.19 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.19 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.19 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.19 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.19 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.19 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.19 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.19 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.19 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.19 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.19 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.19 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.19 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.19 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.19 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.19 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.19 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.19 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.19 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.19 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.19 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.19 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.19 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.19 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.19 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.19 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.19 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.19 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.19 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.19 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.19 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.19 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.19 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.19 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.19 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.19 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.19 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.19 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.19 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.19 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.19 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.19 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.19 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.19 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.19 1150.69/293.19 Function symbols to be analyzed: {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.19 Previous analysis results are: 1150.69/293.19 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.19 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.19 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.19 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.19 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.19 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.19 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.19 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.19 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.19 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.19 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.19 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.19 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.19 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.19 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.19 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.19 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.19 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.19 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.19 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.19 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.19 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.19 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.19 1150.69/293.19 ---------------------------------------- 1150.69/293.19 1150.69/293.19 (161) IntTrsBoundProof (UPPER BOUND(ID)) 1150.69/293.19 1150.69/293.19 Computed SIZE bound using CoFloCo for: sub'#4 1150.69/293.19 after applying outer abstraction to obtain an ITS, 1150.69/293.19 resulting in: O(n^1) with polynomial bound: 1 + z + z' 1150.69/293.19 1150.69/293.19 ---------------------------------------- 1150.69/293.19 1150.69/293.19 (162) 1150.69/293.19 Obligation: 1150.69/293.19 Complexity RNTS consisting of the following rules: 1150.69/293.19 1150.69/293.19 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.19 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.19 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.19 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.19 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.19 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.19 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.19 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.19 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.19 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.19 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.19 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.19 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.19 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.19 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.19 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.19 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.19 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.19 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.19 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.19 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.19 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.19 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.19 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.19 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.19 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.19 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.19 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.19 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.19 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.19 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.19 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.19 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.19 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.19 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.19 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.19 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.19 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.19 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.19 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.19 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.19 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.19 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.19 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.19 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.19 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.19 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.19 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.19 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.19 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.19 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.19 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.19 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.19 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.19 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.19 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.19 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.19 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.19 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.19 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.19 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.19 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.19 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.19 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.19 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.19 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.19 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.19 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.19 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.19 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.19 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.19 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.19 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.19 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.19 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.19 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.19 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.19 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.19 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.19 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.19 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.19 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.20 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.20 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.20 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.20 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.20 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.20 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.20 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.20 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.20 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.20 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.20 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.20 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.20 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.20 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.20 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.20 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.20 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.20 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.20 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.20 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.20 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.20 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.20 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.20 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.20 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.20 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.20 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.20 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.20 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.20 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.20 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.20 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.20 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.20 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.20 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.20 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.20 1150.69/293.20 Function symbols to be analyzed: {sub'#4}, {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.20 Previous analysis results are: 1150.69/293.20 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.20 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.20 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.20 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.20 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.20 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.20 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.20 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.20 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.20 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.20 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.20 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.20 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.20 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.20 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.20 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.20 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.20 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.20 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.20 sub'#4: runtime: ?, size: O(n^1) [1 + z + z'] 1150.69/293.20 1150.69/293.20 ---------------------------------------- 1150.69/293.20 1150.69/293.20 (163) IntTrsBoundProof (UPPER BOUND(ID)) 1150.69/293.20 1150.69/293.20 Computed RUNTIME bound using CoFloCo for: sub'#4 1150.69/293.20 after applying outer abstraction to obtain an ITS, 1150.69/293.20 resulting in: O(1) with polynomial bound: 4 1150.69/293.20 1150.69/293.20 ---------------------------------------- 1150.69/293.20 1150.69/293.20 (164) 1150.69/293.20 Obligation: 1150.69/293.20 Complexity RNTS consisting of the following rules: 1150.69/293.20 1150.69/293.20 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.20 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.20 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.20 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.20 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.20 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.20 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.20 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.20 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.20 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.20 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.20 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.20 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.20 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.20 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.20 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.20 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.20 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.20 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.20 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.20 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.20 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.20 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.20 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.20 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.20 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.20 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.20 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.20 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.20 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.20 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.20 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.20 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.20 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.20 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.20 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.20 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.20 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.20 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.20 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.20 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.20 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.20 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.20 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.20 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.20 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.20 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.20 1150.69/293.20 Function symbols to be analyzed: {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.20 Previous analysis results are: 1150.69/293.20 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.20 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.20 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.20 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.20 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.20 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.20 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.20 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.20 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.20 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.20 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.20 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.20 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.20 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.20 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.20 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.20 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.20 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.20 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.20 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.20 1150.69/293.20 ---------------------------------------- 1150.69/293.20 1150.69/293.20 (165) ResultPropagationProof (UPPER BOUND(ID)) 1150.69/293.20 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.69/293.20 ---------------------------------------- 1150.69/293.20 1150.69/293.20 (166) 1150.69/293.20 Obligation: 1150.69/293.20 Complexity RNTS consisting of the following rules: 1150.69/293.20 1150.69/293.20 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.20 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.20 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.20 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.20 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.20 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.20 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.20 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.20 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.20 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.20 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.20 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.20 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.20 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.20 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.20 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.20 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.20 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.20 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.20 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.20 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.20 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.20 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.20 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.20 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.20 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.20 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.20 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.20 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.20 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.20 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.20 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.20 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.20 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.20 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.20 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.20 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.20 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.20 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.20 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.20 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.20 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.20 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.20 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.20 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.20 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.20 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.20 1150.69/293.20 Function symbols to be analyzed: {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.20 Previous analysis results are: 1150.69/293.20 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.20 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.20 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.20 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.20 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.20 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.20 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.20 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.20 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.20 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.20 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.20 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.20 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.20 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.20 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.20 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.20 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.20 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.20 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.20 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.20 1150.69/293.20 ---------------------------------------- 1150.69/293.20 1150.69/293.20 (167) IntTrsBoundProof (UPPER BOUND(ID)) 1150.69/293.20 1150.69/293.20 Computed SIZE bound using CoFloCo for: #equal 1150.69/293.20 after applying outer abstraction to obtain an ITS, 1150.69/293.20 resulting in: O(1) with polynomial bound: 2 1150.69/293.20 1150.69/293.20 ---------------------------------------- 1150.69/293.20 1150.69/293.20 (168) 1150.69/293.20 Obligation: 1150.69/293.20 Complexity RNTS consisting of the following rules: 1150.69/293.20 1150.69/293.20 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.20 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.20 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.20 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.20 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.20 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.20 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.20 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.20 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.20 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.20 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.20 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.20 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.20 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.20 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.20 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.20 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.20 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.20 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.20 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.20 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.20 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.20 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.20 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.20 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.20 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.20 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.20 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.20 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.20 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.20 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.20 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.20 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.20 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.20 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.20 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.20 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.20 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.20 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.20 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.20 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.20 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.20 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.20 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.20 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.20 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.20 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.20 1150.69/293.20 Function symbols to be analyzed: {#equal}, {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.20 Previous analysis results are: 1150.69/293.20 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.20 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.20 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.20 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.20 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.20 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.20 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.20 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.20 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.20 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.20 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.20 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.20 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.20 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.20 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.20 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.20 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.20 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.20 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.20 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.20 #equal: runtime: ?, size: O(1) [2] 1150.69/293.20 1150.69/293.20 ---------------------------------------- 1150.69/293.20 1150.69/293.20 (169) IntTrsBoundProof (UPPER BOUND(ID)) 1150.69/293.20 1150.69/293.20 Computed RUNTIME bound using CoFloCo for: #equal 1150.69/293.20 after applying outer abstraction to obtain an ITS, 1150.69/293.20 resulting in: O(1) with polynomial bound: 1 1150.69/293.20 1150.69/293.20 ---------------------------------------- 1150.69/293.20 1150.69/293.20 (170) 1150.69/293.20 Obligation: 1150.69/293.20 Complexity RNTS consisting of the following rules: 1150.69/293.20 1150.69/293.20 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.20 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.20 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.20 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.20 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.20 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.20 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.20 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.20 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.20 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.20 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.20 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.20 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.20 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.20 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.20 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.20 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.20 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.20 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.20 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.20 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.20 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.20 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.20 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.20 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.20 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.20 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.20 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.20 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.20 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.20 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.20 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.20 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.20 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.20 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.20 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.20 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.20 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.20 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.20 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.20 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.20 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.20 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.20 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.20 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.20 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.20 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.20 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.20 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.20 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.20 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.20 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.20 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.20 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.20 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.20 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.20 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.20 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.20 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.20 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.20 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.20 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.20 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.20 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.20 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.20 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.20 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.20 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.20 1150.69/293.20 Function symbols to be analyzed: {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.20 Previous analysis results are: 1150.69/293.20 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.20 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.20 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.20 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.20 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.20 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.20 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.20 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.20 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.20 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.20 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.20 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.20 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.20 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.20 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.20 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.20 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.20 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.20 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.20 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.20 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.20 #equal: runtime: O(1) [1], size: O(1) [2] 1150.69/293.20 1150.69/293.20 ---------------------------------------- 1150.69/293.20 1150.69/293.20 (171) ResultPropagationProof (UPPER BOUND(ID)) 1150.69/293.20 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.69/293.20 ---------------------------------------- 1150.69/293.20 1150.69/293.20 (172) 1150.69/293.20 Obligation: 1150.69/293.20 Complexity RNTS consisting of the following rules: 1150.69/293.20 1150.69/293.20 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.20 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.20 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.20 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.20 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.21 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.21 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.21 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.21 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.21 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.21 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.21 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.21 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.21 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.21 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.21 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.21 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.21 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.21 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.21 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.21 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.21 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.21 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.21 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.21 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.21 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.21 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.21 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.21 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.21 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.21 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.21 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.21 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.21 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.21 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.21 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.21 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.21 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.21 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.21 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.21 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.21 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.21 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.21 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.21 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.21 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.21 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.21 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.21 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.21 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.21 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.21 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.21 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.21 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.21 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.21 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.21 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.21 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.21 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.21 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.21 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.21 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.21 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.21 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.21 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.21 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.21 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.21 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.21 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.21 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.21 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.21 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.21 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.21 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.21 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.21 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.21 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.21 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.21 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.21 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.21 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.21 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.21 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.21 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.21 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.21 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.21 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.21 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.21 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.21 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.21 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.21 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.21 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.21 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.21 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.21 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.21 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.21 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.21 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.21 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.21 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.21 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.21 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.21 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.21 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.21 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.21 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.21 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.21 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.21 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.21 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.21 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.21 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.21 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.21 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.21 1150.69/293.21 Function symbols to be analyzed: {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.21 Previous analysis results are: 1150.69/293.21 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.21 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.21 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.21 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.21 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.21 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.21 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.21 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.21 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.21 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.21 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.21 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.21 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.21 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.21 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.21 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.21 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.21 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.21 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.21 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.21 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.21 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.21 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.21 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.21 #equal: runtime: O(1) [1], size: O(1) [2] 1150.69/293.21 1150.69/293.21 ---------------------------------------- 1150.69/293.21 1150.69/293.21 (173) IntTrsBoundProof (UPPER BOUND(ID)) 1150.69/293.21 1150.69/293.21 Computed SIZE bound using CoFloCo for: minus 1150.69/293.21 after applying outer abstraction to obtain an ITS, 1150.69/293.21 resulting in: O(n^1) with polynomial bound: 2*z + z' 1150.69/293.21 1150.69/293.21 ---------------------------------------- 1150.69/293.21 1150.69/293.21 (174) 1150.69/293.21 Obligation: 1150.69/293.21 Complexity RNTS consisting of the following rules: 1150.69/293.21 1150.69/293.21 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.21 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.21 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.21 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.21 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.21 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.21 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.21 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.21 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.21 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.21 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.21 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.21 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.21 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.21 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.21 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.21 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.21 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.21 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.21 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.21 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.21 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.21 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.21 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.21 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.21 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.21 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.21 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.21 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.21 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.21 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.21 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.21 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.21 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.21 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.21 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.21 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.21 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.21 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.21 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.21 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.21 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.21 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.21 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.21 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.21 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.21 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.21 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.21 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.21 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.21 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.21 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.21 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.21 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.21 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.21 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.21 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.21 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.21 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.21 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.21 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.21 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.21 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.21 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.21 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.21 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.21 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.21 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.21 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.21 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.21 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.21 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.21 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.21 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.21 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.21 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.21 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.21 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.21 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.21 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.21 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.21 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.21 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.21 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.21 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.21 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.21 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.21 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.21 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.21 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.21 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.21 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.21 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.21 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.21 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.21 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.21 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.21 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.21 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.21 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.21 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.21 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.21 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.21 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.21 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.21 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.21 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.21 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.21 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.21 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.21 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.21 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.21 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.21 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.21 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.21 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.21 1150.69/293.21 Function symbols to be analyzed: {minus}, {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.21 Previous analysis results are: 1150.69/293.21 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.21 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.21 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.21 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.21 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.21 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.21 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.21 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.21 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.21 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.21 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.21 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.21 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.21 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.21 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.21 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.21 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.21 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.21 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.21 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.21 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.21 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.21 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.21 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.21 #equal: runtime: O(1) [1], size: O(1) [2] 1150.69/293.21 minus: runtime: ?, size: O(n^1) [2*z + z'] 1150.69/293.21 1150.69/293.21 ---------------------------------------- 1150.69/293.21 1150.69/293.21 (175) IntTrsBoundProof (UPPER BOUND(ID)) 1150.69/293.21 1150.69/293.21 Computed RUNTIME bound using CoFloCo for: minus 1150.69/293.21 after applying outer abstraction to obtain an ITS, 1150.69/293.21 resulting in: O(1) with polynomial bound: 1 1150.69/293.21 1150.69/293.21 ---------------------------------------- 1150.69/293.21 1150.69/293.21 (176) 1150.69/293.21 Obligation: 1150.69/293.21 Complexity RNTS consisting of the following rules: 1150.69/293.21 1150.69/293.21 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.21 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.21 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.21 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.21 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.21 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.21 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.21 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.21 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.21 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.21 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.21 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.21 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.21 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.21 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.21 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.21 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.21 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.21 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.21 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.21 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.21 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.21 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.21 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.21 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.21 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.21 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.21 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.21 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.21 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.21 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.21 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.21 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.21 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.21 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.21 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.22 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.22 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.22 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.22 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.22 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.22 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.22 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.22 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.22 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.22 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.22 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.22 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.22 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.22 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.22 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.22 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.22 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.22 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.22 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.22 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.22 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.22 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.22 compare#5(z, z', z'') -{ 1 }-> minus(0, 1 + (1 + 0)) :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.22 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.22 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.22 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 diff(z, z', z'') -{ 4 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + diff#1(#less(minus(s50, z''), 0)) :|: s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.22 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.22 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.22 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.22 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.22 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.22 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.22 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.22 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.22 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.22 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.22 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.22 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.22 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.22 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.22 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.22 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.22 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.22 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.22 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.22 sub'#2(z, z', z'', z1) -{ 4 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + diff#1(#less(minus(minus(z'', @y), z'), 0)), z1, @ys) :|: s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.22 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.22 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.22 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.22 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.22 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.22 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.22 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.22 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.22 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.22 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.22 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.22 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.22 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.22 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.22 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.22 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.22 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.22 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.22 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.22 1150.69/293.22 Function symbols to be analyzed: {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.22 Previous analysis results are: 1150.69/293.22 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.22 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.22 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.22 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.22 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.22 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.22 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.22 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.22 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.22 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.22 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.22 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.22 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.22 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.22 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.22 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.22 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.22 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.22 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.22 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.22 #equal: runtime: O(1) [1], size: O(1) [2] 1150.69/293.22 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.22 1150.69/293.22 ---------------------------------------- 1150.69/293.22 1150.69/293.22 (177) ResultPropagationProof (UPPER BOUND(ID)) 1150.69/293.22 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.69/293.22 ---------------------------------------- 1150.69/293.22 1150.69/293.22 (178) 1150.69/293.22 Obligation: 1150.69/293.22 Complexity RNTS consisting of the following rules: 1150.69/293.22 1150.69/293.22 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.22 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.22 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.22 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.22 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.22 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.22 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.22 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.22 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.22 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.22 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.22 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.22 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.22 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.22 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.22 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.22 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.22 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.22 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.22 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.22 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.22 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.22 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.22 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.22 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.22 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.22 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.22 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.22 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.22 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.22 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.22 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.22 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.22 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.22 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.22 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.22 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.22 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.22 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.22 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.22 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.22 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.22 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.22 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.22 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.22 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.22 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.22 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.22 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.69/293.22 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.22 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.22 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.22 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.22 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.22 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.22 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.22 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.22 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.22 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.22 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.22 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.22 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.22 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.22 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.22 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.22 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.22 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.22 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.22 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.22 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.22 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.22 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.22 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.22 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.22 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.22 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.22 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.22 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.22 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.22 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.22 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.22 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.22 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.22 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.22 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.22 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.22 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.22 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.22 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.22 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.22 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.22 1150.69/293.22 Function symbols to be analyzed: {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.22 Previous analysis results are: 1150.69/293.22 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.22 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.22 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.22 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.22 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.22 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.22 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.22 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.22 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.22 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.22 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.22 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.22 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.22 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.22 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.22 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.22 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.22 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.22 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.22 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.22 #equal: runtime: O(1) [1], size: O(1) [2] 1150.69/293.22 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.22 1150.69/293.22 ---------------------------------------- 1150.69/293.22 1150.69/293.22 (179) IntTrsBoundProof (UPPER BOUND(ID)) 1150.69/293.22 1150.69/293.22 Computed SIZE bound using KoAT for: #mult 1150.69/293.22 after applying outer abstraction to obtain an ITS, 1150.69/293.22 resulting in: O(n^2) with polynomial bound: 1 + 4*z*z' 1150.69/293.22 1150.69/293.22 ---------------------------------------- 1150.69/293.22 1150.69/293.22 (180) 1150.69/293.22 Obligation: 1150.69/293.22 Complexity RNTS consisting of the following rules: 1150.69/293.22 1150.69/293.22 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.22 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.22 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.22 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.22 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.22 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.22 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.22 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.22 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.22 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.22 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.22 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.22 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.22 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.22 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.22 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.22 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.22 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.22 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.22 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.22 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.22 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.22 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.22 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.22 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.22 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.22 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.22 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.22 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.22 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.22 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.22 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.22 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.22 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.22 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.22 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.22 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.22 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.22 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.22 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.22 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.22 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.22 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.22 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.22 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.22 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.22 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.22 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.22 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.69/293.22 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.22 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.22 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.22 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.22 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.22 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.22 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.22 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.22 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.22 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.22 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.22 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.22 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.22 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.22 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.22 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.22 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.22 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.22 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.22 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.22 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.22 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.22 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.22 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.22 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.22 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.22 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.22 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.22 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.22 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.22 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.22 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.22 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.22 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.22 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.22 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.22 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.22 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.22 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.22 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.22 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.22 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.22 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.22 1150.69/293.22 Function symbols to be analyzed: {#mult}, {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.22 Previous analysis results are: 1150.69/293.22 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.22 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.22 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.22 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.22 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.22 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.22 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.22 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.22 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.22 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.22 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.22 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.22 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.22 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.22 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.22 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.22 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.22 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.22 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.22 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.22 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.22 #equal: runtime: O(1) [1], size: O(1) [2] 1150.69/293.22 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.22 #mult: runtime: ?, size: O(n^2) [1 + 4*z*z'] 1150.69/293.22 1150.69/293.22 ---------------------------------------- 1150.69/293.22 1150.69/293.22 (181) IntTrsBoundProof (UPPER BOUND(ID)) 1150.69/293.22 1150.69/293.22 Computed RUNTIME bound using CoFloCo for: #mult 1150.69/293.22 after applying outer abstraction to obtain an ITS, 1150.69/293.22 resulting in: O(1) with polynomial bound: 0 1150.69/293.22 1150.69/293.22 ---------------------------------------- 1150.69/293.22 1150.69/293.22 (182) 1150.69/293.22 Obligation: 1150.69/293.22 Complexity RNTS consisting of the following rules: 1150.69/293.22 1150.69/293.22 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.22 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.22 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.22 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.22 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.22 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.22 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.22 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.22 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.22 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.22 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.22 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.22 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.22 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.22 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.22 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.22 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.22 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.22 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.22 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.22 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.22 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.22 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.22 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.22 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.22 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.22 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.22 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.22 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.22 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.22 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.22 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.22 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.22 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.22 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.22 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.22 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.22 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.22 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.22 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.22 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.22 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.22 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.22 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.22 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.22 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.22 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.22 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.22 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.22 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.22 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.22 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.22 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 3 }-> plus(#mult(@x, z'), bitToInt'(@xs, #mult(z', 1 + (1 + (1 + 0))))) :|: @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.22 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.22 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.22 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.22 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.22 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.22 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.22 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.22 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.22 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.22 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.22 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.23 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.23 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.23 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.69/293.23 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.23 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.23 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.23 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.23 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.23 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.23 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.23 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.23 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.23 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.23 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.23 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.23 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.23 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.23 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.23 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.23 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.23 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.23 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.23 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.23 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.23 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.23 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.23 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.23 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.23 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.23 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.23 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.23 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.23 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.23 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.23 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.23 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.23 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.23 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.23 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.23 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.23 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.23 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.23 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.23 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.23 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 times(z, z') -{ 1 }-> #mult(z, z') :|: z >= 0, z' >= 0 1150.69/293.23 1150.69/293.23 Function symbols to be analyzed: {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.23 Previous analysis results are: 1150.69/293.23 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.23 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.23 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.23 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.23 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.23 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.23 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.23 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.23 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.23 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.23 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.23 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.23 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.23 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.23 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.23 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.23 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.23 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.23 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.23 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.23 #equal: runtime: O(1) [1], size: O(1) [2] 1150.69/293.23 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.23 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.69/293.23 1150.69/293.23 ---------------------------------------- 1150.69/293.23 1150.69/293.23 (183) ResultPropagationProof (UPPER BOUND(ID)) 1150.69/293.23 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.69/293.23 ---------------------------------------- 1150.69/293.23 1150.69/293.23 (184) 1150.69/293.23 Obligation: 1150.69/293.23 Complexity RNTS consisting of the following rules: 1150.69/293.23 1150.69/293.23 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.23 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.23 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.23 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.23 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.23 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.23 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.23 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.23 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.23 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.23 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.23 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.23 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.23 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.23 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.23 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.23 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.23 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.23 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.23 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.23 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.23 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.23 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.23 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.23 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.23 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.23 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.23 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.23 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.23 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.23 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.23 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.23 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.23 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.23 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.23 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.23 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.23 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.23 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.23 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.23 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.23 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.23 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.23 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.23 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.23 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.23 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.23 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.23 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.23 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.23 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.23 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.23 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.23 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.23 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.23 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.23 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.23 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.23 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.23 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.23 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.23 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.23 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.23 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.23 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.23 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.23 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.23 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.23 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.23 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.23 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.23 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.23 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.23 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.23 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.23 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.23 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.23 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.23 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.23 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.23 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.23 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.23 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.69/293.23 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.23 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.23 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.23 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.23 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.23 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.23 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.23 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.23 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.23 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.23 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.23 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.23 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.23 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.23 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.23 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.23 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.23 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.23 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.23 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.23 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.23 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.23 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.23 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.23 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.23 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.23 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.23 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.23 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.23 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.23 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.23 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.23 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.23 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.23 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.23 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.23 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.23 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.23 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.23 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.23 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.23 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.69/293.23 1150.69/293.23 Function symbols to be analyzed: {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.23 Previous analysis results are: 1150.69/293.23 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.23 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.23 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.23 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.23 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.23 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.23 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.23 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.23 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.23 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.23 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.23 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.23 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.23 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.23 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.23 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.23 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.23 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.23 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.23 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.23 #equal: runtime: O(1) [1], size: O(1) [2] 1150.69/293.23 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.23 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.69/293.23 1150.69/293.23 ---------------------------------------- 1150.69/293.23 1150.69/293.23 (185) IntTrsBoundProof (UPPER BOUND(ID)) 1150.69/293.23 1150.69/293.23 Computed SIZE bound using CoFloCo for: div 1150.69/293.23 after applying outer abstraction to obtain an ITS, 1150.69/293.23 resulting in: O(n^1) with polynomial bound: 1 + z 1150.69/293.23 1150.69/293.23 ---------------------------------------- 1150.69/293.23 1150.69/293.23 (186) 1150.69/293.23 Obligation: 1150.69/293.23 Complexity RNTS consisting of the following rules: 1150.69/293.23 1150.69/293.23 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.23 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.23 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.23 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.69/293.23 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.69/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.69/293.23 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.23 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.69/293.23 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.69/293.23 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.69/293.23 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.69/293.23 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.23 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.69/293.23 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.69/293.23 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.69/293.23 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.69/293.23 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.23 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.23 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.23 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.23 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.23 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.69/293.23 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.23 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.69/293.23 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.69/293.23 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.23 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.23 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.23 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.23 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.23 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.23 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.23 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.23 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.23 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.69/293.23 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.69/293.23 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.69/293.23 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.69/293.23 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.69/293.23 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.69/293.23 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.69/293.23 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.69/293.23 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.69/293.23 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.69/293.23 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.69/293.23 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.69/293.23 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.69/293.23 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.69/293.23 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.69/293.23 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.69/293.23 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.69/293.23 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.69/293.23 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.69/293.23 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.23 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.23 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.23 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.23 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.23 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.69/293.23 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.69/293.23 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.69/293.23 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.69/293.23 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.69/293.23 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.69/293.23 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.23 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.69/293.23 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.23 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.23 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.23 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.23 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.23 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.23 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.23 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.69/293.23 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.69/293.23 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.23 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.69/293.23 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.23 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.23 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.23 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.23 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.69/293.23 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.69/293.23 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.69/293.23 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.69/293.23 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.23 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.23 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.69/293.23 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.69/293.23 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.23 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.23 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.69/293.23 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.69/293.23 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.69/293.23 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.69/293.23 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.23 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.69/293.23 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.69/293.23 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.23 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.69/293.23 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.69/293.23 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.69/293.23 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.69/293.23 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.23 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.69/293.23 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.69/293.23 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.23 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.69/293.23 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.69/293.23 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.69/293.23 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.69/293.23 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.69/293.23 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.69/293.23 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.69/293.23 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.69/293.23 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.69/293.23 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.69/293.23 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.69/293.23 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.69/293.23 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.69/293.23 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.69/293.23 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.69/293.23 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.69/293.23 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.69/293.23 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.69/293.23 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.69/293.23 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.69/293.23 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.69/293.23 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.69/293.23 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.23 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.23 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.69/293.23 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.69/293.23 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.69/293.23 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.69/293.23 1150.69/293.23 Function symbols to be analyzed: {div}, {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.69/293.23 Previous analysis results are: 1150.69/293.23 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.69/293.23 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.23 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.69/293.23 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.69/293.23 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.69/293.23 #and: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.69/293.23 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 #compare: runtime: O(1) [0], size: O(1) [3] 1150.69/293.23 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.69/293.23 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.69/293.23 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.69/293.23 #greater: runtime: O(1) [1], size: O(1) [2] 1150.69/293.23 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.23 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.23 #eq: runtime: O(1) [0], size: O(1) [2] 1150.69/293.23 #less: runtime: O(1) [1], size: O(1) [2] 1150.69/293.23 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.69/293.23 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.69/293.23 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.23 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.69/293.23 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.69/293.23 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.69/293.23 #equal: runtime: O(1) [1], size: O(1) [2] 1150.69/293.23 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.69/293.23 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.69/293.23 div: runtime: ?, size: O(n^1) [1 + z] 1150.69/293.23 1150.69/293.23 ---------------------------------------- 1150.69/293.23 1150.69/293.23 (187) IntTrsBoundProof (UPPER BOUND(ID)) 1150.69/293.23 1150.69/293.23 Computed RUNTIME bound using CoFloCo for: div 1150.69/293.23 after applying outer abstraction to obtain an ITS, 1150.69/293.23 resulting in: O(1) with polynomial bound: 1 1150.69/293.23 1150.69/293.23 ---------------------------------------- 1150.69/293.23 1150.69/293.23 (188) 1150.69/293.23 Obligation: 1150.69/293.23 Complexity RNTS consisting of the following rules: 1150.69/293.23 1150.69/293.23 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.69/293.23 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.69/293.23 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.69/293.23 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.85/293.23 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.85/293.23 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.85/293.23 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.85/293.23 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.85/293.23 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.85/293.23 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.85/293.23 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.85/293.23 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.85/293.23 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.85/293.23 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.85/293.23 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.85/293.23 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.85/293.23 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.85/293.23 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.85/293.23 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.85/293.23 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.85/293.23 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.85/293.23 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.85/293.23 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.85/293.23 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.85/293.23 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.85/293.23 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.85/293.23 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.85/293.23 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.85/293.23 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.85/293.23 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.85/293.23 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.85/293.23 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.85/293.23 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.85/293.23 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.85/293.23 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.85/293.23 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.85/293.23 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.85/293.23 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.85/293.23 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.85/293.23 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.85/293.23 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.85/293.23 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.85/293.23 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.85/293.23 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.85/293.23 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.85/293.23 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.85/293.23 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.85/293.23 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.85/293.23 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.85/293.23 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.85/293.23 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.85/293.23 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.85/293.23 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.85/293.23 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.85/293.23 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.85/293.23 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.85/293.23 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.85/293.23 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.85/293.23 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.85/293.23 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.85/293.23 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.85/293.23 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.85/293.23 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.85/293.23 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.85/293.23 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.85/293.23 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.85/293.23 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.85/293.23 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.85/293.23 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.85/293.23 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.85/293.23 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.85/293.23 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.85/293.23 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.85/293.23 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.85/293.23 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.85/293.23 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.85/293.23 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.85/293.23 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.85/293.23 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.85/293.23 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.85/293.23 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.85/293.23 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.85/293.23 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.85/293.23 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.85/293.23 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.85/293.23 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.85/293.23 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.85/293.23 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.85/293.23 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.85/293.23 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.85/293.23 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.85/293.23 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.85/293.23 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.85/293.23 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.85/293.23 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.85/293.23 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.85/293.23 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.85/293.23 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.85/293.23 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.85/293.23 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.85/293.23 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.85/293.23 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.85/293.23 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.85/293.23 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.85/293.23 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.85/293.23 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.85/293.23 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.85/293.23 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.85/293.23 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.85/293.23 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.85/293.23 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.85/293.23 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.85/293.23 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.85/293.23 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.85/293.23 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.85/293.23 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.85/293.23 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.85/293.23 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.85/293.23 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.85/293.23 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.85/293.23 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.85/293.23 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.85/293.23 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.85/293.23 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.85/293.23 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.85/293.23 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.85/293.23 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.85/293.23 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.85/293.23 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.85/293.23 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.85/293.23 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.85/293.23 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.85/293.23 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.85/293.23 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.85/293.23 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.85/293.23 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.85/293.23 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.85/293.23 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.85/293.23 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.85/293.23 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.85/293.23 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.85/293.23 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.85/293.23 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.85/293.23 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.85/293.23 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.85/293.23 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.85/293.23 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.85/293.23 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.85/293.23 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.85/293.23 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.85/293.23 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.85/293.23 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.85/293.23 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.85/293.23 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.85/293.23 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.85/293.23 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.85/293.23 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.85/293.23 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.85/293.23 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.85/293.23 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.85/293.23 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.85/293.23 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.85/293.23 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.85/293.23 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.85/293.23 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.85/293.23 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.85/293.23 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.85/293.23 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.85/293.23 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.85/293.23 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.85/293.23 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.85/293.23 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.85/293.23 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.85/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.85/293.23 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.85/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.85/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.85/293.23 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.85/293.23 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.85/293.23 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.85/293.23 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.85/293.23 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.85/293.23 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.85/293.23 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.85/293.23 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.85/293.23 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.85/293.23 1150.85/293.23 Function symbols to be analyzed: {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.85/293.23 Previous analysis results are: 1150.85/293.23 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.85/293.23 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.85/293.23 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.85/293.23 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.85/293.23 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.85/293.23 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.85/293.23 #and: runtime: O(1) [0], size: O(1) [2] 1150.85/293.23 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.85/293.23 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.85/293.23 #compare: runtime: O(1) [0], size: O(1) [3] 1150.85/293.23 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.85/293.23 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.85/293.23 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.85/293.23 #greater: runtime: O(1) [1], size: O(1) [2] 1150.85/293.23 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.85/293.23 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.85/293.23 #eq: runtime: O(1) [0], size: O(1) [2] 1150.85/293.23 #less: runtime: O(1) [1], size: O(1) [2] 1150.85/293.23 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.85/293.23 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.85/293.23 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.85/293.23 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.85/293.23 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.85/293.23 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.85/293.23 #equal: runtime: O(1) [1], size: O(1) [2] 1150.85/293.23 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.85/293.23 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.85/293.23 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.85/293.23 1150.85/293.23 ---------------------------------------- 1150.85/293.23 1150.85/293.23 (189) ResultPropagationProof (UPPER BOUND(ID)) 1150.85/293.23 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.85/293.23 ---------------------------------------- 1150.85/293.23 1150.85/293.23 (190) 1150.85/293.23 Obligation: 1150.85/293.23 Complexity RNTS consisting of the following rules: 1150.85/293.23 1150.85/293.23 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.85/293.23 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.85/293.23 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.85/293.23 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.85/293.23 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.85/293.23 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.85/293.23 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.85/293.23 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.85/293.23 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.85/293.23 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.85/293.23 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.85/293.23 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.85/293.23 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.85/293.23 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.85/293.23 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.85/293.23 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.85/293.23 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.85/293.23 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.85/293.23 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.85/293.23 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.85/293.23 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.85/293.23 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.85/293.23 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.85/293.23 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.85/293.23 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.85/293.23 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.85/293.23 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.85/293.23 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.85/293.23 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.25 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.25 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.25 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.25 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.25 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.25 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.25 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.25 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.25 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.25 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.25 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.25 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.25 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.25 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.25 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.25 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.25 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.25 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.25 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.25 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.25 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.25 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.25 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.25 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.25 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.25 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.25 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.25 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.25 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.25 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.25 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.25 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.25 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.25 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.25 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.25 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.25 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.25 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.25 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.25 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.25 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.25 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.25 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.25 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.25 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.25 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.25 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.25 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.25 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.25 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.25 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.25 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.25 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.25 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.25 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.25 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.25 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.25 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.25 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.25 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.25 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.25 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.25 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.25 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.25 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.25 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.25 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.25 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.25 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.25 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.25 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.25 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.25 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.25 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.25 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.25 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.25 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.25 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.25 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.25 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.25 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.25 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.25 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.25 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.25 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.25 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.25 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.25 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.25 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.25 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.25 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.25 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.25 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.25 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.25 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.25 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.25 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.25 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.25 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.25 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.25 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.25 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.25 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.25 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.25 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.25 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.25 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.25 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.25 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.25 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.25 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.25 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.25 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.25 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.25 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.25 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.25 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.25 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.25 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.25 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.25 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.25 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.25 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.25 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.25 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.25 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.25 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.25 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.25 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.25 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.25 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.25 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.25 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.25 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.25 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.25 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.25 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.25 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.93/293.25 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.25 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.25 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.25 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.25 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.25 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.25 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.25 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.25 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.25 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.25 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.25 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.25 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.25 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.25 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.25 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.25 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.25 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.25 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.25 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.25 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.25 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.25 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.25 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.25 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.25 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.25 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.25 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.25 1150.93/293.25 Function symbols to be analyzed: {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.25 Previous analysis results are: 1150.93/293.25 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.25 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.25 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.25 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.25 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.25 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.25 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.25 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.25 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.25 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.25 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.25 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.25 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.25 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.25 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.25 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.25 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.25 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.25 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.25 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.25 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.25 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.25 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.25 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.25 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.25 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.25 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.25 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.25 1150.93/293.25 ---------------------------------------- 1150.93/293.25 1150.93/293.25 (191) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.25 1150.93/293.25 Computed SIZE bound using CoFloCo for: sum#2 1150.93/293.25 after applying outer abstraction to obtain an ITS, 1150.93/293.25 resulting in: O(1) with polynomial bound: 7 1150.93/293.25 1150.93/293.25 ---------------------------------------- 1150.93/293.25 1150.93/293.25 (192) 1150.93/293.25 Obligation: 1150.93/293.25 Complexity RNTS consisting of the following rules: 1150.93/293.25 1150.93/293.25 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.25 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.25 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.25 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.25 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.25 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.25 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.25 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.25 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.25 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.25 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.25 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.25 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.25 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.25 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.25 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.25 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.25 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.25 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.25 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.25 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.25 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.25 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.25 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.25 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.25 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.25 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.25 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.25 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.25 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.25 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.25 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.25 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.25 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.25 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.25 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.25 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.25 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.25 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.25 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.25 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.25 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.25 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.25 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.25 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.25 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.25 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.25 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.25 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.25 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.25 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.25 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.25 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.25 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.25 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.25 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.25 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.25 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.25 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.26 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.26 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.26 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.26 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.26 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.93/293.26 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.26 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.26 1150.93/293.26 Function symbols to be analyzed: {sum#2}, {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.26 Previous analysis results are: 1150.93/293.26 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.26 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.26 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.26 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.26 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.26 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.26 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.26 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.26 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.26 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 sum#2: runtime: ?, size: O(1) [7] 1150.93/293.26 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (193) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.26 1150.93/293.26 Computed RUNTIME bound using CoFloCo for: sum#2 1150.93/293.26 after applying outer abstraction to obtain an ITS, 1150.93/293.26 resulting in: O(1) with polynomial bound: 7 1150.93/293.26 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (194) 1150.93/293.26 Obligation: 1150.93/293.26 Complexity RNTS consisting of the following rules: 1150.93/293.26 1150.93/293.26 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.26 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.26 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.26 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.26 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.26 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.26 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.26 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.26 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.26 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.26 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.26 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.26 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.26 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.26 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sum#1(z) -{ 2 }-> sum#2(s39, z) :|: s39 >= 0, s39 <= 2, z >= 0 1150.93/293.26 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.26 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.26 1150.93/293.26 Function symbols to be analyzed: {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.26 Previous analysis results are: 1150.93/293.26 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.26 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.26 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.26 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.26 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.26 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.26 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.26 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.26 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.26 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.26 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (195) ResultPropagationProof (UPPER BOUND(ID)) 1150.93/293.26 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (196) 1150.93/293.26 Obligation: 1150.93/293.26 Complexity RNTS consisting of the following rules: 1150.93/293.26 1150.93/293.26 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.26 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.26 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.26 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.26 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.26 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.26 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.26 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.26 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.26 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.26 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.26 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.26 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.26 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.26 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.26 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.26 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.26 1150.93/293.26 Function symbols to be analyzed: {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.26 Previous analysis results are: 1150.93/293.26 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.26 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.26 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.26 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.26 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.26 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.26 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.26 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.26 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.26 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.26 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (197) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.26 1150.93/293.26 Computed SIZE bound using CoFloCo for: compare#5 1150.93/293.26 after applying outer abstraction to obtain an ITS, 1150.93/293.26 resulting in: O(1) with polynomial bound: 3 1150.93/293.26 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (198) 1150.93/293.26 Obligation: 1150.93/293.26 Complexity RNTS consisting of the following rules: 1150.93/293.26 1150.93/293.26 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.26 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.26 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.26 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.26 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.26 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.26 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.26 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.26 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.26 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.26 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.26 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.26 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.26 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.26 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.26 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.26 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.26 1150.93/293.26 Function symbols to be analyzed: {compare#5}, {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.26 Previous analysis results are: 1150.93/293.26 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.26 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.26 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.26 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.26 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.26 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.26 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.26 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.26 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.26 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.26 compare#5: runtime: ?, size: O(1) [3] 1150.93/293.26 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (199) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.26 1150.93/293.26 Computed RUNTIME bound using CoFloCo for: compare#5 1150.93/293.26 after applying outer abstraction to obtain an ITS, 1150.93/293.26 resulting in: O(1) with polynomial bound: 4 1150.93/293.26 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (200) 1150.93/293.26 Obligation: 1150.93/293.26 Complexity RNTS consisting of the following rules: 1150.93/293.26 1150.93/293.26 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.26 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.26 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.26 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.26 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.26 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.26 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.26 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.26 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.26 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.26 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.26 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.26 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 2 }-> compare#5(s16, z'', z1) :|: s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.26 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.26 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.26 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.26 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.26 1150.93/293.26 Function symbols to be analyzed: {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.26 Previous analysis results are: 1150.93/293.26 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.26 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.26 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.26 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.26 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.26 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.26 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.26 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.26 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.26 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.26 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.26 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (201) ResultPropagationProof (UPPER BOUND(ID)) 1150.93/293.26 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (202) 1150.93/293.26 Obligation: 1150.93/293.26 Complexity RNTS consisting of the following rules: 1150.93/293.26 1150.93/293.26 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.26 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.26 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.26 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.26 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.26 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.26 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.26 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.26 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.26 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.26 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.26 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.26 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.26 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.26 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.26 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.26 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.26 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.26 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.26 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.26 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.26 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.26 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.26 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.26 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.26 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.26 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.26 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.26 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.26 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.26 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.26 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.26 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.26 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.26 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.26 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.26 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.26 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.26 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.26 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.26 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.26 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.26 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.26 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.26 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.26 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.26 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.26 1150.93/293.26 Function symbols to be analyzed: {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.26 Previous analysis results are: 1150.93/293.26 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.26 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.26 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.26 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.26 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.26 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.26 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.26 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.26 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.26 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.26 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.26 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.26 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.26 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.26 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.26 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.26 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.26 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.26 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.26 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (203) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.26 1150.93/293.26 Computed SIZE bound using KoAT for: times 1150.93/293.26 after applying outer abstraction to obtain an ITS, 1150.93/293.26 resulting in: O(n^2) with polynomial bound: 1 + 4*z*z' 1150.93/293.26 1150.93/293.26 ---------------------------------------- 1150.93/293.26 1150.93/293.26 (204) 1150.93/293.26 Obligation: 1150.93/293.26 Complexity RNTS consisting of the following rules: 1150.93/293.26 1150.93/293.26 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.26 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.26 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.26 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.26 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.27 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.27 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.27 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.27 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.27 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.27 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.27 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.27 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.27 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.27 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.27 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.27 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.27 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.27 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.27 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.27 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.27 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.27 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.27 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.27 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.27 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.27 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.27 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.27 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.27 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.27 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.27 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.27 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.27 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.27 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.27 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.27 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.27 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.27 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.27 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.27 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.27 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.27 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.27 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.27 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.27 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.27 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.27 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.27 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.27 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.27 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.27 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.27 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.27 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.27 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.27 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.27 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.27 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.27 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.27 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.27 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.27 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.27 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.27 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.27 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.27 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.27 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.27 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.27 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.27 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.27 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.27 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.27 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.27 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.27 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.27 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.27 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.27 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.27 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.27 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.27 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.27 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.27 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.27 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.27 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.27 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.27 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.27 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.27 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.27 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.27 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.27 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.27 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.27 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.27 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.27 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.27 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.27 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.27 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.27 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.27 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.27 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.27 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.27 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.27 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.27 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.27 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.27 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.27 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.27 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.27 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.27 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.27 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.27 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.27 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.27 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.27 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.27 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.27 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.27 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.27 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.27 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.27 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.27 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.27 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.27 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.27 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.27 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.27 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.27 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.27 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.27 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.27 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.27 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.27 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.27 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.27 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.28 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.28 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.28 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.28 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.28 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.28 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.28 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.28 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.28 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.28 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.28 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.28 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.28 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.28 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.28 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.28 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.28 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.28 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.28 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.28 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.28 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.28 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.28 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.28 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.28 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.28 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.28 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.28 1150.93/293.28 Function symbols to be analyzed: {times}, {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.28 Previous analysis results are: 1150.93/293.28 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.28 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.28 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.28 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.28 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.28 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.28 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.28 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.28 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.28 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.28 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.28 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.28 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.28 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.28 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.28 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.28 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.28 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.28 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.28 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.28 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.28 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.28 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.28 times: runtime: ?, size: O(n^2) [1 + 4*z*z'] 1150.93/293.28 1150.93/293.28 ---------------------------------------- 1150.93/293.28 1150.93/293.28 (205) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.28 1150.93/293.28 Computed RUNTIME bound using CoFloCo for: times 1150.93/293.28 after applying outer abstraction to obtain an ITS, 1150.93/293.28 resulting in: O(1) with polynomial bound: 1 1150.93/293.28 1150.93/293.28 ---------------------------------------- 1150.93/293.28 1150.93/293.28 (206) 1150.93/293.28 Obligation: 1150.93/293.28 Complexity RNTS consisting of the following rules: 1150.93/293.28 1150.93/293.28 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.28 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.28 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.28 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.28 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.28 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.28 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.28 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.28 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.28 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.28 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.28 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.28 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.28 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.28 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.28 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.28 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.28 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.28 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.28 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.28 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.28 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.28 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.28 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.28 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.28 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.28 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.28 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.28 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.28 mod(z, z') -{ 2 }-> minus(z, times(z, s62)) :|: s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.28 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.28 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.28 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.28 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.28 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.28 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.28 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.28 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.28 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.28 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.28 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.28 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.28 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.28 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.28 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.28 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.28 1150.93/293.28 Function symbols to be analyzed: {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.28 Previous analysis results are: 1150.93/293.28 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.28 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.28 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.28 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.28 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.28 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.28 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.28 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.28 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.28 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.28 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.28 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.28 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.28 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.28 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.28 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.28 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.28 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.28 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.28 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.28 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.28 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.28 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.28 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.28 1150.93/293.28 ---------------------------------------- 1150.93/293.28 1150.93/293.28 (207) ResultPropagationProof (UPPER BOUND(ID)) 1150.93/293.28 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.93/293.28 ---------------------------------------- 1150.93/293.28 1150.93/293.28 (208) 1150.93/293.28 Obligation: 1150.93/293.28 Complexity RNTS consisting of the following rules: 1150.93/293.28 1150.93/293.28 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.28 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.28 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.28 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.28 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.28 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.28 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.28 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.28 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.28 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.28 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.28 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.28 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.28 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.28 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.28 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.28 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.28 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.28 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.28 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.28 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.28 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.28 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.28 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.28 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.28 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.28 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.28 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.28 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.28 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.28 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.28 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.28 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.28 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.28 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.28 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.28 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.28 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.28 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.28 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.28 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.28 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.28 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.28 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.28 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.28 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.28 1150.93/293.28 Function symbols to be analyzed: {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.28 Previous analysis results are: 1150.93/293.28 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.28 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.28 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.28 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.28 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.28 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.28 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.28 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.28 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.28 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.28 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.28 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.28 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.28 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.28 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.28 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.28 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.28 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.28 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.28 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.28 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.28 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.28 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.28 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.28 1150.93/293.28 ---------------------------------------- 1150.93/293.28 1150.93/293.28 (209) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.28 1150.93/293.28 Computed SIZE bound using CoFloCo for: bitToInt' 1150.93/293.28 after applying outer abstraction to obtain an ITS, 1150.93/293.28 resulting in: INF with polynomial bound: ? 1150.93/293.28 1150.93/293.28 Computed SIZE bound using CoFloCo for: bitToInt'#1 1150.93/293.28 after applying outer abstraction to obtain an ITS, 1150.93/293.28 resulting in: INF with polynomial bound: ? 1150.93/293.28 1150.93/293.28 ---------------------------------------- 1150.93/293.28 1150.93/293.28 (210) 1150.93/293.28 Obligation: 1150.93/293.28 Complexity RNTS consisting of the following rules: 1150.93/293.28 1150.93/293.28 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.28 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.28 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.28 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.28 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.28 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.28 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.28 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.28 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.28 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.28 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.28 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.28 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.28 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.28 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.28 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.28 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.28 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.28 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.28 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.28 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.28 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.28 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.28 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.28 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.28 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.28 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.28 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.28 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.28 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.28 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.28 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.28 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.28 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.28 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.28 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.28 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.28 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.28 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.28 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.28 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.28 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.28 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.28 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.28 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.28 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.28 1150.93/293.28 Function symbols to be analyzed: {bitToInt',bitToInt'#1}, {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.28 Previous analysis results are: 1150.93/293.28 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.28 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.28 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.28 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.28 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.28 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.28 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.28 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.28 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.28 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.28 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.28 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.28 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.28 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.28 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.28 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.28 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.28 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.28 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.28 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.28 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.28 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.28 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.28 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.28 bitToInt': runtime: ?, size: INF 1150.93/293.28 bitToInt'#1: runtime: ?, size: INF 1150.93/293.28 1150.93/293.28 ---------------------------------------- 1150.93/293.28 1150.93/293.28 (211) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.28 1150.93/293.28 Computed RUNTIME bound using KoAT for: bitToInt' 1150.93/293.28 after applying outer abstraction to obtain an ITS, 1150.93/293.28 resulting in: O(n^1) with polynomial bound: 8 + 10*z 1150.93/293.28 1150.93/293.28 Computed RUNTIME bound using CoFloCo for: bitToInt'#1 1150.93/293.28 after applying outer abstraction to obtain an ITS, 1150.93/293.28 resulting in: O(n^1) with polynomial bound: 2 + 10*z 1150.93/293.28 1150.93/293.28 ---------------------------------------- 1150.93/293.28 1150.93/293.28 (212) 1150.93/293.28 Obligation: 1150.93/293.28 Complexity RNTS consisting of the following rules: 1150.93/293.28 1150.93/293.28 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.28 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.28 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.28 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.28 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.28 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.28 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.28 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.28 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.28 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.28 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.28 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.28 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.28 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.28 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.28 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.28 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.28 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.28 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.28 bitToInt(z) -{ 1 }-> bitToInt'(z, 0) :|: z >= 0 1150.93/293.28 bitToInt(z) -{ 2 }-> bitToInt'(z, 1 + (1 + 0)) :|: z >= 0 1150.93/293.28 bitToInt'(z, z') -{ 1 }-> bitToInt'#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 3 }-> plus(s73, bitToInt'(@xs, s74)) :|: s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.28 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.28 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.28 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.28 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.28 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.28 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.28 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.28 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.28 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.28 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.28 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.28 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.28 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.28 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.28 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.28 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.28 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.28 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.28 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.28 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.28 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.28 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.28 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.28 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.28 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.28 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.28 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.28 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.28 1150.93/293.28 Function symbols to be analyzed: {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.28 Previous analysis results are: 1150.93/293.28 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.28 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.28 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.28 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.28 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.28 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.28 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.28 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.28 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.28 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.28 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.28 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.28 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.28 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.28 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.28 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.28 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.28 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.28 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.28 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.28 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.28 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.28 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.28 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.28 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.28 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.28 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1150.93/293.28 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1150.93/293.28 1150.93/293.28 ---------------------------------------- 1150.93/293.28 1150.93/293.28 (213) ResultPropagationProof (UPPER BOUND(ID)) 1150.93/293.28 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.93/293.28 ---------------------------------------- 1150.93/293.28 1150.93/293.28 (214) 1150.93/293.28 Obligation: 1150.93/293.28 Complexity RNTS consisting of the following rules: 1150.93/293.28 1150.93/293.28 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.28 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.28 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.28 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.28 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.28 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.28 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.28 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.28 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.28 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.28 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.28 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.28 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.28 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.28 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.28 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.28 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.28 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.28 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.28 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.28 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.28 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.28 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.28 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.28 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.28 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.28 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.28 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.28 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.28 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.28 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.28 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.28 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1150.93/293.28 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1150.93/293.28 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.28 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.28 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.28 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.28 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.28 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.28 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.28 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.29 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.29 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.29 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.29 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.29 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.29 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.29 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.29 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.29 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.29 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.29 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.29 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.29 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.29 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.29 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.29 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.29 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.29 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.29 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.29 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.29 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.29 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.29 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.29 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.29 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.29 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.29 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.29 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.29 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.29 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.29 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.29 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.29 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.29 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.29 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.29 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.29 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.29 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.29 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.29 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.29 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.29 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.29 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.29 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.29 1150.93/293.29 Function symbols to be analyzed: {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.29 Previous analysis results are: 1150.93/293.29 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.29 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.29 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.29 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.29 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.29 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.29 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.29 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.29 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.29 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.29 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.29 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.29 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.29 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.29 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.29 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.29 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.29 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.29 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.29 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.29 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.29 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.29 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.29 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.29 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.29 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.29 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.29 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.29 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.29 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.29 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.29 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1150.93/293.29 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1150.93/293.29 1150.93/293.29 ---------------------------------------- 1150.93/293.29 1150.93/293.29 (215) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.29 1150.93/293.29 Computed SIZE bound using CoFloCo for: sum#1 1150.93/293.29 after applying outer abstraction to obtain an ITS, 1150.93/293.29 resulting in: O(1) with polynomial bound: 7 1150.93/293.29 1150.93/293.29 ---------------------------------------- 1150.93/293.29 1150.93/293.29 (216) 1150.93/293.29 Obligation: 1150.93/293.29 Complexity RNTS consisting of the following rules: 1150.93/293.29 1150.93/293.29 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.29 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.29 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.29 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.29 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.29 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.29 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.29 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.29 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.29 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.29 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.29 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.29 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.29 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.29 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.29 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.29 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.29 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.29 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.29 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.29 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.29 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.29 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.29 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.29 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.29 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.29 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.29 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.29 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.29 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.29 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.29 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.29 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.29 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.29 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.29 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.29 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.29 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.29 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.29 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.29 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.29 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.29 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.29 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.29 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.29 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.29 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.29 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.29 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.29 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.29 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.29 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.29 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.29 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.29 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.29 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.29 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.29 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.29 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.29 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.29 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.29 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.29 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.29 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.29 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.29 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.29 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.29 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.29 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.29 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.29 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.29 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.29 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.29 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.29 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.29 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.29 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.29 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.29 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.29 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.29 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.29 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.29 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.29 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.29 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.29 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1150.93/293.29 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1150.93/293.29 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1150.93/293.29 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.29 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.29 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.29 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.29 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.29 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.29 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.29 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.29 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.29 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.29 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.29 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.29 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.29 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.29 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.29 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.29 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.29 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.29 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.29 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.29 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.29 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.29 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.29 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.29 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.29 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.29 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.29 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.29 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.29 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.29 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.29 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.29 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.29 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.29 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.29 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.29 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.29 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.29 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.29 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.29 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.29 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.29 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.29 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.29 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.29 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.29 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.29 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.29 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.29 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.29 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.29 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.29 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.29 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.29 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.29 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.29 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.29 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.29 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.29 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.29 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.29 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.29 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.29 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.29 1150.93/293.29 Function symbols to be analyzed: {sum#1}, {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.29 Previous analysis results are: 1150.93/293.29 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.29 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.29 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.29 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.29 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.29 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.29 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.29 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.29 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.29 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.29 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.29 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.29 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.29 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.29 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.29 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.29 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.29 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.29 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.29 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.29 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.29 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.29 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.29 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.29 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.29 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.29 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.29 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.29 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.29 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.29 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.29 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1150.93/293.29 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1150.93/293.29 sum#1: runtime: ?, size: O(1) [7] 1150.93/293.29 1150.93/293.29 ---------------------------------------- 1150.93/293.29 1150.93/293.29 (217) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.29 1150.93/293.29 Computed RUNTIME bound using CoFloCo for: sum#1 1150.93/293.29 after applying outer abstraction to obtain an ITS, 1150.93/293.29 resulting in: O(1) with polynomial bound: 9 1150.93/293.29 1150.93/293.29 ---------------------------------------- 1150.93/293.29 1150.93/293.29 (218) 1150.93/293.29 Obligation: 1150.93/293.29 Complexity RNTS consisting of the following rules: 1150.93/293.29 1150.93/293.29 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.29 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.29 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.29 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.29 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.29 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.29 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.29 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.29 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.29 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.29 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.29 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.29 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.29 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.29 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.29 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.29 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.29 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.29 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.29 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.29 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.29 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.29 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.29 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.29 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.29 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.29 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.29 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.29 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.29 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.29 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.29 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.29 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.29 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.29 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.29 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.30 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.30 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.30 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.30 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.30 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.30 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.30 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.30 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.30 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 4 }-> add'#3(sum#1(s56), z1, @ys) :|: s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.30 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1150.93/293.30 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1150.93/293.30 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.30 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.30 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.30 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.30 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.30 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.30 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.30 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.30 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.30 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.30 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.30 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.30 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.30 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.30 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.30 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.30 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.30 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.30 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.30 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 sum(z, z', z'') -{ 3 }-> sum#1(s57) :|: s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.30 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.30 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.30 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.30 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.30 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.30 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.30 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.30 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.30 1150.93/293.30 Function symbols to be analyzed: {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.30 Previous analysis results are: 1150.93/293.30 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.30 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.30 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.30 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.30 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.30 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.30 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.30 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.30 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.30 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.30 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.30 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.30 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.30 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.30 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.30 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.30 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.30 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.30 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.30 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.30 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.30 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.30 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.30 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.30 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1150.93/293.30 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1150.93/293.30 sum#1: runtime: O(1) [9], size: O(1) [7] 1150.93/293.30 1150.93/293.30 ---------------------------------------- 1150.93/293.30 1150.93/293.30 (219) ResultPropagationProof (UPPER BOUND(ID)) 1150.93/293.30 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.93/293.30 ---------------------------------------- 1150.93/293.30 1150.93/293.30 (220) 1150.93/293.30 Obligation: 1150.93/293.30 Complexity RNTS consisting of the following rules: 1150.93/293.30 1150.93/293.30 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.30 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.30 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.30 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.30 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.30 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.30 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.30 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.30 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.30 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.30 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.30 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.30 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.30 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.30 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.30 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.30 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.30 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.30 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.30 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.30 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.30 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.30 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.30 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.30 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.30 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.30 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.30 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.30 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.30 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.30 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.30 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.30 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1150.93/293.30 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1150.93/293.30 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.30 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.30 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.30 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.30 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.30 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.30 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.30 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.30 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.30 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.30 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.30 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.30 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.30 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.30 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.30 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.30 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.30 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.30 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.30 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.30 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.30 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.30 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.30 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.30 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.30 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.30 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.30 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.30 1150.93/293.30 Function symbols to be analyzed: {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.30 Previous analysis results are: 1150.93/293.30 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.30 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.30 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.30 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.30 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.30 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.30 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.30 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.30 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.30 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.30 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.30 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.30 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.30 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.30 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.30 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.30 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.30 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.30 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.30 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.30 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.30 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.30 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.30 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.30 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1150.93/293.30 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1150.93/293.30 sum#1: runtime: O(1) [9], size: O(1) [7] 1150.93/293.30 1150.93/293.30 ---------------------------------------- 1150.93/293.30 1150.93/293.30 (221) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.30 1150.93/293.30 Computed SIZE bound using CoFloCo for: compare#4 1150.93/293.30 after applying outer abstraction to obtain an ITS, 1150.93/293.30 resulting in: O(n^1) with polynomial bound: 3 + z' 1150.93/293.30 1150.93/293.30 ---------------------------------------- 1150.93/293.30 1150.93/293.30 (222) 1150.93/293.30 Obligation: 1150.93/293.30 Complexity RNTS consisting of the following rules: 1150.93/293.30 1150.93/293.30 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.30 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.30 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.30 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.30 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.30 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.30 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.30 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.30 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.30 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.30 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.30 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.30 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.30 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.30 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.30 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.30 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.30 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.30 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.30 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.30 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.30 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.30 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.30 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.30 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.30 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.30 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.30 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.30 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.30 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.30 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.30 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.30 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1150.93/293.30 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1150.93/293.30 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.30 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.30 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.30 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.30 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.30 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.30 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.30 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.30 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.30 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.30 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.30 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.30 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.30 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.30 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.30 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.30 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.30 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.30 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.30 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.30 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.30 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.30 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.30 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.30 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.30 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.30 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.30 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.30 1150.93/293.30 Function symbols to be analyzed: {compare#4}, {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.30 Previous analysis results are: 1150.93/293.30 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.30 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.30 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.30 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.30 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.30 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.30 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.30 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.30 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.30 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.30 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.30 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.30 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.30 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.30 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.30 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.30 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.30 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.30 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.30 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.30 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.30 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.30 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.30 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.30 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1150.93/293.30 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1150.93/293.30 sum#1: runtime: O(1) [9], size: O(1) [7] 1150.93/293.30 compare#4: runtime: ?, size: O(n^1) [3 + z'] 1150.93/293.30 1150.93/293.30 ---------------------------------------- 1150.93/293.30 1150.93/293.30 (223) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.30 1150.93/293.30 Computed RUNTIME bound using CoFloCo for: compare#4 1150.93/293.30 after applying outer abstraction to obtain an ITS, 1150.93/293.30 resulting in: O(1) with polynomial bound: 6 1150.93/293.30 1150.93/293.30 ---------------------------------------- 1150.93/293.30 1150.93/293.30 (224) 1150.93/293.30 Obligation: 1150.93/293.30 Complexity RNTS consisting of the following rules: 1150.93/293.30 1150.93/293.30 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.30 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.30 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.30 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.30 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.30 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.30 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.30 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.30 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.30 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.30 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.30 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.30 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.30 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.30 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.30 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.30 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.30 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.30 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.30 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.30 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.30 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.30 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.30 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.30 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.30 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.30 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.30 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.30 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.30 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.30 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.30 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.30 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.30 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.30 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.30 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.30 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.30 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.30 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.30 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.30 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.30 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.30 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.30 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1150.93/293.30 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1150.93/293.30 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.30 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.30 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.30 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 compare#3(z, z', z'') -{ 2 }-> compare#4(s37, z, z', z'') :|: s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.30 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.30 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.30 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.30 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.30 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.30 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.30 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.30 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.30 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.30 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.30 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.30 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.30 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.30 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.30 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.30 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.30 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.30 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.30 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.30 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.30 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.30 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.30 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.30 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.30 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.30 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.30 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.30 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.30 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.30 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.30 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.30 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.30 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.30 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.30 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.30 1150.93/293.30 Function symbols to be analyzed: {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.30 Previous analysis results are: 1150.93/293.30 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.30 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.30 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.30 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.30 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.30 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.30 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.30 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.30 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.30 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.30 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.30 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.30 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.30 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.30 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.30 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.30 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.30 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.30 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.30 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.30 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.30 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.30 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.30 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.30 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.30 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.30 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1150.93/293.30 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1150.93/293.30 sum#1: runtime: O(1) [9], size: O(1) [7] 1150.93/293.30 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1150.93/293.30 1150.93/293.30 ---------------------------------------- 1150.93/293.30 1150.93/293.30 (225) ResultPropagationProof (UPPER BOUND(ID)) 1150.93/293.30 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.93/293.30 ---------------------------------------- 1150.93/293.30 1150.93/293.30 (226) 1150.93/293.30 Obligation: 1150.93/293.30 Complexity RNTS consisting of the following rules: 1150.93/293.30 1150.93/293.30 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.30 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.30 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.30 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.30 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.31 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.31 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.31 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.31 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.31 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.31 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.31 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.31 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.31 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.31 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.31 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.31 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.31 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.31 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.31 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.31 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.31 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.31 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.31 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.31 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.31 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.31 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.31 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.31 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.31 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.31 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.31 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.31 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1150.93/293.31 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1150.93/293.31 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1150.93/293.31 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.31 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.31 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.31 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.31 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.31 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.31 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.31 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.31 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.31 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.31 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.31 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.31 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.31 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.31 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.31 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.31 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.31 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.31 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.31 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.31 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.31 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.31 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.31 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.31 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.31 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.31 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.31 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.31 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.31 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.31 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.31 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.31 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.31 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.31 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.31 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.31 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.31 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.31 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.31 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.31 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.31 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.31 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.31 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.31 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.31 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.31 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.31 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.31 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.31 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.31 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.31 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.31 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.31 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.31 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.31 1150.93/293.31 Function symbols to be analyzed: {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.31 Previous analysis results are: 1150.93/293.31 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.31 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.31 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.31 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.31 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.31 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.31 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.31 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.31 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.31 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.31 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.31 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.31 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.31 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.31 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.31 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.31 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.31 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.31 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.31 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.31 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.31 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.31 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.31 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.31 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.31 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.31 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.31 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1150.93/293.31 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1150.93/293.31 sum#1: runtime: O(1) [9], size: O(1) [7] 1150.93/293.31 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1150.93/293.31 1150.93/293.31 ---------------------------------------- 1150.93/293.31 1150.93/293.31 (227) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.31 1150.93/293.31 Computed SIZE bound using CoFloCo for: mod 1150.93/293.31 after applying outer abstraction to obtain an ITS, 1150.93/293.31 resulting in: INF with polynomial bound: ? 1150.93/293.31 1150.93/293.31 ---------------------------------------- 1150.93/293.31 1150.93/293.31 (228) 1150.93/293.31 Obligation: 1150.93/293.31 Complexity RNTS consisting of the following rules: 1150.93/293.31 1150.93/293.31 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.31 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.31 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.31 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.31 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.31 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.31 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.31 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.31 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.31 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.31 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.31 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.31 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.31 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.31 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.31 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.31 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.31 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.31 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.31 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.31 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.31 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.31 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.31 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.31 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.31 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.31 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.31 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.31 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.31 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.31 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1150.93/293.31 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1150.93/293.31 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1150.93/293.31 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.31 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.31 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.31 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.31 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.31 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.31 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.31 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.31 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.31 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.31 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.31 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.31 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.31 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.31 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.31 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.31 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.31 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.31 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.31 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.31 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.31 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.31 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.31 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.31 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.31 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.31 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.31 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.31 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.31 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.31 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.31 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.31 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.31 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.31 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.31 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.31 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.31 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.31 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.31 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.31 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.31 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.31 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.31 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.31 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.31 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.31 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.31 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.31 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.31 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.31 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.31 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.31 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.31 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.31 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.31 1150.93/293.31 Function symbols to be analyzed: {mod}, {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.31 Previous analysis results are: 1150.93/293.31 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.31 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.31 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.31 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.31 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.31 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.31 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.31 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.31 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.31 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.31 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.31 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.31 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.31 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.31 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.31 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.31 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.31 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.31 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.31 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.31 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.31 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.31 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.31 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.31 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.31 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.31 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.31 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1150.93/293.31 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1150.93/293.31 sum#1: runtime: O(1) [9], size: O(1) [7] 1150.93/293.31 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1150.93/293.31 mod: runtime: ?, size: INF 1150.93/293.31 1150.93/293.31 ---------------------------------------- 1150.93/293.31 1150.93/293.31 (229) IntTrsBoundProof (UPPER BOUND(ID)) 1150.93/293.31 1150.93/293.31 Computed RUNTIME bound using CoFloCo for: mod 1150.93/293.31 after applying outer abstraction to obtain an ITS, 1150.93/293.31 resulting in: O(1) with polynomial bound: 4 1150.93/293.31 1150.93/293.31 ---------------------------------------- 1150.93/293.31 1150.93/293.31 (230) 1150.93/293.31 Obligation: 1150.93/293.31 Complexity RNTS consisting of the following rules: 1150.93/293.31 1150.93/293.31 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.31 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.31 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.31 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.31 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.31 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.31 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.31 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.31 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.31 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.31 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.31 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.31 #pred(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.31 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.31 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.31 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1150.93/293.31 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1150.93/293.31 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1150.93/293.31 #succ(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1150.93/293.31 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1150.93/293.31 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1150.93/293.31 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.31 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1150.93/293.31 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.31 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.31 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.31 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.31 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.31 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.31 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.31 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1150.93/293.31 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1150.93/293.31 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1150.93/293.31 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1150.93/293.31 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.31 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.31 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.31 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.31 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1150.93/293.31 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1150.93/293.31 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1150.93/293.31 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.31 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1150.93/293.31 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.31 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1150.93/293.31 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1150.93/293.31 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.31 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.31 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 diff(z, z', z'') -{ 8 }-> 1 + mod(s58, 1 + (1 + (1 + 0))) + s67 :|: s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1150.93/293.31 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1150.93/293.31 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1150.93/293.31 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1150.93/293.31 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.31 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1150.93/293.31 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1150.93/293.31 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.31 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1150.93/293.31 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1150.93/293.31 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1150.93/293.31 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1150.93/293.31 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.31 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1150.93/293.31 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1150.93/293.31 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.31 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1150.93/293.31 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1150.93/293.31 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1150.93/293.31 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1150.93/293.31 sub'#2(z, z', z'', z1) -{ 9 }-> sub'#3(1 + mod(s60, 1 + (1 + (1 + 0))) + s71, z1, @ys) :|: s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1150.93/293.31 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1150.93/293.31 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1150.93/293.31 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1150.93/293.31 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1150.93/293.31 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1150.93/293.31 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1150.93/293.31 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1150.93/293.31 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1150.93/293.31 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1150.93/293.31 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1150.93/293.31 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1150.93/293.31 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1150.93/293.31 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1150.93/293.31 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1150.93/293.31 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1150.93/293.31 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.31 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.31 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1150.93/293.31 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1150.93/293.31 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1150.93/293.31 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1150.93/293.31 1150.93/293.31 Function symbols to be analyzed: {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1150.93/293.31 Previous analysis results are: 1150.93/293.31 #ckgt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1150.93/293.31 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.31 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1150.93/293.31 compare#6: runtime: O(1) [2], size: O(1) [3] 1150.93/293.31 sum#4: runtime: O(1) [3], size: O(1) [7] 1150.93/293.31 #and: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1150.93/293.31 #cklt: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 #compare: runtime: O(1) [0], size: O(1) [3] 1150.93/293.31 diff#1: runtime: O(1) [2], size: O(1) [3] 1150.93/293.31 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.31 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1150.93/293.31 #greater: runtime: O(1) [1], size: O(1) [2] 1150.93/293.31 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.31 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.31 #eq: runtime: O(1) [0], size: O(1) [2] 1150.93/293.31 #less: runtime: O(1) [1], size: O(1) [2] 1150.93/293.31 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1150.93/293.31 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1150.93/293.31 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.31 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1150.93/293.31 sum#3: runtime: O(1) [5], size: O(1) [7] 1150.93/293.31 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1150.93/293.31 #equal: runtime: O(1) [1], size: O(1) [2] 1150.93/293.31 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1150.93/293.31 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1150.93/293.31 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1150.93/293.31 sum#2: runtime: O(1) [7], size: O(1) [7] 1150.93/293.31 compare#5: runtime: O(1) [4], size: O(1) [3] 1150.93/293.31 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1150.93/293.31 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1150.93/293.31 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1150.93/293.31 sum#1: runtime: O(1) [9], size: O(1) [7] 1150.93/293.31 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1150.93/293.31 mod: runtime: O(1) [4], size: INF 1150.93/293.31 1150.93/293.31 ---------------------------------------- 1150.93/293.31 1150.93/293.31 (231) ResultPropagationProof (UPPER BOUND(ID)) 1150.93/293.31 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1150.93/293.31 ---------------------------------------- 1150.93/293.31 1150.93/293.31 (232) 1150.93/293.31 Obligation: 1150.93/293.31 Complexity RNTS consisting of the following rules: 1150.93/293.31 1150.93/293.31 #abs(z) -{ 1 }-> 0 :|: z = 0 1150.93/293.31 #abs(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1150.93/293.31 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1150.93/293.31 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1150.93/293.31 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1150.93/293.31 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1150.93/293.31 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1150.93/293.31 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1150.93/293.31 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.31 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1150.93/293.31 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #cklt(z) -{ 0 }-> 2 :|: z = 3 1150.93/293.31 #cklt(z) -{ 0 }-> 1 :|: z = 1 1150.93/293.31 #cklt(z) -{ 0 }-> 1 :|: z = 2 1150.93/293.31 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1150.93/293.31 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.31 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1150.93/293.31 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1150.93/293.31 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1150.93/293.31 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1150.93/293.31 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.19/293.33 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.19/293.33 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.19/293.33 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.33 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.33 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.33 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.33 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.33 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.19/293.33 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.33 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.33 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.33 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.33 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.33 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.33 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.33 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.33 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.33 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.33 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.33 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.33 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.33 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.33 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.19/293.33 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.19/293.33 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.19/293.33 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.19/293.33 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.33 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.33 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.33 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.33 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.33 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.33 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.19/293.33 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.19/293.33 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.19/293.33 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.19/293.33 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.33 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.19/293.33 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.33 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.19/293.33 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.19/293.33 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.33 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.33 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.33 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.33 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.33 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.33 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.19/293.33 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.19/293.33 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.33 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.19/293.33 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.33 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.33 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.33 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.19/293.33 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.19/293.33 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.19/293.33 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.33 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.19/293.33 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.33 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.33 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.33 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.19/293.33 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.33 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.33 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.33 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.33 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.33 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.33 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.33 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.19/293.33 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.19/293.33 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.19/293.33 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.33 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.19/293.33 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.19/293.33 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.33 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.19/293.33 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.19/293.33 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.19/293.33 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.19/293.33 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.19/293.33 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.33 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.33 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.33 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.33 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.33 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.33 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.33 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.33 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.33 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.33 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.33 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.33 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.33 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.19/293.33 1151.19/293.33 Function symbols to be analyzed: {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.19/293.33 Previous analysis results are: 1151.19/293.33 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.33 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.19/293.33 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.33 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.19/293.33 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.19/293.33 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.19/293.33 #and: runtime: O(1) [0], size: O(1) [2] 1151.19/293.33 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.19/293.33 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.33 #compare: runtime: O(1) [0], size: O(1) [3] 1151.19/293.33 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.19/293.33 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.33 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.33 #greater: runtime: O(1) [1], size: O(1) [2] 1151.19/293.33 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.33 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.33 #eq: runtime: O(1) [0], size: O(1) [2] 1151.19/293.33 #less: runtime: O(1) [1], size: O(1) [2] 1151.19/293.33 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.33 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.19/293.33 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.33 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.33 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.19/293.33 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.19/293.33 #equal: runtime: O(1) [1], size: O(1) [2] 1151.19/293.33 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.33 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.19/293.33 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.33 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.19/293.33 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.19/293.33 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.19/293.33 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.19/293.33 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.19/293.33 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.19/293.33 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.19/293.33 mod: runtime: O(1) [4], size: INF 1151.19/293.33 1151.19/293.33 ---------------------------------------- 1151.19/293.33 1151.19/293.33 (233) IntTrsBoundProof (UPPER BOUND(ID)) 1151.19/293.33 1151.19/293.33 Computed SIZE bound using CoFloCo for: bitToInt 1151.19/293.33 after applying outer abstraction to obtain an ITS, 1151.19/293.33 resulting in: INF with polynomial bound: ? 1151.19/293.33 1151.19/293.33 ---------------------------------------- 1151.19/293.33 1151.19/293.33 (234) 1151.19/293.33 Obligation: 1151.19/293.33 Complexity RNTS consisting of the following rules: 1151.19/293.33 1151.19/293.33 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.19/293.33 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.19/293.33 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.19/293.33 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.19/293.33 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.19/293.33 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.19/293.33 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.33 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.19/293.33 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.19/293.33 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.19/293.33 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.19/293.33 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.33 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.19/293.33 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.33 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.19/293.33 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.19/293.33 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.19/293.33 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.19/293.33 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.19/293.33 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.33 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.19/293.33 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.19/293.33 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.19/293.33 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.19/293.33 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.19/293.33 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.19/293.33 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.19/293.33 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.19/293.33 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.19/293.33 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.19/293.33 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.19/293.33 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.19/293.33 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.33 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.19/293.33 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.19/293.33 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.19/293.33 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.19/293.33 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.33 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.19/293.33 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.19/293.33 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.33 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.19/293.33 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.19/293.33 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.19/293.33 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.19/293.33 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.19/293.33 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.33 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.33 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.33 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.33 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.33 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.19/293.33 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.33 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.19/293.33 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.33 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.19/293.33 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.33 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.33 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.19/293.33 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.33 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.33 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.33 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.33 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.33 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.33 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.33 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.33 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.33 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.33 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.33 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.33 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.33 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.33 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.33 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.33 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.33 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.33 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.33 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.33 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.33 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.33 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.33 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.33 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.33 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.33 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.33 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.33 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.33 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.33 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.33 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.33 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.33 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.19/293.33 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.33 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.19/293.33 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.33 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.19/293.33 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.19/293.33 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.19/293.33 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.19/293.33 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.19/293.33 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.19/293.33 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.33 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.33 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.33 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.33 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.33 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.33 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.19/293.33 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.33 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.33 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.33 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.33 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.33 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.33 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.33 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.33 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.33 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.33 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.33 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.33 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.33 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.33 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.19/293.33 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.19/293.33 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.19/293.33 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.19/293.33 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.33 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.33 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.33 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.33 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.33 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.33 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.19/293.33 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.19/293.33 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.19/293.33 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.19/293.33 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.33 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.19/293.33 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.33 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.19/293.33 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.19/293.33 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.33 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.33 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.33 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.33 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.33 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.33 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.19/293.33 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.19/293.33 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.33 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.19/293.33 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.33 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.33 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.33 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.19/293.33 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.19/293.33 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.19/293.33 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.33 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.19/293.33 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.33 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.33 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.33 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.19/293.33 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.33 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.33 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.33 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.33 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.33 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.33 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.33 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.19/293.33 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.19/293.33 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.19/293.33 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.33 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.33 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.19/293.33 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.19/293.33 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.33 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.19/293.33 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.19/293.33 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.19/293.33 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.33 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.19/293.33 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.19/293.33 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.33 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.33 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.33 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.33 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.33 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.33 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.33 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.33 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.33 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.19/293.34 1151.19/293.34 Function symbols to be analyzed: {bitToInt}, {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.19/293.34 Previous analysis results are: 1151.19/293.34 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.19/293.34 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.19/293.34 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.19/293.34 #and: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.19/293.34 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #compare: runtime: O(1) [0], size: O(1) [3] 1151.19/293.34 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #greater: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 #eq: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #less: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.19/293.34 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.19/293.34 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.19/293.34 #equal: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.19/293.34 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.19/293.34 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.19/293.34 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.19/293.34 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.19/293.34 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.19/293.34 mod: runtime: O(1) [4], size: INF 1151.19/293.34 bitToInt: runtime: ?, size: INF 1151.19/293.34 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (235) IntTrsBoundProof (UPPER BOUND(ID)) 1151.19/293.34 1151.19/293.34 Computed RUNTIME bound using CoFloCo for: bitToInt 1151.19/293.34 after applying outer abstraction to obtain an ITS, 1151.19/293.34 resulting in: O(n^1) with polynomial bound: 10 + 10*z 1151.19/293.34 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (236) 1151.19/293.34 Obligation: 1151.19/293.34 Complexity RNTS consisting of the following rules: 1151.19/293.34 1151.19/293.34 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.19/293.34 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.19/293.34 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.19/293.34 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.19/293.34 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.34 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.34 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.19/293.34 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.34 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.34 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.34 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.34 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.34 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.34 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.19/293.34 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.19/293.34 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.34 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.19/293.34 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.19/293.34 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.34 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.34 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.34 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.34 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.19/293.34 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.19/293.34 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.34 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.19/293.34 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.34 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.19/293.34 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.34 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.34 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.34 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.19/293.34 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.34 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.19/293.34 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.19/293.34 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.19/293.34 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.19/293.34 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.19/293.34 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.19/293.34 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.19/293.34 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.34 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.34 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.19/293.34 1151.19/293.34 Function symbols to be analyzed: {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.19/293.34 Previous analysis results are: 1151.19/293.34 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.19/293.34 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.19/293.34 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.19/293.34 #and: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.19/293.34 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #compare: runtime: O(1) [0], size: O(1) [3] 1151.19/293.34 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #greater: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 #eq: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #less: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.19/293.34 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.19/293.34 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.19/293.34 #equal: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.19/293.34 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.19/293.34 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.19/293.34 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.19/293.34 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.19/293.34 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.19/293.34 mod: runtime: O(1) [4], size: INF 1151.19/293.34 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.19/293.34 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (237) ResultPropagationProof (UPPER BOUND(ID)) 1151.19/293.34 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (238) 1151.19/293.34 Obligation: 1151.19/293.34 Complexity RNTS consisting of the following rules: 1151.19/293.34 1151.19/293.34 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.19/293.34 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.19/293.34 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.19/293.34 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.19/293.34 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.34 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.34 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.19/293.34 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.34 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.34 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.34 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.34 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.34 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.34 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.19/293.34 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.19/293.34 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.34 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.19/293.34 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.19/293.34 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.34 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.34 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.34 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.34 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.19/293.34 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.19/293.34 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.34 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.19/293.34 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.34 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.19/293.34 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.34 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.34 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.34 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.19/293.34 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.34 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.19/293.34 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.19/293.34 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.19/293.34 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.19/293.34 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.19/293.34 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.19/293.34 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.19/293.34 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.34 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.34 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.19/293.34 1151.19/293.34 Function symbols to be analyzed: {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.19/293.34 Previous analysis results are: 1151.19/293.34 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.19/293.34 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.19/293.34 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.19/293.34 #and: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.19/293.34 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #compare: runtime: O(1) [0], size: O(1) [3] 1151.19/293.34 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #greater: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 #eq: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #less: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.19/293.34 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.19/293.34 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.19/293.34 #equal: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.19/293.34 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.19/293.34 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.19/293.34 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.19/293.34 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.19/293.34 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.19/293.34 mod: runtime: O(1) [4], size: INF 1151.19/293.34 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.19/293.34 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (239) IntTrsBoundProof (UPPER BOUND(ID)) 1151.19/293.34 1151.19/293.34 Computed SIZE bound using CoFloCo for: sum 1151.19/293.34 after applying outer abstraction to obtain an ITS, 1151.19/293.34 resulting in: O(1) with polynomial bound: 7 1151.19/293.34 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (240) 1151.19/293.34 Obligation: 1151.19/293.34 Complexity RNTS consisting of the following rules: 1151.19/293.34 1151.19/293.34 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.19/293.34 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.19/293.34 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.19/293.34 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.19/293.34 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.34 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.34 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.19/293.34 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.34 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.34 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.34 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.34 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.34 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.34 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.19/293.34 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.19/293.34 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.34 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.19/293.34 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.19/293.34 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.34 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.34 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.34 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.34 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.19/293.34 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.19/293.34 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.34 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.19/293.34 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.34 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.19/293.34 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.34 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.34 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.34 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.19/293.34 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.34 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.19/293.34 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.19/293.34 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.19/293.34 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.19/293.34 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.19/293.34 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.19/293.34 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.19/293.34 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.34 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.34 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.19/293.34 1151.19/293.34 Function symbols to be analyzed: {sum}, {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.19/293.34 Previous analysis results are: 1151.19/293.34 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.19/293.34 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.19/293.34 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.19/293.34 #and: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.19/293.34 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #compare: runtime: O(1) [0], size: O(1) [3] 1151.19/293.34 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #greater: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 #eq: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #less: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.19/293.34 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.19/293.34 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.19/293.34 #equal: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.19/293.34 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.19/293.34 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.19/293.34 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.19/293.34 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.19/293.34 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.19/293.34 mod: runtime: O(1) [4], size: INF 1151.19/293.34 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.19/293.34 sum: runtime: ?, size: O(1) [7] 1151.19/293.34 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (241) IntTrsBoundProof (UPPER BOUND(ID)) 1151.19/293.34 1151.19/293.34 Computed RUNTIME bound using CoFloCo for: sum 1151.19/293.34 after applying outer abstraction to obtain an ITS, 1151.19/293.34 resulting in: O(1) with polynomial bound: 12 1151.19/293.34 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (242) 1151.19/293.34 Obligation: 1151.19/293.34 Complexity RNTS consisting of the following rules: 1151.19/293.34 1151.19/293.34 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.19/293.34 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.19/293.34 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.19/293.34 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.19/293.34 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.34 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.34 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.19/293.34 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.34 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.34 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.34 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.34 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.34 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.34 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.19/293.34 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.19/293.34 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.34 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.19/293.34 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.19/293.34 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.34 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.34 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.34 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.34 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.19/293.34 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.19/293.34 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.34 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.19/293.34 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.34 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.19/293.34 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.34 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.34 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.34 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.19/293.34 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.34 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.19/293.34 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.19/293.34 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.19/293.34 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.19/293.34 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.19/293.34 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.19/293.34 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.19/293.34 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.34 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.34 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.19/293.34 1151.19/293.34 Function symbols to be analyzed: {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.19/293.34 Previous analysis results are: 1151.19/293.34 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.19/293.34 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.19/293.34 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.19/293.34 #and: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.19/293.34 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #compare: runtime: O(1) [0], size: O(1) [3] 1151.19/293.34 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #greater: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 #eq: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #less: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.19/293.34 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.19/293.34 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.19/293.34 #equal: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.19/293.34 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.19/293.34 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.19/293.34 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.19/293.34 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.19/293.34 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.19/293.34 mod: runtime: O(1) [4], size: INF 1151.19/293.34 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.19/293.34 sum: runtime: O(1) [12], size: O(1) [7] 1151.19/293.34 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (243) ResultPropagationProof (UPPER BOUND(ID)) 1151.19/293.34 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (244) 1151.19/293.34 Obligation: 1151.19/293.34 Complexity RNTS consisting of the following rules: 1151.19/293.34 1151.19/293.34 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.19/293.34 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.19/293.34 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.19/293.34 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.19/293.34 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.34 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.34 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.34 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.19/293.34 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.19/293.34 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.34 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.34 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.34 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.34 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.19/293.34 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.34 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.34 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.34 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.34 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.34 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.34 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.34 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.19/293.34 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.19/293.34 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.34 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.19/293.34 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.19/293.34 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.19/293.34 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.19/293.34 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.34 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.34 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.34 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.34 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.19/293.34 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.19/293.34 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.34 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.19/293.34 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.34 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.19/293.34 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.19/293.34 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.34 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.34 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.34 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.19/293.34 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.34 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.34 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.34 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.19/293.34 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.19/293.34 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.34 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.19/293.34 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.19/293.34 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.34 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.19/293.34 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.19/293.34 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.19/293.34 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.19/293.34 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.34 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.34 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.34 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.34 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.19/293.34 1151.19/293.34 Function symbols to be analyzed: {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.19/293.34 Previous analysis results are: 1151.19/293.34 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.19/293.34 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.19/293.34 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.19/293.34 #and: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.19/293.34 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #compare: runtime: O(1) [0], size: O(1) [3] 1151.19/293.34 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.19/293.34 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.34 #greater: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 #eq: runtime: O(1) [0], size: O(1) [2] 1151.19/293.34 #less: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.34 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.19/293.34 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.34 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.19/293.34 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.19/293.34 #equal: runtime: O(1) [1], size: O(1) [2] 1151.19/293.34 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.34 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.34 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.19/293.34 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.19/293.34 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.19/293.34 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.19/293.34 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.19/293.34 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.19/293.34 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.19/293.34 mod: runtime: O(1) [4], size: INF 1151.19/293.34 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.19/293.34 sum: runtime: O(1) [12], size: O(1) [7] 1151.19/293.34 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (245) IntTrsBoundProof (UPPER BOUND(ID)) 1151.19/293.34 1151.19/293.34 Computed SIZE bound using KoAT for: add'#2 1151.19/293.34 after applying outer abstraction to obtain an ITS, 1151.19/293.34 resulting in: O(n^1) with polynomial bound: 28 + 32*z1 1151.19/293.34 1151.19/293.34 Computed SIZE bound using KoAT for: add'#1 1151.19/293.34 after applying outer abstraction to obtain an ITS, 1151.19/293.34 resulting in: O(n^1) with polynomial bound: 32*z 1151.19/293.34 1151.19/293.34 Computed SIZE bound using KoAT for: add' 1151.19/293.34 after applying outer abstraction to obtain an ITS, 1151.19/293.34 resulting in: O(n^1) with polynomial bound: 32*z 1151.19/293.34 1151.19/293.34 Computed SIZE bound using KoAT for: add'#3 1151.19/293.34 after applying outer abstraction to obtain an ITS, 1151.19/293.34 resulting in: O(n^1) with polynomial bound: z + 32*z' 1151.19/293.34 1151.19/293.34 ---------------------------------------- 1151.19/293.34 1151.19/293.34 (246) 1151.19/293.34 Obligation: 1151.19/293.34 Complexity RNTS consisting of the following rules: 1151.19/293.34 1151.19/293.34 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.19/293.34 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.19/293.34 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.34 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.19/293.34 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.19/293.34 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.19/293.34 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.19/293.34 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.34 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.19/293.34 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.34 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.19/293.34 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.35 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.35 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.19/293.35 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.35 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.35 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.35 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.19/293.35 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.35 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.35 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.35 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.35 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.35 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.35 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.35 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.35 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.35 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.35 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.35 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.35 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.35 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.35 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.35 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.35 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.35 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.35 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.35 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.35 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.35 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.35 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.35 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.35 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.35 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.35 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.35 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.35 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.35 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.35 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.35 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.35 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.35 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.35 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.19/293.35 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.35 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.19/293.35 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.35 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.19/293.35 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.35 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.35 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.19/293.35 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.19/293.35 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.35 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.19/293.35 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.19/293.35 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.19/293.35 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.19/293.35 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.35 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.35 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.35 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.35 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.35 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.35 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.35 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.35 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.35 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.19/293.35 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.35 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.35 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.35 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.35 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.35 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.35 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.35 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.35 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.35 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.35 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.35 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.37 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.37 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.37 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.37 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.37 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.19/293.37 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.19/293.37 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.19/293.37 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.19/293.37 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.37 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.37 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.37 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.37 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.37 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.37 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.19/293.37 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.19/293.37 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.19/293.37 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.19/293.37 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.37 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.19/293.37 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.37 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.19/293.37 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.19/293.37 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.37 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.37 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.37 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.37 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.37 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.37 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.37 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.19/293.37 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.19/293.37 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.37 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.37 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.37 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.19/293.37 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.19/293.37 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.37 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.19/293.37 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.37 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.37 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.37 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.19/293.37 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.19/293.37 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.19/293.37 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.37 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.19/293.37 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.19/293.37 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.37 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.19/293.37 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.19/293.37 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.37 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.37 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.37 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.37 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.37 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.37 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.37 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.19/293.37 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.19/293.37 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.19/293.37 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.37 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.19/293.37 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.19/293.37 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.37 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.19/293.37 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.19/293.37 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.19/293.37 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.19/293.37 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.19/293.37 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.37 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.37 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.19/293.37 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.19/293.37 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.37 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.37 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.37 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.19/293.37 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.37 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.37 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.37 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.37 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.37 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.19/293.37 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.37 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.37 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.37 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.37 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.37 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.19/293.37 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.19/293.37 1151.19/293.37 Function symbols to be analyzed: {add'#2,add'#1,add',add'#3}, {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.19/293.37 Previous analysis results are: 1151.19/293.37 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.37 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.19/293.37 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.37 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.19/293.37 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.19/293.37 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.19/293.37 #and: runtime: O(1) [0], size: O(1) [2] 1151.19/293.37 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.19/293.37 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.19/293.37 #compare: runtime: O(1) [0], size: O(1) [3] 1151.19/293.37 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.19/293.37 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.37 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.19/293.37 #greater: runtime: O(1) [1], size: O(1) [2] 1151.19/293.37 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.37 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.37 #eq: runtime: O(1) [0], size: O(1) [2] 1151.19/293.37 #less: runtime: O(1) [1], size: O(1) [2] 1151.19/293.37 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.19/293.37 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.19/293.37 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.37 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.19/293.37 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.19/293.37 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.19/293.37 #equal: runtime: O(1) [1], size: O(1) [2] 1151.19/293.37 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.19/293.37 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.19/293.37 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.19/293.37 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.19/293.37 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.19/293.37 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.19/293.37 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.19/293.37 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.19/293.37 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.19/293.37 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.19/293.37 mod: runtime: O(1) [4], size: INF 1151.19/293.37 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.19/293.37 sum: runtime: O(1) [12], size: O(1) [7] 1151.19/293.37 add'#2: runtime: ?, size: O(n^1) [28 + 32*z1] 1151.19/293.37 add'#1: runtime: ?, size: O(n^1) [32*z] 1151.19/293.37 add': runtime: ?, size: O(n^1) [32*z] 1151.19/293.37 add'#3: runtime: ?, size: O(n^1) [z + 32*z'] 1151.19/293.37 1151.19/293.37 ---------------------------------------- 1151.19/293.37 1151.19/293.37 (247) IntTrsBoundProof (UPPER BOUND(ID)) 1151.19/293.37 1151.19/293.37 Computed RUNTIME bound using KoAT for: add'#2 1151.19/293.37 after applying outer abstraction to obtain an ITS, 1151.19/293.37 resulting in: O(n^1) with polynomial bound: 2 + 48*z + 16*z1 1151.19/293.37 1151.19/293.37 Computed RUNTIME bound using KoAT for: add'#1 1151.19/293.37 after applying outer abstraction to obtain an ITS, 1151.19/293.37 resulting in: O(n^1) with polynomial bound: 4 + 16*z + 48*z' 1151.19/293.37 1151.19/293.37 Computed RUNTIME bound using KoAT for: add' 1151.19/293.37 after applying outer abstraction to obtain an ITS, 1151.19/293.37 resulting in: O(n^1) with polynomial bound: 5 + 16*z + 48*z' 1151.19/293.37 1151.19/293.37 Computed RUNTIME bound using CoFloCo for: add'#3 1151.19/293.37 after applying outer abstraction to obtain an ITS, 1151.19/293.37 resulting in: O(n^1) with polynomial bound: 6 + 16*z' + 48*z'' 1151.19/293.37 1151.19/293.37 ---------------------------------------- 1151.19/293.37 1151.19/293.37 (248) 1151.19/293.37 Obligation: 1151.19/293.37 Complexity RNTS consisting of the following rules: 1151.19/293.37 1151.19/293.37 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.19/293.37 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.37 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.19/293.37 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.19/293.37 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.19/293.37 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.19/293.37 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.19/293.37 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.37 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.19/293.37 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.19/293.37 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.19/293.37 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.19/293.37 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.19/293.37 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.19/293.37 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.37 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.19/293.37 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.19/293.37 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.19/293.37 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.19/293.37 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.19/293.37 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.19/293.37 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.19/293.37 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.19/293.37 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.19/293.37 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.19/293.37 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.19/293.37 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.19/293.37 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.19/293.37 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.19/293.37 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.19/293.37 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.19/293.37 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.19/293.37 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.19/293.37 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.37 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.19/293.37 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.19/293.37 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.19/293.37 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.19/293.37 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.37 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.19/293.37 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.37 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.19/293.37 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.19/293.37 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.19/293.37 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.37 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.37 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.19/293.37 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.19/293.37 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.19/293.37 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.37 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.19/293.37 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.19/293.37 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.37 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.37 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.37 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.37 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.37 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.37 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.37 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.37 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.19/293.37 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.19/293.37 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.19/293.37 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.19/293.37 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.19/293.37 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.19/293.37 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.37 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.19/293.37 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.19/293.37 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.37 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.37 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.37 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.37 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.37 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.37 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.37 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.37 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.37 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.37 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.37 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.37 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.37 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.37 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.37 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.37 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.37 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.19/293.37 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.19/293.37 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.19/293.37 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.19/293.37 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.19/293.37 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.19/293.37 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.19/293.37 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.19/293.37 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.19/293.37 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.19/293.37 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.19/293.37 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.19/293.37 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.19/293.37 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.19/293.37 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.19/293.37 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.19/293.37 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.37 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.19/293.37 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.19/293.37 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.19/293.37 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.19/293.37 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.19/293.37 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.19/293.37 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.19/293.37 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.37 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.19/293.37 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.19/293.37 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.19/293.37 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.19/293.37 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.19/293.37 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.37 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.37 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.37 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.37 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.37 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.37 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.19/293.37 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.19/293.37 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.19/293.37 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.19/293.37 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.19/293.37 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.19/293.37 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.19/293.37 add(z, z') -{ 2 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.37 add(z, z') -{ 1 }-> add'(z, z', 0) :|: z' >= 0, z >= 0 1151.19/293.37 add'(z, z', z'') -{ 1 }-> add'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.19/293.37 add'#1(z, z', z'') -{ 1 }-> add'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.19/293.37 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.19/293.37 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 add'#2(z, z', z'', z1) -{ 13 }-> add'#3(s84, z1, @ys) :|: s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.19/293.37 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.19/293.37 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.19/293.37 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 add'#3(z, z', z'') -{ 1 }-> 1 + @z + add'(z', z'', @r') :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.19/293.37 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.19/293.37 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.19/293.37 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.19/293.37 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.19/293.37 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.37 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.37 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.19/293.37 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.19/293.37 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.19/293.37 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.19/293.37 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.19/293.37 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.19/293.37 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.19/293.37 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.19/293.37 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.38 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.38 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.38 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.38 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.38 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.38 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.38 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.38 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.38 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.38 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.38 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.38 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.38 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.38 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.38 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.38 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.38 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.38 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.38 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.38 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.38 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.38 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.38 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.38 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.38 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.38 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.36/293.38 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.38 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.38 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.38 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.38 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.38 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.38 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.38 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.38 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.38 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.38 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.38 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.38 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.38 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.38 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.38 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.38 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.38 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.38 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.38 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.38 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.38 1151.36/293.38 Function symbols to be analyzed: {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.38 Previous analysis results are: 1151.36/293.38 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.38 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.38 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.38 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.38 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.38 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.38 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.38 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.38 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.38 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.38 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.38 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.38 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.38 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.38 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.38 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.38 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.38 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.38 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.38 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.38 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.38 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.38 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.38 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.38 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.38 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.38 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.38 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.38 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.38 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.38 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.38 mod: runtime: O(1) [4], size: INF 1151.36/293.38 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.38 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.38 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.38 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.38 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.38 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.38 1151.36/293.38 ---------------------------------------- 1151.36/293.38 1151.36/293.38 (249) ResultPropagationProof (UPPER BOUND(ID)) 1151.36/293.38 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.36/293.38 ---------------------------------------- 1151.36/293.38 1151.36/293.38 (250) 1151.36/293.38 Obligation: 1151.36/293.38 Complexity RNTS consisting of the following rules: 1151.36/293.38 1151.36/293.38 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.38 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.38 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.38 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.38 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.38 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.38 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.38 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.38 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.38 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.38 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.38 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.38 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.38 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.38 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.38 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.38 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.38 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.38 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.38 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.38 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.38 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.38 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.38 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.38 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.38 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.38 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.38 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.38 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.38 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.38 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.38 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.38 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.38 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.38 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.38 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.38 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.38 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.38 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.38 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.38 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.38 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.38 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.38 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.38 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.38 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.38 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.38 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.38 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.38 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.38 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.38 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.38 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.38 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.38 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.38 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.38 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.38 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.38 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.38 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.38 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.38 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.38 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.38 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.38 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.38 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.38 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.38 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.38 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.38 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.38 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.38 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.38 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.38 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.38 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.38 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.38 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.38 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.38 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.38 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.38 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.38 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.36/293.38 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.38 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.38 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.38 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.38 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.38 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.38 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.38 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.38 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.38 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.38 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.38 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.38 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.38 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.38 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.38 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.38 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.38 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.38 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.38 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.38 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.38 1151.36/293.38 Function symbols to be analyzed: {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.38 Previous analysis results are: 1151.36/293.38 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.38 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.38 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.38 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.38 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.38 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.38 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.38 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.38 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.38 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.38 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.38 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.38 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.38 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.38 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.38 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.38 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.38 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.38 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.38 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.38 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.38 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.38 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.38 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.38 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.38 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.38 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.38 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.38 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.38 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.38 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.38 mod: runtime: O(1) [4], size: INF 1151.36/293.38 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.38 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.38 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.38 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.38 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.38 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.38 1151.36/293.38 ---------------------------------------- 1151.36/293.38 1151.36/293.38 (251) IntTrsBoundProof (UPPER BOUND(ID)) 1151.36/293.38 1151.36/293.38 Computed SIZE bound using CoFloCo for: compare#3 1151.36/293.38 after applying outer abstraction to obtain an ITS, 1151.36/293.38 resulting in: O(n^1) with polynomial bound: 3 + z 1151.36/293.38 1151.36/293.38 ---------------------------------------- 1151.36/293.38 1151.36/293.38 (252) 1151.36/293.38 Obligation: 1151.36/293.38 Complexity RNTS consisting of the following rules: 1151.36/293.38 1151.36/293.38 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.38 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.38 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.38 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.38 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.38 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.38 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.38 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.38 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.38 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.38 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.38 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.38 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.38 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.38 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.38 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.38 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.38 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.38 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.38 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.38 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.38 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.38 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.38 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.38 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.38 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.38 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.38 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.38 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.38 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.38 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.38 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.38 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.38 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.38 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.38 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.38 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.38 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.38 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.38 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.38 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.38 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.38 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.38 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.38 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.38 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.38 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.38 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.38 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.38 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.38 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.38 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.38 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.38 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.38 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.38 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.38 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.38 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.38 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.38 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.38 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.38 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.38 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.38 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.38 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.38 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.38 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.38 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.38 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.38 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.38 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.38 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.38 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.38 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.38 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.38 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.38 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.38 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.38 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.38 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.38 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.38 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.36/293.38 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.38 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.38 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.38 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.38 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.38 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.38 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.38 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.38 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.38 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.38 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.38 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.38 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.38 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.38 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.38 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.38 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.38 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.38 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.38 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.38 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.38 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.38 1151.36/293.38 Function symbols to be analyzed: {compare#3}, {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.38 Previous analysis results are: 1151.36/293.38 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.38 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.38 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.38 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.38 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.38 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.38 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.38 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.38 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.38 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.38 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.38 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.38 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.38 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.38 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.38 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.38 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.38 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.38 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.38 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.38 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.38 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.38 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.38 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.38 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.38 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.38 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.38 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.38 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.38 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.38 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.38 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.38 mod: runtime: O(1) [4], size: INF 1151.36/293.38 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.38 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.38 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.38 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.38 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.38 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.38 compare#3: runtime: ?, size: O(n^1) [3 + z] 1151.36/293.38 1151.36/293.38 ---------------------------------------- 1151.36/293.38 1151.36/293.38 (253) IntTrsBoundProof (UPPER BOUND(ID)) 1151.36/293.38 1151.36/293.38 Computed RUNTIME bound using CoFloCo for: compare#3 1151.36/293.38 after applying outer abstraction to obtain an ITS, 1151.36/293.38 resulting in: O(1) with polynomial bound: 8 1151.36/293.38 1151.36/293.38 ---------------------------------------- 1151.36/293.38 1151.36/293.38 (254) 1151.36/293.38 Obligation: 1151.36/293.38 Complexity RNTS consisting of the following rules: 1151.36/293.38 1151.36/293.38 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.38 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.38 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.38 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.38 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.38 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.38 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.38 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.38 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.38 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.38 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.38 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.38 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.38 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.38 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.38 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.38 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.38 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.38 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.38 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.38 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.38 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.38 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.38 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.38 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.38 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.38 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.38 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.38 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.38 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.38 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.38 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.38 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.38 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.38 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.38 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.38 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.38 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.38 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.38 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.38 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.38 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.38 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.38 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.38 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.38 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.38 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.38 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.38 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.38 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.38 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.38 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.38 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.38 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.38 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.38 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.39 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.39 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.39 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.39 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.39 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.39 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.39 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.39 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.39 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.39 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.39 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.39 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.39 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.39 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.39 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.39 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.39 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.39 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.39 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.39 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.39 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.39 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.39 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.39 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.39 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.39 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.39 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.39 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.39 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.39 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.39 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.39 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.39 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.39 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.39 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.39 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.39 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.39 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.39 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.39 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.39 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.39 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.39 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.39 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.39 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.39 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.39 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.39 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.39 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.39 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.39 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.39 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.39 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.39 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.39 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.39 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.39 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.39 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.39 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.36/293.39 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.39 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.39 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.39 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.39 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.39 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.39 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.39 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.39 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.39 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.39 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.39 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.39 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.39 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.39 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.39 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.39 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.39 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.39 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.39 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.39 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.39 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.39 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.39 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.39 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.39 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.39 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.39 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.39 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.39 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.39 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.39 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.39 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.39 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.39 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.39 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.39 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.39 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.39 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.39 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.39 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.39 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.39 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.39 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.39 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.39 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.39 1151.36/293.39 Function symbols to be analyzed: {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.39 Previous analysis results are: 1151.36/293.39 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.39 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.39 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.39 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.39 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.39 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.39 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.39 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.39 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.39 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.39 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.39 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.39 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.39 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.39 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.39 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.39 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.39 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.39 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.39 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.39 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.39 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.39 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.39 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.39 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.39 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.39 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.39 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.39 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.39 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.39 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.39 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.39 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.39 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.39 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.39 mod: runtime: O(1) [4], size: INF 1151.36/293.39 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.39 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.39 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.39 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.39 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.39 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.39 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.39 1151.36/293.39 ---------------------------------------- 1151.36/293.39 1151.36/293.39 (255) ResultPropagationProof (UPPER BOUND(ID)) 1151.36/293.39 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.36/293.39 ---------------------------------------- 1151.36/293.39 1151.36/293.39 (256) 1151.36/293.39 Obligation: 1151.36/293.39 Complexity RNTS consisting of the following rules: 1151.36/293.39 1151.36/293.39 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.39 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.39 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.39 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.39 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.39 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.39 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.39 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.39 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.39 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.39 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.39 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.39 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.39 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.39 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.39 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.39 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.39 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.39 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.39 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.39 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.39 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.39 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.39 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.39 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.39 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.39 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.39 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.39 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.39 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.39 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.39 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.39 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.39 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.39 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.39 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.39 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.39 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.39 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.39 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.39 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.39 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.39 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.39 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.39 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.39 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.39 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.39 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.39 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.39 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.39 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.39 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.39 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.39 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.39 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.39 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.39 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.39 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.39 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.39 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.39 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.40 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.40 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.40 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.40 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.40 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.40 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.40 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.40 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.40 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.40 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.40 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.40 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.40 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.40 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.40 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.40 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.40 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.40 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.40 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.40 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.40 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.40 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.40 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.40 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.40 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.40 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.40 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.40 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.40 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.40 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.40 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.40 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.40 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.40 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.40 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.40 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.40 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.40 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.40 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.40 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.40 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.40 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.40 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.40 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.40 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.40 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.40 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.40 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.40 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.40 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.40 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.40 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.40 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.40 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.40 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.40 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.40 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.40 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.40 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.40 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.40 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.40 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.40 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.40 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.40 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.40 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.36/293.40 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.40 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.40 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.40 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.40 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.40 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.40 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.40 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.40 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.40 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.40 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.40 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.40 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.40 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.40 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.40 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.40 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.40 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.40 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.40 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.40 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.40 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.40 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.40 1151.36/293.40 Function symbols to be analyzed: {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.40 Previous analysis results are: 1151.36/293.40 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.40 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.40 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.40 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.40 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.40 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.40 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.40 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.40 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.40 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.40 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.40 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.40 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.40 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.40 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.40 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.40 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.40 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.40 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.40 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.40 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.40 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.40 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.40 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.40 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.40 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.40 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.40 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.40 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.40 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.40 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.40 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.40 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.40 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.40 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.40 mod: runtime: O(1) [4], size: INF 1151.36/293.40 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.40 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.40 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.40 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.40 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.40 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.40 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.40 1151.36/293.40 ---------------------------------------- 1151.36/293.40 1151.36/293.40 (257) IntTrsBoundProof (UPPER BOUND(ID)) 1151.36/293.40 1151.36/293.40 Computed SIZE bound using CoFloCo for: diff 1151.36/293.40 after applying outer abstraction to obtain an ITS, 1151.36/293.40 resulting in: INF with polynomial bound: ? 1151.36/293.40 1151.36/293.40 ---------------------------------------- 1151.36/293.40 1151.36/293.40 (258) 1151.36/293.40 Obligation: 1151.36/293.40 Complexity RNTS consisting of the following rules: 1151.36/293.40 1151.36/293.40 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.40 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.40 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.40 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.40 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.40 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.40 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.40 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.40 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.40 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.40 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.40 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.40 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.40 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.40 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.40 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.40 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.40 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.40 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.40 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.40 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.40 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.40 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.40 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.40 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.40 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.40 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.40 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.40 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.40 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.40 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.40 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.40 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.40 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.40 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.40 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.40 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.40 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.40 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.40 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.40 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.40 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.40 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.40 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.40 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.40 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.40 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.40 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.40 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.40 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.40 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.40 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.40 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.40 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.40 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.40 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.40 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.40 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.40 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.40 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.40 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.40 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.40 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.40 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.40 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.40 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.40 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.40 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.40 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.40 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.40 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.40 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.40 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.40 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.40 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.40 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.40 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.40 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.40 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.40 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.40 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.40 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.40 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.36/293.40 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.40 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.40 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.40 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.40 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.40 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.40 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.40 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.40 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.40 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.40 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.40 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.40 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.40 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.40 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.40 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.40 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.40 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.40 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.40 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.40 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.40 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.40 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.40 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.40 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.40 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.40 1151.36/293.40 Function symbols to be analyzed: {diff}, {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.40 Previous analysis results are: 1151.36/293.40 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.40 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.40 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.40 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.40 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.40 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.40 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.40 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.40 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.40 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.40 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.40 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.40 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.40 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.40 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.40 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.40 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.40 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.40 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.40 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.40 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.40 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.40 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.40 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.40 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.40 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.40 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.40 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.40 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.40 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.40 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.40 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.40 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.40 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.40 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.40 mod: runtime: O(1) [4], size: INF 1151.36/293.40 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.40 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.40 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.40 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.40 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.40 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.40 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.40 diff: runtime: ?, size: INF 1151.36/293.40 1151.36/293.40 ---------------------------------------- 1151.36/293.40 1151.36/293.40 (259) IntTrsBoundProof (UPPER BOUND(ID)) 1151.36/293.40 1151.36/293.40 Computed RUNTIME bound using CoFloCo for: diff 1151.36/293.40 after applying outer abstraction to obtain an ITS, 1151.36/293.40 resulting in: O(1) with polynomial bound: 12 1151.36/293.40 1151.36/293.40 ---------------------------------------- 1151.36/293.40 1151.36/293.40 (260) 1151.36/293.40 Obligation: 1151.36/293.40 Complexity RNTS consisting of the following rules: 1151.36/293.40 1151.36/293.40 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.40 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.40 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.40 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.40 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.40 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.40 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.40 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.40 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.40 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.40 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.40 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.40 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.40 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.40 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.40 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.40 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.40 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.40 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.40 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.40 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.40 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.40 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.40 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.40 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.40 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.40 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.40 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.40 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.40 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.40 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.40 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.40 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.40 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.40 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.40 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.40 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.41 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.41 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.41 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.41 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.41 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.41 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.41 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.41 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.41 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.41 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.41 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.41 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.41 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.41 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.41 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.41 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.41 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.41 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.41 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.41 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.41 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.41 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.41 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.41 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.41 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.41 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.41 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.41 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.41 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.41 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.41 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.41 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.41 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.41 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.41 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.41 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.41 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.41 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.41 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.41 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.41 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.41 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.41 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.41 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.41 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.41 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.41 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.41 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.41 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.41 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.41 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.41 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.41 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.41 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.41 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.41 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.36/293.41 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.41 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.41 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.41 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.41 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.41 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.41 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.41 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.41 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.41 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.41 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.41 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.41 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.41 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.41 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.41 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.41 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.41 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.41 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.41 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.41 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.41 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.41 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.41 1151.36/293.41 Function symbols to be analyzed: {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.41 Previous analysis results are: 1151.36/293.41 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.41 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.41 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.41 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.41 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.41 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.41 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.41 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.41 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.41 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.41 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.41 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.41 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.41 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.41 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.41 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.41 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.41 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.41 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.41 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.41 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.41 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.41 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.41 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.41 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.41 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.41 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.41 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.41 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.41 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.41 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.41 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.41 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.41 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.41 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.41 mod: runtime: O(1) [4], size: INF 1151.36/293.41 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.41 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.41 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.41 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.41 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.41 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.41 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.41 diff: runtime: O(1) [12], size: INF 1151.36/293.41 1151.36/293.41 ---------------------------------------- 1151.36/293.41 1151.36/293.41 (261) ResultPropagationProof (UPPER BOUND(ID)) 1151.36/293.41 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.36/293.41 ---------------------------------------- 1151.36/293.41 1151.36/293.41 (262) 1151.36/293.41 Obligation: 1151.36/293.41 Complexity RNTS consisting of the following rules: 1151.36/293.41 1151.36/293.41 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.41 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.41 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.41 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.41 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.41 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.41 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.41 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.41 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.41 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.41 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.41 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.41 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.41 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.41 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.41 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.41 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.41 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.41 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.41 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.41 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.41 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.41 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.41 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.41 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.41 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.41 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.41 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.41 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.41 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.41 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.41 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.41 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.41 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.41 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.41 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.41 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.41 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.41 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.41 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.41 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.41 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.41 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.41 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.41 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.41 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.41 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.41 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.41 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.41 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.41 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.41 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.41 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.41 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.41 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.41 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.41 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.41 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.41 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.41 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.41 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.41 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.41 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.41 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.41 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.41 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.41 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.41 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.41 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.41 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.41 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.41 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.41 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.41 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.41 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.41 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.41 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.41 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.41 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.41 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.41 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.41 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.41 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.41 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.41 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.41 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.41 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.41 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.41 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.41 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.41 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.41 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.41 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.41 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.41 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.41 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.41 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.41 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.41 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.41 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.36/293.41 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.41 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.41 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.41 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.41 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.41 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.41 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.41 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.41 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.41 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.41 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.41 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.41 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.41 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.41 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.41 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.41 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.41 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.41 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.41 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.41 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.41 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.41 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.41 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.41 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.41 1151.36/293.41 Function symbols to be analyzed: {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.41 Previous analysis results are: 1151.36/293.41 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.41 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.41 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.41 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.41 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.41 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.41 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.41 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.41 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.41 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.41 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.41 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.41 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.41 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.41 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.41 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.41 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.41 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.41 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.41 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.41 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.41 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.41 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.41 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.41 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.41 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.41 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.41 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.41 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.41 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.41 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.41 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.41 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.41 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.41 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.41 mod: runtime: O(1) [4], size: INF 1151.36/293.41 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.41 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.41 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.41 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.41 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.41 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.41 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.41 diff: runtime: O(1) [12], size: INF 1151.36/293.41 1151.36/293.41 ---------------------------------------- 1151.36/293.41 1151.36/293.41 (263) IntTrsBoundProof (UPPER BOUND(ID)) 1151.36/293.41 1151.36/293.41 Computed SIZE bound using CoFloCo for: sub'#2 1151.36/293.41 after applying outer abstraction to obtain an ITS, 1151.36/293.41 resulting in: INF with polynomial bound: ? 1151.36/293.41 1151.36/293.41 Computed SIZE bound using CoFloCo for: sub'#1 1151.36/293.41 after applying outer abstraction to obtain an ITS, 1151.36/293.41 resulting in: INF with polynomial bound: ? 1151.36/293.41 1151.36/293.41 Computed SIZE bound using CoFloCo for: sub'#3 1151.36/293.41 after applying outer abstraction to obtain an ITS, 1151.36/293.41 resulting in: INF with polynomial bound: ? 1151.36/293.41 1151.36/293.41 ---------------------------------------- 1151.36/293.41 1151.36/293.41 (264) 1151.36/293.41 Obligation: 1151.36/293.41 Complexity RNTS consisting of the following rules: 1151.36/293.41 1151.36/293.41 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.41 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.41 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.41 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.41 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.41 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.41 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.41 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.41 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.41 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.41 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.41 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.41 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.41 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.41 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.41 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.41 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.41 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.41 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.41 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.41 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.41 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.41 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.41 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.41 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.41 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.41 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.41 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.41 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.41 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.41 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.41 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.41 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.41 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.41 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.41 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.41 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.41 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.41 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.41 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.41 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.41 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.41 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.41 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.41 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.41 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.41 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.41 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.41 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.41 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.41 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.41 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.41 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.41 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.41 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.41 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.41 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.41 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.41 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.41 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.41 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.41 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.41 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.41 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.41 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.41 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.41 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.41 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.41 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.41 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.41 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.41 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.41 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.41 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.41 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.41 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.41 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.41 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.41 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.41 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.41 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.41 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.41 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.41 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.41 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.41 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.41 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.41 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.41 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.41 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.41 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.41 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.41 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.41 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.41 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.41 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.42 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.42 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.42 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.42 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.42 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.42 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.42 1151.36/293.42 Function symbols to be analyzed: {sub'#2,sub'#1,sub'#3}, {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.42 Previous analysis results are: 1151.36/293.42 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.42 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.42 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.42 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.42 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.42 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.42 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.42 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.42 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.42 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.42 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.42 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.42 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.42 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.42 mod: runtime: O(1) [4], size: INF 1151.36/293.42 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.42 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.42 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.42 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.42 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.42 diff: runtime: O(1) [12], size: INF 1151.36/293.42 sub'#2: runtime: ?, size: INF 1151.36/293.42 sub'#1: runtime: ?, size: INF 1151.36/293.42 sub'#3: runtime: ?, size: INF 1151.36/293.42 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (265) IntTrsBoundProof (UPPER BOUND(ID)) 1151.36/293.42 1151.36/293.42 Computed RUNTIME bound using CoFloCo for: sub'#2 1151.36/293.42 after applying outer abstraction to obtain an ITS, 1151.36/293.42 resulting in: O(n^1) with polynomial bound: 60 + 20*z1 1151.36/293.42 1151.36/293.42 Computed RUNTIME bound using CoFloCo for: sub'#1 1151.36/293.42 after applying outer abstraction to obtain an ITS, 1151.36/293.42 resulting in: O(n^1) with polynomial bound: 41 + 20*z 1151.36/293.42 1151.36/293.42 Computed RUNTIME bound using CoFloCo for: sub'#3 1151.36/293.42 after applying outer abstraction to obtain an ITS, 1151.36/293.42 resulting in: O(n^1) with polynomial bound: 47 + 20*z' 1151.36/293.42 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (266) 1151.36/293.42 Obligation: 1151.36/293.42 Complexity RNTS consisting of the following rules: 1151.36/293.42 1151.36/293.42 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.42 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.42 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.42 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.42 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.42 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.42 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.42 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.42 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.42 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.42 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.42 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.42 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.42 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.42 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.42 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.42 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.42 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.42 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.42 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.42 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.42 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.42 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.42 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.42 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.42 sub'(z, z', z'') -{ 1 }-> sub'#1(z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 1 }-> sub'#2(z', z'', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 13 }-> sub'#3(1 + s88 + s71, z1, @ys) :|: s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 2 }-> sub'#4(sub'#1(z', z'', @r'), @z) :|: z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.42 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.42 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.42 1151.36/293.42 Function symbols to be analyzed: {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.42 Previous analysis results are: 1151.36/293.42 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.42 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.42 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.42 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.42 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.42 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.42 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.42 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.42 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.42 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.42 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.42 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.42 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.42 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.42 mod: runtime: O(1) [4], size: INF 1151.36/293.42 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.42 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.42 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.42 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.42 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.42 diff: runtime: O(1) [12], size: INF 1151.36/293.42 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.36/293.42 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.36/293.42 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.36/293.42 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (267) ResultPropagationProof (UPPER BOUND(ID)) 1151.36/293.42 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (268) 1151.36/293.42 Obligation: 1151.36/293.42 Complexity RNTS consisting of the following rules: 1151.36/293.42 1151.36/293.42 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.42 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.42 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.42 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.42 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.42 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.42 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.42 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.42 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.42 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.42 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.42 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.42 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.42 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.42 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.42 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.42 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.42 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.42 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.42 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.42 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.42 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.42 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.42 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.42 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.42 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.42 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.42 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.42 1151.36/293.42 Function symbols to be analyzed: {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.42 Previous analysis results are: 1151.36/293.42 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.42 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.42 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.42 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.42 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.42 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.42 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.42 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.42 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.42 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.42 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.42 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.42 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.42 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.42 mod: runtime: O(1) [4], size: INF 1151.36/293.42 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.42 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.42 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.42 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.42 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.42 diff: runtime: O(1) [12], size: INF 1151.36/293.42 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.36/293.42 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.36/293.42 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.36/293.42 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (269) IntTrsBoundProof (UPPER BOUND(ID)) 1151.36/293.42 1151.36/293.42 Computed SIZE bound using CoFloCo for: add 1151.36/293.42 after applying outer abstraction to obtain an ITS, 1151.36/293.42 resulting in: O(n^1) with polynomial bound: 32*z 1151.36/293.42 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (270) 1151.36/293.42 Obligation: 1151.36/293.42 Complexity RNTS consisting of the following rules: 1151.36/293.42 1151.36/293.42 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.42 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.42 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.42 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.42 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.42 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.42 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.42 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.42 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.42 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.42 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.42 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.42 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.42 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.42 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.42 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.42 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.42 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.42 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.42 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.42 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.42 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.42 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.42 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.42 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.42 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.42 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.42 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.42 1151.36/293.42 Function symbols to be analyzed: {add}, {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.42 Previous analysis results are: 1151.36/293.42 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.42 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.42 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.42 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.42 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.42 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.42 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.42 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.42 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.42 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.42 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.42 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.42 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.42 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.42 mod: runtime: O(1) [4], size: INF 1151.36/293.42 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.42 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.42 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.42 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.42 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.42 diff: runtime: O(1) [12], size: INF 1151.36/293.42 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.36/293.42 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.36/293.42 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.36/293.42 add: runtime: ?, size: O(n^1) [32*z] 1151.36/293.42 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (271) IntTrsBoundProof (UPPER BOUND(ID)) 1151.36/293.42 1151.36/293.42 Computed RUNTIME bound using CoFloCo for: add 1151.36/293.42 after applying outer abstraction to obtain an ITS, 1151.36/293.42 resulting in: O(n^1) with polynomial bound: 7 + 16*z + 48*z' 1151.36/293.42 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (272) 1151.36/293.42 Obligation: 1151.36/293.42 Complexity RNTS consisting of the following rules: 1151.36/293.42 1151.36/293.42 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.42 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.42 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.42 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.42 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.42 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.42 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.42 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.42 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.42 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.42 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.42 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.42 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.42 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.42 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.42 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.42 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.42 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.42 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.42 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.42 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.42 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.42 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.42 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.42 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 1 }-> add(z', z'') :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.42 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.42 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.42 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.42 1151.36/293.42 Function symbols to be analyzed: {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.42 Previous analysis results are: 1151.36/293.42 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.42 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.42 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.42 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.42 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.42 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.42 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.42 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.42 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.42 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.42 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.42 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.42 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.42 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.42 mod: runtime: O(1) [4], size: INF 1151.36/293.42 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.42 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.42 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.42 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.42 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.42 diff: runtime: O(1) [12], size: INF 1151.36/293.42 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.36/293.42 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.36/293.42 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.36/293.42 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (273) ResultPropagationProof (UPPER BOUND(ID)) 1151.36/293.42 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (274) 1151.36/293.42 Obligation: 1151.36/293.42 Complexity RNTS consisting of the following rules: 1151.36/293.42 1151.36/293.42 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.42 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.42 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.42 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.42 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.42 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.42 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.42 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.42 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.42 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.42 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.42 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.42 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.42 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.42 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.42 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.42 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.42 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.42 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.42 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.42 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.42 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.42 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.42 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.42 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.42 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.42 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.42 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.42 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.42 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.42 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.42 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.42 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.42 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.42 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.42 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.42 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.42 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.42 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.42 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.42 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.42 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.42 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.42 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.42 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.42 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.42 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.42 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.42 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.42 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.42 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.42 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.42 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.42 1151.36/293.42 Function symbols to be analyzed: {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.42 Previous analysis results are: 1151.36/293.42 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.42 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.42 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.42 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.42 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.42 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.42 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.42 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.42 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.42 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.42 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.42 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.42 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.42 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.42 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.42 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.42 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.42 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.42 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.42 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.42 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.42 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.42 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.42 mod: runtime: O(1) [4], size: INF 1151.36/293.42 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.42 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.42 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.42 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.42 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.42 diff: runtime: O(1) [12], size: INF 1151.36/293.42 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.36/293.42 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.36/293.42 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.36/293.42 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.42 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (275) IntTrsBoundProof (UPPER BOUND(ID)) 1151.36/293.42 1151.36/293.42 Computed SIZE bound using CoFloCo for: compare#1 1151.36/293.42 after applying outer abstraction to obtain an ITS, 1151.36/293.42 resulting in: O(n^1) with polynomial bound: 3*z' 1151.36/293.42 1151.36/293.42 Computed SIZE bound using CoFloCo for: compare#2 1151.36/293.42 after applying outer abstraction to obtain an ITS, 1151.36/293.42 resulting in: O(n^1) with polynomial bound: 3*z 1151.36/293.42 1151.36/293.42 ---------------------------------------- 1151.36/293.42 1151.36/293.42 (276) 1151.36/293.42 Obligation: 1151.36/293.42 Complexity RNTS consisting of the following rules: 1151.36/293.42 1151.36/293.42 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.42 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.42 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.42 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.42 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.42 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.42 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.42 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.42 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.42 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.42 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.42 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.43 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.43 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.43 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.43 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.43 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.43 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.43 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.43 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.43 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.43 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.43 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.43 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.43 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.43 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.43 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.43 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.43 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.43 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.43 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.43 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.43 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.43 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.43 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.43 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.43 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.43 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.43 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.43 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.43 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.43 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.43 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.43 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.43 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.43 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.43 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.43 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.43 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.43 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.43 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.43 1151.36/293.43 Function symbols to be analyzed: {compare#1,compare#2}, {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.43 Previous analysis results are: 1151.36/293.43 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.43 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.43 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.43 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.43 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.43 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.43 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.43 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.43 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.43 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.43 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.43 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.43 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.43 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.43 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.43 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.43 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.43 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.43 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.43 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.43 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.43 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.43 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.43 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.43 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.43 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.43 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.43 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.43 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.43 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.43 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.43 mod: runtime: O(1) [4], size: INF 1151.36/293.43 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.43 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.43 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.43 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.43 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.43 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.43 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.43 diff: runtime: O(1) [12], size: INF 1151.36/293.43 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.36/293.43 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.36/293.43 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.36/293.43 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.43 compare#1: runtime: ?, size: O(n^1) [3*z'] 1151.36/293.43 compare#2: runtime: ?, size: O(n^1) [3*z] 1151.36/293.43 1151.36/293.43 ---------------------------------------- 1151.36/293.43 1151.36/293.43 (277) IntTrsBoundProof (UPPER BOUND(ID)) 1151.36/293.43 1151.36/293.43 Computed RUNTIME bound using CoFloCo for: compare#1 1151.36/293.43 after applying outer abstraction to obtain an ITS, 1151.36/293.43 resulting in: O(n^1) with polynomial bound: 25 + 11*z' 1151.36/293.43 1151.36/293.43 Computed RUNTIME bound using CoFloCo for: compare#2 1151.36/293.43 after applying outer abstraction to obtain an ITS, 1151.36/293.43 resulting in: O(n^1) with polynomial bound: 24 + 11*z 1151.36/293.43 1151.36/293.43 ---------------------------------------- 1151.36/293.43 1151.36/293.43 (278) 1151.36/293.43 Obligation: 1151.36/293.43 Complexity RNTS consisting of the following rules: 1151.36/293.43 1151.36/293.43 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.43 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.43 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.43 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.43 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.43 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.43 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.43 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.43 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.43 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.43 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.43 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.43 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.43 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.43 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.43 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.43 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.43 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.43 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.43 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.43 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.43 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.43 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.43 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.43 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.43 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.43 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.43 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.43 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare(z, z') -{ 1 }-> compare#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.43 compare#1(z, z') -{ 1 }-> compare#2(z', @x, @xs) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare#2(z, z', z'') -{ 2 }-> compare#3(compare#1(z'', @ys), z', @y) :|: z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.43 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.43 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.43 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.43 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.43 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.43 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.43 leq(z, z') -{ 2 }-> #less(compare#1(z, z'), 1 + (1 + 0)) :|: z' >= 0, z >= 0 1151.36/293.43 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.43 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.43 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.43 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.43 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.43 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.43 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.43 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.43 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.43 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.43 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.43 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.43 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.43 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.43 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.43 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.43 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.43 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.43 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.43 1151.36/293.43 Function symbols to be analyzed: {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.43 Previous analysis results are: 1151.36/293.43 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.43 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.43 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.43 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.43 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.43 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.43 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.43 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.43 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.43 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.43 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.43 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.43 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.43 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.43 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.43 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.43 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.43 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.43 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.43 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.43 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.43 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.43 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.43 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.43 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.43 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.43 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.43 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.43 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.43 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.43 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.43 mod: runtime: O(1) [4], size: INF 1151.36/293.43 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.43 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.43 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.43 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.43 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.43 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.43 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.43 diff: runtime: O(1) [12], size: INF 1151.36/293.43 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.36/293.43 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.36/293.43 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.36/293.43 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.43 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.36/293.43 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.36/293.43 1151.36/293.43 ---------------------------------------- 1151.36/293.43 1151.36/293.43 (279) ResultPropagationProof (UPPER BOUND(ID)) 1151.36/293.43 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.36/293.43 ---------------------------------------- 1151.36/293.43 1151.36/293.43 (280) 1151.36/293.43 Obligation: 1151.36/293.43 Complexity RNTS consisting of the following rules: 1151.36/293.43 1151.36/293.43 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.43 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.43 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.43 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.43 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.43 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.43 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.43 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.43 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.43 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.43 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.43 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.43 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.43 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.43 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.43 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.43 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.43 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.43 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.43 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.43 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.43 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.43 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.43 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.43 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.43 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.43 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.43 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.43 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.36/293.43 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.43 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.43 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.43 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.43 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.43 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.43 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.43 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.36/293.43 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.43 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.43 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.43 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.43 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.43 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.43 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.43 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.43 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.43 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.43 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.43 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.43 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.43 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.43 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.43 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.43 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.43 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.43 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.43 1151.36/293.43 Function symbols to be analyzed: {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.43 Previous analysis results are: 1151.36/293.43 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.43 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.43 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.36/293.43 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.36/293.43 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.36/293.43 #and: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.36/293.43 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 #compare: runtime: O(1) [0], size: O(1) [3] 1151.36/293.43 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.36/293.43 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.43 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.43 #greater: runtime: O(1) [1], size: O(1) [2] 1151.36/293.43 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.43 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.43 #eq: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 #less: runtime: O(1) [1], size: O(1) [2] 1151.36/293.43 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.36/293.43 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.36/293.43 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.43 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.36/293.43 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.36/293.43 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.36/293.43 #equal: runtime: O(1) [1], size: O(1) [2] 1151.36/293.43 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.36/293.43 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.36/293.43 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.36/293.43 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.36/293.43 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.36/293.43 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.36/293.43 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.36/293.43 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.36/293.43 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.36/293.43 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.36/293.43 mod: runtime: O(1) [4], size: INF 1151.36/293.43 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.36/293.43 sum: runtime: O(1) [12], size: O(1) [7] 1151.36/293.43 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.36/293.43 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.43 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.43 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.36/293.43 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.36/293.43 diff: runtime: O(1) [12], size: INF 1151.36/293.43 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.36/293.43 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.36/293.43 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.36/293.43 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.36/293.43 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.36/293.43 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.36/293.43 1151.36/293.43 ---------------------------------------- 1151.36/293.43 1151.36/293.43 (281) IntTrsBoundProof (UPPER BOUND(ID)) 1151.36/293.43 1151.36/293.43 Computed SIZE bound using CoFloCo for: sub' 1151.36/293.43 after applying outer abstraction to obtain an ITS, 1151.36/293.43 resulting in: INF with polynomial bound: ? 1151.36/293.43 1151.36/293.43 ---------------------------------------- 1151.36/293.43 1151.36/293.43 (282) 1151.36/293.43 Obligation: 1151.36/293.43 Complexity RNTS consisting of the following rules: 1151.36/293.43 1151.36/293.43 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.36/293.43 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.36/293.43 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.36/293.43 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.36/293.43 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.36/293.43 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.43 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.36/293.43 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.36/293.43 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.36/293.43 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.36/293.43 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.43 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.36/293.43 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.36/293.43 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.36/293.43 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.36/293.43 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.43 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.43 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.43 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.43 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.36/293.43 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.43 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.36/293.43 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.36/293.43 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.36/293.43 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.36/293.43 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.43 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.43 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.43 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.43 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.36/293.43 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.36/293.43 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.36/293.43 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.36/293.43 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.36/293.43 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.36/293.43 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.36/293.43 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.43 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.43 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.36/293.43 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.36/293.43 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.36/293.43 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.36/293.43 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.36/293.43 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.36/293.43 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.36/293.43 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.43 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.43 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.36/293.43 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.36/293.43 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.36/293.43 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.36/293.43 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.43 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.36/293.43 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.36/293.43 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.36/293.43 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.36/293.43 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.36/293.43 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.36/293.43 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.43 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.36/293.43 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.36/293.43 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.36/293.43 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.36/293.43 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.36/293.43 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.36/293.43 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.36/293.43 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.36/293.43 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.36/293.43 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.36/293.43 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.36/293.43 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.36/293.43 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.36/293.43 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.36/293.43 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.36/293.43 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.36/293.43 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.43 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.36/293.43 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.36/293.43 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.36/293.43 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.36/293.43 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.36/293.43 1151.36/293.43 Function symbols to be analyzed: {sub'}, {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.36/293.43 Previous analysis results are: 1151.36/293.43 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.36/293.43 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.36/293.43 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.36/293.43 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.44 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.44 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.44 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.44 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.44 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.44 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.44 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.44 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.44 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.44 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.44 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.44 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.44 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.44 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.44 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.44 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.44 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.44 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.44 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.44 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.44 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.44 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.44 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.44 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.44 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.44 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.44 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.44 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.44 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.44 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.44 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.44 mod: runtime: O(1) [4], size: INF 1151.62/293.44 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.44 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.44 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.44 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.44 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.44 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.44 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.44 diff: runtime: O(1) [12], size: INF 1151.62/293.44 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.44 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.44 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.44 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.44 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.44 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.44 sub': runtime: ?, size: INF 1151.62/293.44 1151.62/293.44 ---------------------------------------- 1151.62/293.44 1151.62/293.44 (283) IntTrsBoundProof (UPPER BOUND(ID)) 1151.62/293.44 1151.62/293.44 Computed RUNTIME bound using KoAT for: sub' 1151.62/293.44 after applying outer abstraction to obtain an ITS, 1151.62/293.44 resulting in: O(n^1) with polynomial bound: 42 + 20*z 1151.62/293.44 1151.62/293.44 ---------------------------------------- 1151.62/293.44 1151.62/293.44 (284) 1151.62/293.44 Obligation: 1151.62/293.44 Complexity RNTS consisting of the following rules: 1151.62/293.44 1151.62/293.44 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.44 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.44 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.44 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.44 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.44 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.44 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.44 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.44 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.44 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.44 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.44 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.44 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.44 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.44 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.44 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.44 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.44 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.44 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.44 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.44 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.44 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.44 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.44 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.44 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.44 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.44 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.44 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.44 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.44 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.44 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.44 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.44 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.44 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.44 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.44 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.44 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.44 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.44 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.44 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.44 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.44 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.44 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.44 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.44 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.44 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.44 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.44 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.44 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.44 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.44 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.44 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.44 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.44 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.44 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.44 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.44 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.44 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.44 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.44 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.44 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.44 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.44 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.44 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.44 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.44 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.44 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.44 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.44 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.44 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.44 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.44 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.44 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.44 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.44 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.44 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.44 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.44 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.44 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.44 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.44 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.44 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.44 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.44 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.44 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.44 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.44 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.44 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.44 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.44 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.44 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.44 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.44 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.44 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.44 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.44 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.44 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.44 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.44 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.44 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.44 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.44 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.44 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.44 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.44 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.44 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.45 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.45 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.45 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.45 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.45 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.45 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 sub(z, z') -{ 2 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.62/293.45 sub(z, z') -{ 1 }-> sub#1(sub'(z, z', 0)) :|: z' >= 0, z >= 0 1151.62/293.45 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.45 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.45 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.45 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.45 1151.62/293.45 Function symbols to be analyzed: {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.45 Previous analysis results are: 1151.62/293.45 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.45 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.45 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.45 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.45 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.45 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.45 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.45 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.45 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.45 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.45 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.45 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.45 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.45 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.45 mod: runtime: O(1) [4], size: INF 1151.62/293.45 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.45 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.45 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.45 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.45 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.45 diff: runtime: O(1) [12], size: INF 1151.62/293.45 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.45 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.45 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.45 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.45 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.45 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.45 1151.62/293.45 ---------------------------------------- 1151.62/293.45 1151.62/293.45 (285) ResultPropagationProof (UPPER BOUND(ID)) 1151.62/293.45 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.62/293.45 ---------------------------------------- 1151.62/293.45 1151.62/293.45 (286) 1151.62/293.45 Obligation: 1151.62/293.45 Complexity RNTS consisting of the following rules: 1151.62/293.45 1151.62/293.45 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.45 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.45 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.45 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.45 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.45 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.45 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.45 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.45 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.45 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.45 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.45 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.45 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.45 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.45 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.45 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.45 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.45 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.45 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.45 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.45 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.45 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.45 1151.62/293.45 Function symbols to be analyzed: {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.45 Previous analysis results are: 1151.62/293.45 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.45 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.45 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.45 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.45 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.45 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.45 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.45 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.45 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.45 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.45 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.45 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.45 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.45 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.45 mod: runtime: O(1) [4], size: INF 1151.62/293.45 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.45 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.45 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.45 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.45 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.45 diff: runtime: O(1) [12], size: INF 1151.62/293.45 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.45 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.45 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.45 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.45 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.45 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.45 1151.62/293.45 ---------------------------------------- 1151.62/293.45 1151.62/293.45 (287) IntTrsBoundProof (UPPER BOUND(ID)) 1151.62/293.45 1151.62/293.45 Computed SIZE bound using CoFloCo for: mult#3 1151.62/293.45 after applying outer abstraction to obtain an ITS, 1151.62/293.45 resulting in: O(n^1) with polynomial bound: 32*z' + z'' 1151.62/293.45 1151.62/293.45 ---------------------------------------- 1151.62/293.45 1151.62/293.45 (288) 1151.62/293.45 Obligation: 1151.62/293.45 Complexity RNTS consisting of the following rules: 1151.62/293.45 1151.62/293.45 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.45 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.45 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.45 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.45 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.45 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.45 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.45 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.45 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.45 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.45 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.45 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.45 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.45 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.45 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.45 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.45 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.45 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.45 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.45 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.45 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.45 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.45 1151.62/293.45 Function symbols to be analyzed: {mult#3}, {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.45 Previous analysis results are: 1151.62/293.45 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.45 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.45 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.45 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.45 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.45 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.45 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.45 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.45 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.45 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.45 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.45 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.45 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.45 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.45 mod: runtime: O(1) [4], size: INF 1151.62/293.45 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.45 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.45 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.45 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.45 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.45 diff: runtime: O(1) [12], size: INF 1151.62/293.45 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.45 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.45 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.45 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.45 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.45 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.45 mult#3: runtime: ?, size: O(n^1) [32*z' + z''] 1151.62/293.45 1151.62/293.45 ---------------------------------------- 1151.62/293.45 1151.62/293.45 (289) IntTrsBoundProof (UPPER BOUND(ID)) 1151.62/293.45 1151.62/293.45 Computed RUNTIME bound using CoFloCo for: mult#3 1151.62/293.45 after applying outer abstraction to obtain an ITS, 1151.62/293.45 resulting in: O(n^1) with polynomial bound: 8 + 16*z' + 48*z'' 1151.62/293.45 1151.62/293.45 ---------------------------------------- 1151.62/293.45 1151.62/293.45 (290) 1151.62/293.45 Obligation: 1151.62/293.45 Complexity RNTS consisting of the following rules: 1151.62/293.45 1151.62/293.45 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.45 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.45 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.45 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.45 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.45 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.45 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.45 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.45 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.45 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.45 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.45 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.45 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.45 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.45 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.45 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.45 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 mult#2(z, z', z'') -{ 2 }-> mult#3(s38, z', z) :|: s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.45 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.45 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.45 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.45 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.45 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.45 1151.62/293.45 Function symbols to be analyzed: {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.45 Previous analysis results are: 1151.62/293.45 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.45 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.45 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.45 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.45 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.45 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.45 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.45 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.45 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.45 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.45 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.45 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.45 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.45 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.45 mod: runtime: O(1) [4], size: INF 1151.62/293.45 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.45 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.45 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.45 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.45 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.45 diff: runtime: O(1) [12], size: INF 1151.62/293.45 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.45 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.45 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.45 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.45 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.45 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.45 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.62/293.45 1151.62/293.45 ---------------------------------------- 1151.62/293.45 1151.62/293.45 (291) ResultPropagationProof (UPPER BOUND(ID)) 1151.62/293.45 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.62/293.45 ---------------------------------------- 1151.62/293.45 1151.62/293.45 (292) 1151.62/293.45 Obligation: 1151.62/293.45 Complexity RNTS consisting of the following rules: 1151.62/293.45 1151.62/293.45 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.45 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.45 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.45 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.45 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.45 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.45 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.45 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.45 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.45 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.45 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.45 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.45 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.45 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.45 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.45 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.45 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.45 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.45 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.45 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.45 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.45 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.45 1151.62/293.45 Function symbols to be analyzed: {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.45 Previous analysis results are: 1151.62/293.45 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.45 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.45 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.45 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.45 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.45 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.45 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.45 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.45 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.45 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.45 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.45 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.45 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.45 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.45 mod: runtime: O(1) [4], size: INF 1151.62/293.45 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.45 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.45 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.45 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.45 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.45 diff: runtime: O(1) [12], size: INF 1151.62/293.45 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.45 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.45 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.45 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.45 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.45 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.45 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.45 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.62/293.45 1151.62/293.45 ---------------------------------------- 1151.62/293.45 1151.62/293.45 (293) IntTrsBoundProof (UPPER BOUND(ID)) 1151.62/293.45 1151.62/293.45 Computed SIZE bound using CoFloCo for: leq 1151.62/293.45 after applying outer abstraction to obtain an ITS, 1151.62/293.45 resulting in: O(1) with polynomial bound: 2 1151.62/293.45 1151.62/293.45 ---------------------------------------- 1151.62/293.45 1151.62/293.45 (294) 1151.62/293.45 Obligation: 1151.62/293.45 Complexity RNTS consisting of the following rules: 1151.62/293.45 1151.62/293.45 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.45 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.45 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.45 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.45 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.45 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.45 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.45 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.45 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.45 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.45 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.45 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.45 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.45 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.45 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.45 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.45 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.45 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.45 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.45 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.45 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.45 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.45 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.45 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.45 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.45 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.45 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.45 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.45 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.45 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.45 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.45 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.45 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.45 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.45 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.45 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.45 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.45 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.45 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.45 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.45 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.45 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.45 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.45 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.45 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.45 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.45 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.45 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.45 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.45 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.45 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.45 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.45 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.45 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.45 1151.62/293.45 Function symbols to be analyzed: {leq}, {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.45 Previous analysis results are: 1151.62/293.45 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.45 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.45 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.45 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.45 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.45 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.45 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.45 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.45 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.45 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.45 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.45 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.45 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.45 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.45 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.45 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.45 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.45 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.45 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.45 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.45 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.45 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.45 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.45 mod: runtime: O(1) [4], size: INF 1151.62/293.45 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.45 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.45 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.46 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.46 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.46 diff: runtime: O(1) [12], size: INF 1151.62/293.46 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.46 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.46 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.46 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.46 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.46 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.46 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.62/293.46 leq: runtime: ?, size: O(1) [2] 1151.62/293.46 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (295) IntTrsBoundProof (UPPER BOUND(ID)) 1151.62/293.46 1151.62/293.46 Computed RUNTIME bound using CoFloCo for: leq 1151.62/293.46 after applying outer abstraction to obtain an ITS, 1151.62/293.46 resulting in: O(n^1) with polynomial bound: 28 + 11*z' 1151.62/293.46 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (296) 1151.62/293.46 Obligation: 1151.62/293.46 Complexity RNTS consisting of the following rules: 1151.62/293.46 1151.62/293.46 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.46 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.46 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.46 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.46 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.46 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.46 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.46 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.46 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.46 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.46 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.46 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.46 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.46 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.46 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.46 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.46 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.46 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.46 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.46 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.46 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.46 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.46 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.46 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.46 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.46 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.46 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.46 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.46 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.46 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.46 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.46 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.46 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.46 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.46 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.46 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.46 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.46 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.46 1151.62/293.46 Function symbols to be analyzed: {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.46 Previous analysis results are: 1151.62/293.46 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.46 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.46 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.46 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.46 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.46 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.46 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.46 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.46 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.46 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.46 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.46 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.46 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.46 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.46 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.46 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.46 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.46 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.46 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.46 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.46 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.46 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.46 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.46 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.46 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.46 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.46 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.46 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.46 mod: runtime: O(1) [4], size: INF 1151.62/293.46 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.46 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.46 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.46 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.46 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.46 diff: runtime: O(1) [12], size: INF 1151.62/293.46 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.46 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.46 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.46 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.46 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.46 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.46 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.62/293.46 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.62/293.46 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (297) ResultPropagationProof (UPPER BOUND(ID)) 1151.62/293.46 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (298) 1151.62/293.46 Obligation: 1151.62/293.46 Complexity RNTS consisting of the following rules: 1151.62/293.46 1151.62/293.46 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.46 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.46 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.46 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.46 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.46 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.46 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.46 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.46 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.46 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.46 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.46 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.46 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.46 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.46 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.46 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.46 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.46 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.46 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.46 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.46 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.46 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.46 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.46 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.46 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.46 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.46 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.46 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.46 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.46 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.46 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.46 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.46 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.46 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.46 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.46 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.46 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.46 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.46 1151.62/293.46 Function symbols to be analyzed: {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.46 Previous analysis results are: 1151.62/293.46 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.46 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.46 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.46 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.46 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.46 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.46 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.46 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.46 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.46 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.46 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.46 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.46 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.46 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.46 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.46 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.46 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.46 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.46 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.46 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.46 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.46 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.46 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.46 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.46 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.46 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.46 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.46 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.46 mod: runtime: O(1) [4], size: INF 1151.62/293.46 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.46 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.46 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.46 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.46 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.46 diff: runtime: O(1) [12], size: INF 1151.62/293.46 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.46 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.46 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.46 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.46 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.46 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.46 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.62/293.46 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.62/293.46 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (299) IntTrsBoundProof (UPPER BOUND(ID)) 1151.62/293.46 1151.62/293.46 Computed SIZE bound using CoFloCo for: compare 1151.62/293.46 after applying outer abstraction to obtain an ITS, 1151.62/293.46 resulting in: O(n^1) with polynomial bound: 3*z' 1151.62/293.46 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (300) 1151.62/293.46 Obligation: 1151.62/293.46 Complexity RNTS consisting of the following rules: 1151.62/293.46 1151.62/293.46 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.46 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.46 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.46 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.46 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.46 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.46 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.46 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.46 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.46 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.46 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.46 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.46 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.46 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.46 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.46 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.46 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.46 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.46 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.46 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.46 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.46 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.46 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.46 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.46 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.46 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.46 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.46 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.46 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.46 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.46 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.46 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.46 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.46 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.46 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.46 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.46 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.46 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.46 1151.62/293.46 Function symbols to be analyzed: {compare}, {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.46 Previous analysis results are: 1151.62/293.46 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.46 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.46 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.46 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.46 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.46 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.46 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.46 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.46 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.46 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.46 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.46 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.46 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.46 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.46 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.46 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.46 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.46 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.46 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.46 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.46 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.46 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.46 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.46 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.46 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.46 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.46 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.46 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.46 mod: runtime: O(1) [4], size: INF 1151.62/293.46 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.46 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.46 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.46 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.46 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.46 diff: runtime: O(1) [12], size: INF 1151.62/293.46 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.46 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.46 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.46 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.46 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.46 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.46 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.62/293.46 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.62/293.46 compare: runtime: ?, size: O(n^1) [3*z'] 1151.62/293.46 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (301) IntTrsBoundProof (UPPER BOUND(ID)) 1151.62/293.46 1151.62/293.46 Computed RUNTIME bound using CoFloCo for: compare 1151.62/293.46 after applying outer abstraction to obtain an ITS, 1151.62/293.46 resulting in: O(n^1) with polynomial bound: 26 + 11*z' 1151.62/293.46 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (302) 1151.62/293.46 Obligation: 1151.62/293.46 Complexity RNTS consisting of the following rules: 1151.62/293.46 1151.62/293.46 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.46 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.46 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.46 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.46 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.46 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.46 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.46 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.46 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.46 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.46 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.46 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.46 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.46 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.46 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.46 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.46 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.46 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.46 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.46 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.46 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.46 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.46 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.46 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.46 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.46 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.46 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.46 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.46 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.46 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.46 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.46 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.46 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.46 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.46 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.46 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.46 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.46 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.46 1151.62/293.46 Function symbols to be analyzed: {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.46 Previous analysis results are: 1151.62/293.46 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.46 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.46 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.46 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.46 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.46 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.46 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.46 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.46 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.46 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.46 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.46 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.46 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.46 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.46 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.46 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.46 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.46 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.46 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.46 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.46 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.46 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.46 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.46 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.46 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.46 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.46 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.46 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.46 mod: runtime: O(1) [4], size: INF 1151.62/293.46 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.46 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.46 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.46 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.46 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.46 diff: runtime: O(1) [12], size: INF 1151.62/293.46 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.46 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.46 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.46 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.46 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.46 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.46 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.62/293.46 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.62/293.46 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.46 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (303) ResultPropagationProof (UPPER BOUND(ID)) 1151.62/293.46 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (304) 1151.62/293.46 Obligation: 1151.62/293.46 Complexity RNTS consisting of the following rules: 1151.62/293.46 1151.62/293.46 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.46 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.46 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.46 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.46 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.46 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.46 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.46 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.46 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.46 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.46 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.46 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.46 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.46 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.46 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.46 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.46 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.46 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.46 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.46 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.46 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.46 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.46 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.46 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.46 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.46 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.46 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.46 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.46 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.46 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.46 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.46 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.46 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.46 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.46 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.46 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.46 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.46 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.46 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.46 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.46 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.46 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.46 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.46 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.46 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.46 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.46 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.46 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.46 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.46 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.46 1151.62/293.46 Function symbols to be analyzed: {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.46 Previous analysis results are: 1151.62/293.46 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.46 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.46 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.46 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.46 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.46 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.46 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.46 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.46 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.46 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.46 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.46 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.46 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.46 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.46 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.46 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.46 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.46 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.46 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.46 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.46 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.46 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.46 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.46 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.46 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.46 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.46 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.46 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.46 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.46 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.46 mod: runtime: O(1) [4], size: INF 1151.62/293.46 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.46 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.46 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.46 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.46 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.46 diff: runtime: O(1) [12], size: INF 1151.62/293.46 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.46 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.46 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.46 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.46 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.46 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.46 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.46 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.62/293.46 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.62/293.46 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.46 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (305) IntTrsBoundProof (UPPER BOUND(ID)) 1151.62/293.46 1151.62/293.46 Computed SIZE bound using CoFloCo for: sub 1151.62/293.46 after applying outer abstraction to obtain an ITS, 1151.62/293.46 resulting in: INF with polynomial bound: ? 1151.62/293.46 1151.62/293.46 ---------------------------------------- 1151.62/293.46 1151.62/293.46 (306) 1151.62/293.46 Obligation: 1151.62/293.46 Complexity RNTS consisting of the following rules: 1151.62/293.46 1151.62/293.46 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.46 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.46 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.46 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.46 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.46 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.46 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.46 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.46 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.46 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.46 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.46 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.46 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.46 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.46 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.46 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.46 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.46 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.46 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.47 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.47 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.47 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.47 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.47 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.47 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.47 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.47 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.47 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.47 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.47 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.47 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.47 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.47 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.47 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.47 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.47 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.47 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.47 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.47 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.47 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.47 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.47 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.47 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.47 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.47 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.47 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.47 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.47 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.47 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.47 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.47 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.47 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.47 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.47 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.47 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.47 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.47 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.47 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.47 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.47 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.47 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.47 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.47 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.47 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.47 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.47 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.47 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.47 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.47 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.47 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.47 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.47 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.47 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.47 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.47 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.47 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.47 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.47 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.47 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.47 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.47 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.47 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.47 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.47 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.47 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.47 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.47 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.47 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.47 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.47 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.47 1151.62/293.47 Function symbols to be analyzed: {sub}, {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.47 Previous analysis results are: 1151.62/293.47 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.47 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.47 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.47 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.47 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.47 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.47 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.47 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.47 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.47 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.47 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.47 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.47 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.47 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.47 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.47 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.47 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.47 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.47 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.47 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.47 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.47 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.47 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.47 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.47 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.47 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.47 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.47 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.47 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.47 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.47 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.47 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.47 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.47 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.47 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.47 mod: runtime: O(1) [4], size: INF 1151.62/293.47 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.47 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.47 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.47 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.47 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.47 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.47 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.47 diff: runtime: O(1) [12], size: INF 1151.62/293.47 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.47 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.47 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.47 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.47 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.47 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.47 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.47 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.62/293.47 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.62/293.47 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.47 sub: runtime: ?, size: INF 1151.62/293.47 1151.62/293.47 ---------------------------------------- 1151.62/293.47 1151.62/293.47 (307) IntTrsBoundProof (UPPER BOUND(ID)) 1151.62/293.47 1151.62/293.47 Computed RUNTIME bound using CoFloCo for: sub 1151.62/293.47 after applying outer abstraction to obtain an ITS, 1151.62/293.47 resulting in: O(n^1) with polynomial bound: 45 + 20*z 1151.62/293.47 1151.62/293.47 ---------------------------------------- 1151.62/293.47 1151.62/293.47 (308) 1151.62/293.47 Obligation: 1151.62/293.47 Complexity RNTS consisting of the following rules: 1151.62/293.47 1151.62/293.47 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.47 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.47 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.47 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.47 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.47 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.47 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.47 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.47 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.47 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.47 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.47 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.47 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.47 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.47 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.47 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.47 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.47 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.47 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.47 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.47 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.47 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.47 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.47 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.47 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.47 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.47 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.47 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.47 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.47 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.47 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.47 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.47 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.47 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.47 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.47 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.47 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.47 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.47 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.47 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.47 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.47 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.47 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.47 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.47 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.47 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.62/293.47 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.47 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.62/293.47 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.47 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.62/293.47 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.62/293.47 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.62/293.47 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.62/293.47 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.62/293.47 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.62/293.47 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.47 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.47 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.47 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.47 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.47 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.62/293.47 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.62/293.47 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.62/293.47 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.62/293.47 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.62/293.47 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.62/293.47 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.62/293.47 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.62/293.47 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.62/293.47 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.47 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.47 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.47 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.47 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.47 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.47 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.62/293.47 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.62/293.47 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.62/293.47 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.62/293.47 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.47 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.62/293.47 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.47 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.47 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.62/293.47 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.62/293.47 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.62/293.47 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.47 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.62/293.47 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.47 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.62/293.47 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.62/293.47 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.47 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.47 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.62/293.47 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.62/293.47 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.62/293.47 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.62/293.47 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.47 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.62/293.47 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.62/293.47 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.47 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.62/293.47 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.62/293.47 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.62/293.47 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.62/293.47 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.62/293.47 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.62/293.47 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.62/293.47 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.62/293.47 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.62/293.47 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.62/293.47 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.62/293.47 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.62/293.47 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.62/293.47 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.62/293.47 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.62/293.47 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.62/293.47 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.62/293.47 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.62/293.47 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.62/293.47 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.62/293.47 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.62/293.47 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.62/293.47 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.62/293.47 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.62/293.47 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.62/293.47 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.62/293.47 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.62/293.47 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.62/293.47 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.62/293.47 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.47 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.47 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.62/293.47 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.62/293.47 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.47 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.47 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.62/293.47 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.62/293.47 1151.62/293.47 Function symbols to be analyzed: {mult#2}, {mult#1}, {mult}, {mult3} 1151.62/293.47 Previous analysis results are: 1151.62/293.47 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.47 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.62/293.47 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.47 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.62/293.47 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.62/293.47 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.62/293.47 #and: runtime: O(1) [0], size: O(1) [2] 1151.62/293.47 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.62/293.47 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.62/293.47 #compare: runtime: O(1) [0], size: O(1) [3] 1151.62/293.47 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.62/293.47 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.47 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.62/293.47 #greater: runtime: O(1) [1], size: O(1) [2] 1151.62/293.47 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.47 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.47 #eq: runtime: O(1) [0], size: O(1) [2] 1151.62/293.47 #less: runtime: O(1) [1], size: O(1) [2] 1151.62/293.47 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.62/293.47 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.62/293.47 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.47 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.62/293.47 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.62/293.47 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.62/293.47 #equal: runtime: O(1) [1], size: O(1) [2] 1151.62/293.47 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.62/293.47 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.62/293.47 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.62/293.47 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.62/293.47 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.62/293.47 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.62/293.47 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.62/293.47 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.62/293.47 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.62/293.47 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.62/293.47 mod: runtime: O(1) [4], size: INF 1151.62/293.47 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.62/293.47 sum: runtime: O(1) [12], size: O(1) [7] 1151.62/293.47 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.62/293.47 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.47 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.47 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.62/293.47 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.62/293.47 diff: runtime: O(1) [12], size: INF 1151.62/293.47 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.62/293.47 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.62/293.47 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.62/293.47 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.62/293.47 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.47 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.62/293.47 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.62/293.47 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.62/293.47 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.62/293.47 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.62/293.47 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.62/293.47 1151.62/293.47 ---------------------------------------- 1151.62/293.47 1151.62/293.47 (309) ResultPropagationProof (UPPER BOUND(ID)) 1151.62/293.47 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.62/293.47 ---------------------------------------- 1151.62/293.47 1151.62/293.47 (310) 1151.62/293.47 Obligation: 1151.62/293.47 Complexity RNTS consisting of the following rules: 1151.62/293.47 1151.62/293.47 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.62/293.47 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.62/293.47 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.47 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.62/293.47 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.62/293.47 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.62/293.47 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.62/293.47 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.47 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.62/293.47 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.62/293.47 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.62/293.47 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.62/293.47 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.47 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.62/293.47 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.62/293.47 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.62/293.47 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.62/293.47 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.47 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.62/293.47 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.47 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.62/293.47 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.47 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.62/293.47 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.47 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.62/293.47 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.62/293.47 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.62/293.47 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.47 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.47 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.62/293.47 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.62/293.47 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.62/293.47 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.47 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.47 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.47 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.62/293.47 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.62/293.47 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.62/293.47 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.62/293.47 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.62/293.47 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.62/293.47 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.62/293.47 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.62/293.47 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.48 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.48 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.70/293.48 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.48 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.70/293.48 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.48 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.70/293.48 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.70/293.48 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.70/293.48 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.70/293.48 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.70/293.48 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.70/293.48 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.48 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.48 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.48 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.48 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.48 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.70/293.48 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.48 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.48 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.48 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.48 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.48 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.70/293.48 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.70/293.48 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.70/293.48 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.48 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.48 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.48 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.48 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.48 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.48 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.70/293.48 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.70/293.48 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.70/293.48 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.70/293.48 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.48 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.70/293.48 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.48 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.48 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.70/293.48 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.70/293.48 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.70/293.48 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.48 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.70/293.48 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.48 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.70/293.48 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.70/293.48 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.48 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.48 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.48 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.48 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.48 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.48 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.70/293.48 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.70/293.48 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.48 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.70/293.48 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.70/293.48 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.48 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.48 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.70/293.48 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.48 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.70/293.48 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.70/293.48 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.70/293.48 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.48 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.70/293.48 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.70/293.48 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.70/293.48 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.70/293.48 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.48 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.48 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.48 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.48 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.48 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.48 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.70/293.48 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.70/293.48 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.70/293.48 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.70/293.48 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.70/293.48 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.48 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.70/293.48 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.70/293.48 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.70/293.48 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.70/293.48 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.70/293.48 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.48 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.48 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.48 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.48 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.48 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.48 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.70/293.48 1151.70/293.48 Function symbols to be analyzed: {mult#2}, {mult#1}, {mult}, {mult3} 1151.70/293.48 Previous analysis results are: 1151.70/293.48 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.48 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.70/293.48 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.48 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.70/293.48 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.70/293.48 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.70/293.48 #and: runtime: O(1) [0], size: O(1) [2] 1151.70/293.48 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.70/293.48 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.48 #compare: runtime: O(1) [0], size: O(1) [3] 1151.70/293.48 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.70/293.48 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.48 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.48 #greater: runtime: O(1) [1], size: O(1) [2] 1151.70/293.48 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.48 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.48 #eq: runtime: O(1) [0], size: O(1) [2] 1151.70/293.48 #less: runtime: O(1) [1], size: O(1) [2] 1151.70/293.48 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.48 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.70/293.48 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.48 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.48 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.70/293.48 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.70/293.48 #equal: runtime: O(1) [1], size: O(1) [2] 1151.70/293.48 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.48 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.70/293.48 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.48 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.70/293.48 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.70/293.48 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.70/293.48 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.70/293.48 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.70/293.48 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.70/293.48 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.70/293.48 mod: runtime: O(1) [4], size: INF 1151.70/293.48 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.70/293.48 sum: runtime: O(1) [12], size: O(1) [7] 1151.70/293.48 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.70/293.48 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.48 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.48 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.70/293.48 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.70/293.48 diff: runtime: O(1) [12], size: INF 1151.70/293.48 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.70/293.48 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.70/293.48 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.70/293.48 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.48 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.48 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.70/293.48 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.70/293.48 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.70/293.48 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.70/293.48 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.48 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.70/293.48 1151.70/293.48 ---------------------------------------- 1151.70/293.48 1151.70/293.48 (311) IntTrsBoundProof (UPPER BOUND(ID)) 1151.70/293.48 1151.70/293.48 Computed SIZE bound using CoFloCo for: mult#2 1151.70/293.48 after applying outer abstraction to obtain an ITS, 1151.70/293.48 resulting in: O(n^1) with polynomial bound: z + 32*z' 1151.70/293.48 1151.70/293.48 ---------------------------------------- 1151.70/293.48 1151.70/293.48 (312) 1151.70/293.48 Obligation: 1151.70/293.48 Complexity RNTS consisting of the following rules: 1151.70/293.48 1151.70/293.48 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.70/293.48 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.70/293.48 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.70/293.48 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.70/293.48 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.70/293.48 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.70/293.48 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.48 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.70/293.48 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.70/293.48 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.70/293.48 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.70/293.48 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.48 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.70/293.48 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.70/293.48 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.70/293.48 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.70/293.48 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.70/293.48 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.70/293.48 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.48 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.70/293.48 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.70/293.48 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.70/293.48 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.70/293.48 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.70/293.48 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.70/293.48 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.70/293.48 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.70/293.48 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.70/293.48 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.70/293.48 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.70/293.48 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.70/293.48 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.48 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.70/293.48 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.70/293.48 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.70/293.48 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.70/293.48 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.48 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.70/293.48 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.70/293.48 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.48 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.70/293.48 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.70/293.48 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.70/293.48 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.70/293.48 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.70/293.48 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.48 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.48 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.48 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.48 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.48 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.70/293.48 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.48 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.70/293.48 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.48 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.70/293.48 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.48 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.48 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.70/293.48 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.48 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.48 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.48 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.48 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.48 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.48 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.48 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.48 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.48 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.48 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.48 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.48 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.48 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.48 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.48 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.48 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.48 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.48 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.48 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.48 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.48 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.48 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.48 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.48 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.70/293.48 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.48 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.70/293.48 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.48 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.70/293.48 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.70/293.48 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.70/293.48 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.70/293.48 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.70/293.48 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.70/293.48 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.48 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.48 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.48 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.48 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.48 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.48 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.70/293.48 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.48 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.48 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.48 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.48 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.48 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.70/293.48 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.70/293.48 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.70/293.48 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.48 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.48 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.48 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.48 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.48 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.48 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.70/293.48 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.70/293.48 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.70/293.48 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.70/293.48 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.48 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.70/293.48 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.48 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.48 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.70/293.48 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.70/293.48 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.70/293.48 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.48 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.70/293.48 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.48 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.70/293.48 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.70/293.48 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.48 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.48 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.48 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.48 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.48 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.48 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.70/293.48 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.70/293.48 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.48 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.70/293.48 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.70/293.48 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.48 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.48 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.70/293.48 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.48 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.70/293.48 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.70/293.48 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.70/293.48 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.48 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.70/293.48 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.70/293.48 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.70/293.48 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.70/293.48 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.48 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.48 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.48 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.48 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.48 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.48 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.70/293.48 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.70/293.48 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.70/293.48 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.48 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.48 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.70/293.48 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.70/293.48 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.48 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.70/293.48 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.70/293.48 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.70/293.48 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.48 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.70/293.48 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.70/293.48 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.48 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.48 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.48 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.48 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.48 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.48 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.48 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.48 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.48 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.70/293.48 1151.70/293.48 Function symbols to be analyzed: {mult#2}, {mult#1}, {mult}, {mult3} 1151.70/293.48 Previous analysis results are: 1151.70/293.48 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.48 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.70/293.48 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.48 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.70/293.48 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.70/293.48 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.70/293.48 #and: runtime: O(1) [0], size: O(1) [2] 1151.70/293.48 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.70/293.48 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.48 #compare: runtime: O(1) [0], size: O(1) [3] 1151.70/293.48 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.70/293.48 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.48 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.48 #greater: runtime: O(1) [1], size: O(1) [2] 1151.70/293.48 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.48 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.48 #eq: runtime: O(1) [0], size: O(1) [2] 1151.70/293.48 #less: runtime: O(1) [1], size: O(1) [2] 1151.70/293.48 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.48 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.70/293.48 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.48 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.48 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.70/293.48 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.70/293.48 #equal: runtime: O(1) [1], size: O(1) [2] 1151.70/293.48 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.48 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.70/293.48 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.48 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.70/293.48 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.70/293.49 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.70/293.49 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.70/293.49 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.70/293.49 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.70/293.49 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.70/293.49 mod: runtime: O(1) [4], size: INF 1151.70/293.49 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.70/293.49 sum: runtime: O(1) [12], size: O(1) [7] 1151.70/293.49 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.70/293.49 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.49 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.49 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.70/293.49 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.70/293.49 diff: runtime: O(1) [12], size: INF 1151.70/293.49 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.70/293.49 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.70/293.49 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.70/293.49 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.49 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.49 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.70/293.49 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.70/293.49 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.70/293.49 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.70/293.49 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.49 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.70/293.49 mult#2: runtime: ?, size: O(n^1) [z + 32*z'] 1151.70/293.49 1151.70/293.49 ---------------------------------------- 1151.70/293.49 1151.70/293.49 (313) IntTrsBoundProof (UPPER BOUND(ID)) 1151.70/293.49 1151.70/293.49 Computed RUNTIME bound using CoFloCo for: mult#2 1151.70/293.49 after applying outer abstraction to obtain an ITS, 1151.70/293.49 resulting in: O(n^1) with polynomial bound: 10 + 48*z + 16*z' 1151.70/293.49 1151.70/293.49 ---------------------------------------- 1151.70/293.49 1151.70/293.49 (314) 1151.70/293.49 Obligation: 1151.70/293.49 Complexity RNTS consisting of the following rules: 1151.70/293.49 1151.70/293.49 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.70/293.49 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.49 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.70/293.49 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.49 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.70/293.49 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.70/293.49 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.49 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.70/293.49 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.70/293.49 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.70/293.49 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.70/293.49 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.49 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.70/293.49 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.49 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.70/293.49 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.49 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.70/293.49 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.49 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.49 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.49 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.70/293.49 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.70/293.49 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.49 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.70/293.49 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.70/293.49 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.49 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.49 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.49 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.49 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.49 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.49 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.49 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.49 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.70/293.49 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.49 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.70/293.49 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.49 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.49 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.70/293.49 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.49 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.49 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.70/293.49 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.49 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.49 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.49 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.49 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.49 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.49 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.49 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.49 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.49 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.49 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.49 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.49 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.49 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.49 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.49 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.49 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.49 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.49 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.49 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.49 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.49 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.49 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.49 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.49 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.49 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.49 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.49 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.49 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.49 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.49 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.49 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.49 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.49 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.49 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.70/293.49 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.49 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.70/293.49 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.70/293.49 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.49 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.70/293.49 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.70/293.49 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.49 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.70/293.49 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.70/293.49 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.70/293.49 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.70/293.49 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.49 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.49 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.49 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.49 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.49 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.49 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.49 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.70/293.49 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.49 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.49 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.49 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.49 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.49 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.49 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.70/293.49 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.70/293.49 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.70/293.49 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.49 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.49 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.49 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.49 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.49 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.49 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.49 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.49 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.70/293.49 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.70/293.49 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.70/293.49 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.70/293.49 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.49 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.49 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.70/293.49 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.49 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.49 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.49 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.70/293.49 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.49 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.70/293.49 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.70/293.49 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.70/293.49 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.49 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.70/293.49 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.49 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.70/293.49 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.70/293.49 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.49 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.49 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.49 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.49 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.49 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.49 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.49 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.49 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.49 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.49 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.49 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.49 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.49 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.49 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.70/293.49 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.70/293.49 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.49 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.70/293.49 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.70/293.49 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.49 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.49 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.70/293.49 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.49 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.70/293.49 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.70/293.49 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.49 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.70/293.49 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.49 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.70/293.49 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.70/293.49 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.70/293.49 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.70/293.49 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.49 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.49 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.49 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.49 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.49 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.49 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.49 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.49 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.70/293.49 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.49 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.70/293.49 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.70/293.49 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.49 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.49 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.70/293.49 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.70/293.49 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.49 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.70/293.49 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.70/293.49 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.70/293.49 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.70/293.49 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.70/293.49 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.49 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.49 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.49 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.49 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.49 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.49 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.49 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.49 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.49 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.49 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.49 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.49 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.49 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.49 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.49 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.49 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.49 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.49 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.49 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.49 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.70/293.49 1151.70/293.49 Function symbols to be analyzed: {mult#1}, {mult}, {mult3} 1151.70/293.49 Previous analysis results are: 1151.70/293.49 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.49 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.70/293.49 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.49 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.70/293.49 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.70/293.49 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.70/293.49 #and: runtime: O(1) [0], size: O(1) [2] 1151.70/293.49 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.70/293.49 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.49 #compare: runtime: O(1) [0], size: O(1) [3] 1151.70/293.49 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.70/293.49 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.49 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.49 #greater: runtime: O(1) [1], size: O(1) [2] 1151.70/293.49 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.49 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.49 #eq: runtime: O(1) [0], size: O(1) [2] 1151.70/293.49 #less: runtime: O(1) [1], size: O(1) [2] 1151.70/293.49 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.49 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.70/293.49 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.49 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.49 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.70/293.49 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.70/293.49 #equal: runtime: O(1) [1], size: O(1) [2] 1151.70/293.49 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.49 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.70/293.49 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.49 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.70/293.49 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.70/293.49 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.70/293.49 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.70/293.49 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.70/293.49 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.70/293.49 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.70/293.49 mod: runtime: O(1) [4], size: INF 1151.70/293.49 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.70/293.49 sum: runtime: O(1) [12], size: O(1) [7] 1151.70/293.49 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.70/293.49 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.49 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.49 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.70/293.49 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.70/293.49 diff: runtime: O(1) [12], size: INF 1151.70/293.49 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.70/293.49 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.70/293.49 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.70/293.49 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.49 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.49 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.70/293.49 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.70/293.49 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.70/293.49 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.70/293.49 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.49 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.70/293.49 mult#2: runtime: O(n^1) [10 + 48*z + 16*z'], size: O(n^1) [z + 32*z'] 1151.70/293.49 1151.70/293.49 ---------------------------------------- 1151.70/293.49 1151.70/293.49 (315) ResultPropagationProof (UPPER BOUND(ID)) 1151.70/293.49 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.70/293.49 ---------------------------------------- 1151.70/293.49 1151.70/293.49 (316) 1151.70/293.49 Obligation: 1151.70/293.49 Complexity RNTS consisting of the following rules: 1151.70/293.49 1151.70/293.49 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.70/293.49 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.49 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.70/293.49 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.49 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.70/293.49 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.49 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.70/293.49 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.70/293.50 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.50 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.70/293.50 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.70/293.50 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.70/293.50 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.70/293.50 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.50 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.70/293.50 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.70/293.50 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.50 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.70/293.50 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.50 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.50 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.50 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.70/293.50 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.50 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.50 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.50 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.50 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.50 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.50 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.50 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.50 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.50 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.50 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.50 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.50 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.70/293.50 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.50 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.50 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.50 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.50 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.50 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.70/293.50 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.70/293.50 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.70/293.50 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.50 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.50 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.50 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.50 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.50 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.50 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.70/293.50 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.70/293.50 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.70/293.50 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.70/293.50 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.50 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.70/293.50 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.50 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.50 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.70/293.50 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.70/293.50 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.70/293.50 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.50 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.70/293.50 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.50 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.70/293.50 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.70/293.50 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.50 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.50 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.50 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.50 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.70/293.50 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.70/293.50 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.50 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.70/293.50 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.70/293.50 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.50 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.50 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.70/293.50 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.50 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.70/293.50 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.70/293.50 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.70/293.50 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.50 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.70/293.50 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.70/293.50 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.70/293.50 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.70/293.50 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.50 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.50 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.50 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.50 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.50 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.70/293.50 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.70/293.50 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.70/293.50 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.70/293.50 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.70/293.50 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.50 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.70/293.50 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.70/293.50 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.70/293.50 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.70/293.50 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.70/293.50 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.50 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.50 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.50 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.50 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.70/293.50 1151.70/293.50 Function symbols to be analyzed: {mult#1}, {mult}, {mult3} 1151.70/293.50 Previous analysis results are: 1151.70/293.50 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.50 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.70/293.50 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.50 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.70/293.50 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.70/293.50 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.70/293.50 #and: runtime: O(1) [0], size: O(1) [2] 1151.70/293.50 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.70/293.50 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.50 #compare: runtime: O(1) [0], size: O(1) [3] 1151.70/293.50 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.70/293.50 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.50 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.50 #greater: runtime: O(1) [1], size: O(1) [2] 1151.70/293.50 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.50 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.50 #eq: runtime: O(1) [0], size: O(1) [2] 1151.70/293.50 #less: runtime: O(1) [1], size: O(1) [2] 1151.70/293.50 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.50 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.70/293.50 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.50 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.50 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.70/293.50 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.70/293.50 #equal: runtime: O(1) [1], size: O(1) [2] 1151.70/293.50 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.50 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.70/293.50 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.50 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.70/293.50 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.70/293.50 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.70/293.50 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.70/293.50 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.70/293.50 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.70/293.50 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.70/293.50 mod: runtime: O(1) [4], size: INF 1151.70/293.50 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.70/293.50 sum: runtime: O(1) [12], size: O(1) [7] 1151.70/293.50 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.70/293.50 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.50 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.50 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.70/293.50 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.70/293.50 diff: runtime: O(1) [12], size: INF 1151.70/293.50 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.70/293.50 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.70/293.50 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.70/293.50 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.50 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.50 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.70/293.50 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.70/293.50 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.70/293.50 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.70/293.50 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.50 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.70/293.50 mult#2: runtime: O(n^1) [10 + 48*z + 16*z'], size: O(n^1) [z + 32*z'] 1151.70/293.50 1151.70/293.50 ---------------------------------------- 1151.70/293.50 1151.70/293.50 (317) IntTrsBoundProof (UPPER BOUND(ID)) 1151.70/293.50 1151.70/293.50 Computed SIZE bound using CoFloCo for: mult#1 1151.70/293.50 after applying outer abstraction to obtain an ITS, 1151.70/293.50 resulting in: O(n^2) with polynomial bound: 2 + z + 32*z*z' 1151.70/293.50 1151.70/293.50 ---------------------------------------- 1151.70/293.50 1151.70/293.50 (318) 1151.70/293.50 Obligation: 1151.70/293.50 Complexity RNTS consisting of the following rules: 1151.70/293.50 1151.70/293.50 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.70/293.50 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.70/293.50 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.50 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.70/293.50 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.70/293.50 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.50 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.70/293.50 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.70/293.50 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.70/293.50 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.70/293.50 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.50 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.70/293.50 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.70/293.50 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.50 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.70/293.50 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.50 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.50 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.50 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.70/293.50 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.50 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.50 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.50 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.50 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.50 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.50 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.50 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.50 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.50 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.50 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.50 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.50 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.70/293.50 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.50 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.50 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.50 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.50 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.50 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.70/293.50 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.70/293.50 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.70/293.50 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.50 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.50 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.50 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.50 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.50 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.50 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.70/293.50 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.70/293.50 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.70/293.50 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.70/293.50 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.50 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.70/293.50 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.50 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.50 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.70/293.50 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.70/293.50 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.70/293.50 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.50 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.70/293.50 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.50 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.70/293.50 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.70/293.50 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.50 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.50 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.50 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.50 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.70/293.50 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.70/293.50 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.50 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.70/293.50 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.70/293.50 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.50 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.50 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.70/293.50 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.50 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.70/293.50 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.70/293.50 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.70/293.50 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.50 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.70/293.50 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.70/293.50 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.70/293.50 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.70/293.50 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.50 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.50 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.50 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.50 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.50 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.70/293.50 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.70/293.50 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.70/293.50 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.70/293.50 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.70/293.50 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.50 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.70/293.50 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.70/293.50 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.70/293.50 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.70/293.50 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.70/293.50 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.50 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.50 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.50 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.50 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.70/293.50 1151.70/293.50 Function symbols to be analyzed: {mult#1}, {mult}, {mult3} 1151.70/293.50 Previous analysis results are: 1151.70/293.50 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.50 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.70/293.50 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.50 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.70/293.50 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.70/293.50 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.70/293.50 #and: runtime: O(1) [0], size: O(1) [2] 1151.70/293.50 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.70/293.50 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.50 #compare: runtime: O(1) [0], size: O(1) [3] 1151.70/293.50 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.70/293.50 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.50 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.50 #greater: runtime: O(1) [1], size: O(1) [2] 1151.70/293.50 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.50 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.50 #eq: runtime: O(1) [0], size: O(1) [2] 1151.70/293.50 #less: runtime: O(1) [1], size: O(1) [2] 1151.70/293.50 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.50 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.70/293.50 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.50 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.50 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.70/293.50 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.70/293.50 #equal: runtime: O(1) [1], size: O(1) [2] 1151.70/293.50 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.50 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.70/293.50 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.50 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.70/293.50 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.70/293.50 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.70/293.50 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.70/293.50 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.70/293.50 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.70/293.50 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.70/293.50 mod: runtime: O(1) [4], size: INF 1151.70/293.50 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.70/293.50 sum: runtime: O(1) [12], size: O(1) [7] 1151.70/293.50 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.70/293.50 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.50 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.50 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.70/293.50 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.70/293.50 diff: runtime: O(1) [12], size: INF 1151.70/293.50 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.70/293.50 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.70/293.50 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.70/293.50 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.50 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.50 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.70/293.50 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.70/293.50 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.70/293.50 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.70/293.50 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.50 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.70/293.50 mult#2: runtime: O(n^1) [10 + 48*z + 16*z'], size: O(n^1) [z + 32*z'] 1151.70/293.50 mult#1: runtime: ?, size: O(n^2) [2 + z + 32*z*z'] 1151.70/293.50 1151.70/293.50 ---------------------------------------- 1151.70/293.50 1151.70/293.50 (319) IntTrsBoundProof (UPPER BOUND(ID)) 1151.70/293.50 1151.70/293.50 Computed RUNTIME bound using KoAT for: mult#1 1151.70/293.50 after applying outer abstraction to obtain an ITS, 1151.70/293.50 resulting in: O(n^3) with polynomial bound: 1 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' 1151.70/293.50 1151.70/293.50 ---------------------------------------- 1151.70/293.50 1151.70/293.50 (320) 1151.70/293.50 Obligation: 1151.70/293.50 Complexity RNTS consisting of the following rules: 1151.70/293.50 1151.70/293.50 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.70/293.50 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.70/293.50 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.50 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.70/293.50 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.70/293.50 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.70/293.50 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.50 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.70/293.50 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.70/293.50 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.70/293.50 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.70/293.50 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.50 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.70/293.50 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.70/293.50 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.50 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.70/293.50 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.50 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.50 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.50 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.50 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.50 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.70/293.50 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.50 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.50 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.50 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.50 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.50 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.50 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.50 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.50 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.50 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.50 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.50 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.70/293.50 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.70/293.50 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.50 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.50 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.50 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.50 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.50 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.50 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.70/293.50 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.50 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.50 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.50 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.50 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.50 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.70/293.50 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.70/293.50 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.70/293.50 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.50 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.50 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.50 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.50 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.50 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.50 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.70/293.50 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.70/293.50 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.70/293.50 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.70/293.50 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.50 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.70/293.50 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.50 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.50 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.70/293.50 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.70/293.50 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.70/293.50 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.50 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.70/293.50 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.50 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.70/293.50 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.70/293.50 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.50 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.50 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.50 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.50 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.70/293.50 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.70/293.50 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.50 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.70/293.50 mult(z, z') -{ 1 }-> mult#1(z, z') :|: z' >= 0, z >= 0 1151.70/293.50 mult#1(z, z') -{ 3 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.50 mult#1(z, z') -{ 2 }-> mult#2(1 + 0 + mult#1(@xs, z'), z', @x) :|: @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.50 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.70/293.50 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.50 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.70/293.50 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.70/293.50 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 mult3(z, z', z'') -{ 2 }-> mult(mult#1(z, z'), z') :|: z'' >= 0, z' >= 0, z >= 0 1151.70/293.50 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.50 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.70/293.50 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.70/293.50 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.70/293.50 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.70/293.50 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.50 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.50 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.50 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.50 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.50 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.70/293.50 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.70/293.50 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.70/293.50 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.50 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.50 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.70/293.50 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.70/293.50 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.50 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.70/293.50 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.70/293.50 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.70/293.50 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.50 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.70/293.50 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.70/293.50 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.50 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.50 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.50 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.50 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.50 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.50 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.70/293.50 1151.70/293.50 Function symbols to be analyzed: {mult}, {mult3} 1151.70/293.50 Previous analysis results are: 1151.70/293.51 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.70/293.51 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.51 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.70/293.51 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.70/293.51 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.70/293.51 #and: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.70/293.51 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 #compare: runtime: O(1) [0], size: O(1) [3] 1151.70/293.51 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.70/293.51 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.51 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.51 #greater: runtime: O(1) [1], size: O(1) [2] 1151.70/293.51 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.51 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.51 #eq: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 #less: runtime: O(1) [1], size: O(1) [2] 1151.70/293.51 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.51 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.70/293.51 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.51 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.51 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.70/293.51 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.70/293.51 #equal: runtime: O(1) [1], size: O(1) [2] 1151.70/293.51 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.51 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.70/293.51 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.51 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.70/293.51 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.70/293.51 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.70/293.51 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.70/293.51 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.70/293.51 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.70/293.51 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.70/293.51 mod: runtime: O(1) [4], size: INF 1151.70/293.51 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.70/293.51 sum: runtime: O(1) [12], size: O(1) [7] 1151.70/293.51 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.70/293.51 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.51 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.51 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.70/293.51 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.70/293.51 diff: runtime: O(1) [12], size: INF 1151.70/293.51 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.70/293.51 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.70/293.51 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.70/293.51 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.51 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.51 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.70/293.51 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.70/293.51 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.70/293.51 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.70/293.51 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.51 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.70/293.51 mult#2: runtime: O(n^1) [10 + 48*z + 16*z'], size: O(n^1) [z + 32*z'] 1151.70/293.51 mult#1: runtime: O(n^3) [1 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z'], size: O(n^2) [2 + z + 32*z*z'] 1151.70/293.51 1151.70/293.51 ---------------------------------------- 1151.70/293.51 1151.70/293.51 (321) ResultPropagationProof (UPPER BOUND(ID)) 1151.70/293.51 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.70/293.51 ---------------------------------------- 1151.70/293.51 1151.70/293.51 (322) 1151.70/293.51 Obligation: 1151.70/293.51 Complexity RNTS consisting of the following rules: 1151.70/293.51 1151.70/293.51 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.70/293.51 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.70/293.51 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.70/293.51 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.70/293.51 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.51 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.70/293.51 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.70/293.51 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.70/293.51 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.70/293.51 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.51 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.70/293.51 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.70/293.51 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.51 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.70/293.51 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.51 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.51 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.51 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.70/293.51 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.51 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.51 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.51 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.51 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.51 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.51 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.51 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.51 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.51 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.51 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.51 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.51 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.70/293.51 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.51 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.51 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.51 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.51 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.51 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.70/293.51 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.70/293.51 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.70/293.51 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.51 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.51 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.51 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.51 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.51 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.51 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.70/293.51 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.70/293.51 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.70/293.51 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.70/293.51 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.51 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.70/293.51 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.51 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.51 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.70/293.51 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.70/293.51 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.70/293.51 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.51 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.70/293.51 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.51 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.70/293.51 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.70/293.51 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.51 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.51 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.51 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.51 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.70/293.51 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.70/293.51 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.51 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.70/293.51 mult(z, z') -{ 2 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> s112 :|: s112 >= 0, s112 <= 32 * (z' * z) + z + 2, z' >= 0, z >= 0 1151.70/293.51 mult#1(z, z') -{ 62 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s113 + 16*z' }-> s114 :|: s113 >= 0, s113 <= 32 * (z' * @xs) + @xs + 2, s114 >= 0, s114 <= 1 + 0 + s113 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.51 mult#1(z, z') -{ 61 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s115 + 16*z' }-> s116 :|: s115 >= 0, s115 <= 32 * (z' * @xs) + @xs + 2, s116 >= 0, s116 <= 1 + 0 + s115 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.51 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.70/293.51 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.51 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.70/293.51 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.70/293.51 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 mult3(z, z', z'') -{ 3 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> mult(s117, z') :|: s117 >= 0, s117 <= 32 * (z' * z) + z + 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.51 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.51 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.70/293.51 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.70/293.51 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.70/293.51 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.70/293.51 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.51 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.51 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.51 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.51 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.51 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.51 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.70/293.51 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.70/293.51 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.70/293.51 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.70/293.51 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.70/293.51 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.51 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.70/293.51 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.70/293.51 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.70/293.51 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.70/293.51 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.70/293.51 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.51 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.51 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.51 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.51 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.51 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.70/293.51 1151.70/293.51 Function symbols to be analyzed: {mult}, {mult3} 1151.70/293.51 Previous analysis results are: 1151.70/293.51 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.70/293.51 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.51 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.70/293.51 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.70/293.51 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.70/293.51 #and: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.70/293.51 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 #compare: runtime: O(1) [0], size: O(1) [3] 1151.70/293.51 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.70/293.51 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.51 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.51 #greater: runtime: O(1) [1], size: O(1) [2] 1151.70/293.51 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.51 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.51 #eq: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 #less: runtime: O(1) [1], size: O(1) [2] 1151.70/293.51 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.51 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.70/293.51 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.51 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.51 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.70/293.51 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.70/293.51 #equal: runtime: O(1) [1], size: O(1) [2] 1151.70/293.51 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.51 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.70/293.51 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.51 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.70/293.51 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.70/293.51 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.70/293.51 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.70/293.51 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.70/293.51 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.70/293.51 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.70/293.51 mod: runtime: O(1) [4], size: INF 1151.70/293.51 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.70/293.51 sum: runtime: O(1) [12], size: O(1) [7] 1151.70/293.51 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.70/293.51 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.51 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.51 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.70/293.51 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.70/293.51 diff: runtime: O(1) [12], size: INF 1151.70/293.51 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.70/293.51 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.70/293.51 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.70/293.51 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.51 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.51 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.70/293.51 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.70/293.51 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.70/293.51 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.70/293.51 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.51 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.70/293.51 mult#2: runtime: O(n^1) [10 + 48*z + 16*z'], size: O(n^1) [z + 32*z'] 1151.70/293.51 mult#1: runtime: O(n^3) [1 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z'], size: O(n^2) [2 + z + 32*z*z'] 1151.70/293.51 1151.70/293.51 ---------------------------------------- 1151.70/293.51 1151.70/293.51 (323) IntTrsBoundProof (UPPER BOUND(ID)) 1151.70/293.51 1151.70/293.51 Computed SIZE bound using KoAT for: mult 1151.70/293.51 after applying outer abstraction to obtain an ITS, 1151.70/293.51 resulting in: O(n^2) with polynomial bound: 2 + z + 32*z*z' 1151.70/293.51 1151.70/293.51 ---------------------------------------- 1151.70/293.51 1151.70/293.51 (324) 1151.70/293.51 Obligation: 1151.70/293.51 Complexity RNTS consisting of the following rules: 1151.70/293.51 1151.70/293.51 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.70/293.51 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.70/293.51 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.70/293.51 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.70/293.51 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.51 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.70/293.51 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.70/293.51 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.70/293.51 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.70/293.51 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.51 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.70/293.51 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.70/293.51 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.51 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.70/293.51 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.51 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.51 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.51 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.70/293.51 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.51 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.51 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.51 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.51 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.51 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.51 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.51 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.51 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.51 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.51 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.51 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.51 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.70/293.51 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.51 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.51 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.51 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.51 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.51 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.70/293.51 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.70/293.51 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.70/293.51 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.51 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.51 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.51 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.51 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.51 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.51 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.70/293.51 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.70/293.51 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.70/293.51 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.70/293.51 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.51 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.70/293.51 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.51 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.51 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.70/293.51 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.70/293.51 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.70/293.51 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.51 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.70/293.51 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.51 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.70/293.51 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.70/293.51 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.51 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.51 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.51 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.51 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.70/293.51 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.70/293.51 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.51 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.70/293.51 mult(z, z') -{ 2 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> s112 :|: s112 >= 0, s112 <= 32 * (z' * z) + z + 2, z' >= 0, z >= 0 1151.70/293.51 mult#1(z, z') -{ 62 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s113 + 16*z' }-> s114 :|: s113 >= 0, s113 <= 32 * (z' * @xs) + @xs + 2, s114 >= 0, s114 <= 1 + 0 + s113 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.51 mult#1(z, z') -{ 61 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s115 + 16*z' }-> s116 :|: s115 >= 0, s115 <= 32 * (z' * @xs) + @xs + 2, s116 >= 0, s116 <= 1 + 0 + s115 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.51 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.70/293.51 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.51 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.70/293.51 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.70/293.51 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 mult3(z, z', z'') -{ 3 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> mult(s117, z') :|: s117 >= 0, s117 <= 32 * (z' * z) + z + 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.51 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.51 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.70/293.51 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.70/293.51 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.70/293.51 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.70/293.51 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.51 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.51 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.51 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.51 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.51 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.51 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.70/293.51 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.70/293.51 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.70/293.51 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.70/293.51 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.70/293.51 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.51 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.70/293.51 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.70/293.51 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.70/293.51 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.70/293.51 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.70/293.51 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.51 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.51 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.51 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.51 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.51 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.51 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.51 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.70/293.51 1151.70/293.51 Function symbols to be analyzed: {mult}, {mult3} 1151.70/293.51 Previous analysis results are: 1151.70/293.51 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.70/293.51 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.51 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.70/293.51 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.70/293.51 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.70/293.51 #and: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.70/293.51 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 #compare: runtime: O(1) [0], size: O(1) [3] 1151.70/293.51 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.70/293.51 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.51 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.51 #greater: runtime: O(1) [1], size: O(1) [2] 1151.70/293.51 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.51 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.51 #eq: runtime: O(1) [0], size: O(1) [2] 1151.70/293.51 #less: runtime: O(1) [1], size: O(1) [2] 1151.70/293.51 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.51 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.70/293.51 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.51 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.51 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.70/293.51 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.70/293.51 #equal: runtime: O(1) [1], size: O(1) [2] 1151.70/293.51 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.51 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.70/293.51 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.51 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.70/293.51 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.70/293.51 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.70/293.51 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.70/293.51 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.70/293.51 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.70/293.51 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.70/293.51 mod: runtime: O(1) [4], size: INF 1151.70/293.51 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.70/293.51 sum: runtime: O(1) [12], size: O(1) [7] 1151.70/293.51 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.70/293.51 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.51 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.51 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.70/293.51 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.70/293.51 diff: runtime: O(1) [12], size: INF 1151.70/293.51 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.70/293.51 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.70/293.51 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.70/293.51 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.51 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.51 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.70/293.51 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.70/293.51 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.70/293.51 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.70/293.51 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.51 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.70/293.51 mult#2: runtime: O(n^1) [10 + 48*z + 16*z'], size: O(n^1) [z + 32*z'] 1151.70/293.51 mult#1: runtime: O(n^3) [1 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z'], size: O(n^2) [2 + z + 32*z*z'] 1151.70/293.51 mult: runtime: ?, size: O(n^2) [2 + z + 32*z*z'] 1151.70/293.51 1151.70/293.51 ---------------------------------------- 1151.70/293.51 1151.70/293.51 (325) IntTrsBoundProof (UPPER BOUND(ID)) 1151.70/293.51 1151.70/293.51 Computed RUNTIME bound using KoAT for: mult 1151.70/293.51 after applying outer abstraction to obtain an ITS, 1151.70/293.51 resulting in: O(n^3) with polynomial bound: 2 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' 1151.70/293.51 1151.70/293.51 ---------------------------------------- 1151.70/293.51 1151.70/293.51 (326) 1151.70/293.51 Obligation: 1151.70/293.51 Complexity RNTS consisting of the following rules: 1151.70/293.51 1151.70/293.51 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.70/293.51 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.70/293.51 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.70/293.51 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.70/293.51 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.70/293.51 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.51 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.70/293.51 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.70/293.51 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.70/293.51 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.70/293.51 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.51 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.70/293.51 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.70/293.51 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.51 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.70/293.51 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.51 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.51 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.51 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.51 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.51 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.70/293.51 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.51 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.51 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.51 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.51 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.51 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.51 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.51 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.51 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.51 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.51 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.51 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.70/293.51 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.70/293.51 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.51 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.51 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.51 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.51 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.51 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.51 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.70/293.51 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.51 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.51 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.51 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.51 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.51 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.70/293.51 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.70/293.51 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.70/293.51 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.51 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.51 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.51 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.51 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.51 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.51 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.70/293.51 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.70/293.51 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.70/293.51 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.70/293.51 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.51 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.70/293.51 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.51 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.51 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.70/293.51 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.70/293.51 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.70/293.51 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.70/293.51 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.51 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.70/293.51 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.51 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.70/293.51 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.70/293.51 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.51 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.51 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.51 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.51 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.51 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.51 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.51 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.70/293.51 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.70/293.51 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.51 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.70/293.51 mult(z, z') -{ 2 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> s112 :|: s112 >= 0, s112 <= 32 * (z' * z) + z + 2, z' >= 0, z >= 0 1151.70/293.51 mult#1(z, z') -{ 62 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s113 + 16*z' }-> s114 :|: s113 >= 0, s113 <= 32 * (z' * @xs) + @xs + 2, s114 >= 0, s114 <= 1 + 0 + s113 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.51 mult#1(z, z') -{ 61 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s115 + 16*z' }-> s116 :|: s115 >= 0, s115 <= 32 * (z' * @xs) + @xs + 2, s116 >= 0, s116 <= 1 + 0 + s115 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.51 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.70/293.51 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.51 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.51 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.70/293.51 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.70/293.51 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.51 mult3(z, z', z'') -{ 3 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> mult(s117, z') :|: s117 >= 0, s117 <= 32 * (z' * z) + z + 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.52 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.52 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.70/293.52 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.70/293.52 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.70/293.52 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.70/293.52 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.52 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.52 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.52 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.52 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.52 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.70/293.52 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.70/293.52 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.70/293.52 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.70/293.52 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.70/293.52 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.52 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.70/293.52 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.70/293.52 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.70/293.52 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.70/293.52 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.70/293.52 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.52 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.52 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.52 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.52 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.70/293.52 1151.70/293.52 Function symbols to be analyzed: {mult3} 1151.70/293.52 Previous analysis results are: 1151.70/293.52 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.70/293.52 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.52 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.70/293.52 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.70/293.52 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.70/293.52 #and: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.70/293.52 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 #compare: runtime: O(1) [0], size: O(1) [3] 1151.70/293.52 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.70/293.52 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.52 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.52 #greater: runtime: O(1) [1], size: O(1) [2] 1151.70/293.52 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.52 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.52 #eq: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 #less: runtime: O(1) [1], size: O(1) [2] 1151.70/293.52 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.52 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.70/293.52 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.52 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.52 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.70/293.52 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.70/293.52 #equal: runtime: O(1) [1], size: O(1) [2] 1151.70/293.52 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.52 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.70/293.52 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.52 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.70/293.52 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.70/293.52 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.70/293.52 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.70/293.52 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.70/293.52 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.70/293.52 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.70/293.52 mod: runtime: O(1) [4], size: INF 1151.70/293.52 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.70/293.52 sum: runtime: O(1) [12], size: O(1) [7] 1151.70/293.52 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.70/293.52 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.52 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.52 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.70/293.52 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.70/293.52 diff: runtime: O(1) [12], size: INF 1151.70/293.52 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.70/293.52 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.70/293.52 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.70/293.52 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.52 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.52 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.70/293.52 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.70/293.52 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.70/293.52 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.70/293.52 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.52 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.70/293.52 mult#2: runtime: O(n^1) [10 + 48*z + 16*z'], size: O(n^1) [z + 32*z'] 1151.70/293.52 mult#1: runtime: O(n^3) [1 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z'], size: O(n^2) [2 + z + 32*z*z'] 1151.70/293.52 mult: runtime: O(n^3) [2 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z'], size: O(n^2) [2 + z + 32*z*z'] 1151.70/293.52 1151.70/293.52 ---------------------------------------- 1151.70/293.52 1151.70/293.52 (327) ResultPropagationProof (UPPER BOUND(ID)) 1151.70/293.52 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 1151.70/293.52 ---------------------------------------- 1151.70/293.52 1151.70/293.52 (328) 1151.70/293.52 Obligation: 1151.70/293.52 Complexity RNTS consisting of the following rules: 1151.70/293.52 1151.70/293.52 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.70/293.52 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.70/293.52 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.70/293.52 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.70/293.52 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.52 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.70/293.52 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.70/293.52 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.70/293.52 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.70/293.52 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.52 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.70/293.52 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.70/293.52 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.52 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.70/293.52 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.52 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.52 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.52 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.70/293.52 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.52 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.52 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.52 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.52 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.52 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.52 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.52 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.52 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.52 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.52 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.52 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.52 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.52 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.52 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.52 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.70/293.52 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.52 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.70/293.52 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.70/293.52 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.70/293.52 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.70/293.52 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.70/293.52 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.70/293.52 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.52 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.52 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.52 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.52 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.52 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.70/293.52 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.52 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.52 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.52 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.52 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.52 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.70/293.52 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.70/293.52 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.70/293.52 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.52 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.52 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.52 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.52 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.52 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.52 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.70/293.52 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.70/293.52 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.70/293.52 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.70/293.52 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.52 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.70/293.52 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.52 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.52 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.70/293.52 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.70/293.52 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.70/293.52 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.52 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.70/293.52 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.52 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.70/293.52 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.70/293.52 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.52 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.52 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.52 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.52 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.70/293.52 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.70/293.52 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.52 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.70/293.52 mult(z, z') -{ 2 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> s112 :|: s112 >= 0, s112 <= 32 * (z' * z) + z + 2, z' >= 0, z >= 0 1151.70/293.52 mult#1(z, z') -{ 62 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s113 + 16*z' }-> s114 :|: s113 >= 0, s113 <= 32 * (z' * @xs) + @xs + 2, s114 >= 0, s114 <= 1 + 0 + s113 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.52 mult#1(z, z') -{ 61 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s115 + 16*z' }-> s116 :|: s115 >= 0, s115 <= 32 * (z' * @xs) + @xs + 2, s116 >= 0, s116 <= 1 + 0 + s115 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.52 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.70/293.52 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.52 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.70/293.52 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.70/293.52 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 mult3(z, z', z'') -{ 5 + 313*s117 + 32*s117*z' + 96*s117^2 + 3072*s117^2*z' + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> s118 :|: s118 >= 0, s118 <= s117 + 32 * (z' * s117) + 2, s117 >= 0, s117 <= 32 * (z' * z) + z + 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.52 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.52 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.70/293.52 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.70/293.52 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.70/293.52 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.70/293.52 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.52 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.52 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.52 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.52 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.52 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.70/293.52 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.70/293.52 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.70/293.52 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.70/293.52 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.70/293.52 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.52 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.70/293.52 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.70/293.52 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.70/293.52 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.70/293.52 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.70/293.52 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.52 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.52 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.52 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.52 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.70/293.52 1151.70/293.52 Function symbols to be analyzed: {mult3} 1151.70/293.52 Previous analysis results are: 1151.70/293.52 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.70/293.52 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.52 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.70/293.52 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.70/293.52 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.70/293.52 #and: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.70/293.52 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 #compare: runtime: O(1) [0], size: O(1) [3] 1151.70/293.52 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.70/293.52 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.52 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.52 #greater: runtime: O(1) [1], size: O(1) [2] 1151.70/293.52 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.52 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.52 #eq: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 #less: runtime: O(1) [1], size: O(1) [2] 1151.70/293.52 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.52 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.70/293.52 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.52 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.52 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.70/293.52 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.70/293.52 #equal: runtime: O(1) [1], size: O(1) [2] 1151.70/293.52 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.52 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.70/293.52 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.52 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.70/293.52 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.70/293.52 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.70/293.52 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.70/293.52 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.70/293.52 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.70/293.52 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.70/293.52 mod: runtime: O(1) [4], size: INF 1151.70/293.52 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.70/293.52 sum: runtime: O(1) [12], size: O(1) [7] 1151.70/293.52 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.70/293.52 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.52 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.52 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.70/293.52 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.70/293.52 diff: runtime: O(1) [12], size: INF 1151.70/293.52 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.70/293.52 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.70/293.52 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.70/293.52 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.52 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.52 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.70/293.52 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.70/293.52 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.70/293.52 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.70/293.52 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.52 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.70/293.52 mult#2: runtime: O(n^1) [10 + 48*z + 16*z'], size: O(n^1) [z + 32*z'] 1151.70/293.52 mult#1: runtime: O(n^3) [1 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z'], size: O(n^2) [2 + z + 32*z*z'] 1151.70/293.52 mult: runtime: O(n^3) [2 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z'], size: O(n^2) [2 + z + 32*z*z'] 1151.70/293.52 1151.70/293.52 ---------------------------------------- 1151.70/293.52 1151.70/293.52 (329) IntTrsBoundProof (UPPER BOUND(ID)) 1151.70/293.52 1151.70/293.52 Computed SIZE bound using CoFloCo for: mult3 1151.70/293.52 after applying outer abstraction to obtain an ITS, 1151.70/293.52 resulting in: INF with polynomial bound: ? 1151.70/293.52 1151.70/293.52 ---------------------------------------- 1151.70/293.52 1151.70/293.52 (330) 1151.70/293.52 Obligation: 1151.70/293.52 Complexity RNTS consisting of the following rules: 1151.70/293.52 1151.70/293.52 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.70/293.52 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.70/293.52 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.70/293.52 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.70/293.52 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.52 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.70/293.52 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.70/293.52 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.70/293.52 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.70/293.52 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.52 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.70/293.52 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.70/293.52 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.52 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.70/293.52 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.52 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.52 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.52 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.70/293.52 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.52 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.52 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.52 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.52 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.52 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.52 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.52 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.52 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.52 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.52 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.70/293.52 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.70/293.52 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.70/293.52 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.70/293.52 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.52 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.52 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.70/293.52 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.70/293.52 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.52 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.70/293.52 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.70/293.52 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.70/293.52 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.70/293.52 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.70/293.52 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.70/293.52 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.52 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.52 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.52 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.52 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.52 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.70/293.52 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.70/293.52 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.70/293.52 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.70/293.52 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.70/293.52 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.70/293.52 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.70/293.52 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.70/293.52 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.70/293.52 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.52 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.52 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.52 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.52 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.52 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.52 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.70/293.52 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.70/293.52 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.70/293.52 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.70/293.52 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.52 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.70/293.52 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.52 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.52 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.70/293.52 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.70/293.52 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.70/293.52 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.52 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.70/293.52 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.52 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.70/293.52 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.70/293.52 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.52 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.52 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.70/293.52 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.70/293.52 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.70/293.52 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.70/293.52 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.52 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.70/293.52 mult(z, z') -{ 2 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> s112 :|: s112 >= 0, s112 <= 32 * (z' * z) + z + 2, z' >= 0, z >= 0 1151.70/293.52 mult#1(z, z') -{ 62 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s113 + 16*z' }-> s114 :|: s113 >= 0, s113 <= 32 * (z' * @xs) + @xs + 2, s114 >= 0, s114 <= 1 + 0 + s113 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.52 mult#1(z, z') -{ 61 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s115 + 16*z' }-> s116 :|: s115 >= 0, s115 <= 32 * (z' * @xs) + @xs + 2, s116 >= 0, s116 <= 1 + 0 + s115 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.70/293.52 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.70/293.52 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.52 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.70/293.52 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.70/293.52 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 mult3(z, z', z'') -{ 5 + 313*s117 + 32*s117*z' + 96*s117^2 + 3072*s117^2*z' + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> s118 :|: s118 >= 0, s118 <= s117 + 32 * (z' * s117) + 2, s117 >= 0, s117 <= 32 * (z' * z) + z + 2, z'' >= 0, z' >= 0, z >= 0 1151.70/293.52 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.70/293.52 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.70/293.52 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.70/293.52 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.70/293.52 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.70/293.52 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.70/293.52 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.70/293.52 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.70/293.52 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.70/293.52 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.70/293.52 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.70/293.52 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.70/293.52 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.70/293.52 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.70/293.52 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.70/293.52 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.70/293.52 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.70/293.52 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.70/293.52 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.70/293.52 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.70/293.52 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.70/293.52 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.70/293.52 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.52 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.52 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.70/293.52 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.70/293.52 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.70/293.52 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.70/293.52 1151.70/293.52 Function symbols to be analyzed: {mult3} 1151.70/293.52 Previous analysis results are: 1151.70/293.52 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.70/293.52 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.52 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.70/293.52 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.70/293.52 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.70/293.52 #and: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.70/293.52 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 #compare: runtime: O(1) [0], size: O(1) [3] 1151.70/293.52 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.70/293.52 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.52 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.70/293.52 #greater: runtime: O(1) [1], size: O(1) [2] 1151.70/293.52 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.52 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.52 #eq: runtime: O(1) [0], size: O(1) [2] 1151.70/293.52 #less: runtime: O(1) [1], size: O(1) [2] 1151.70/293.52 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.70/293.52 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.70/293.52 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.52 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.70/293.52 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.70/293.52 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.70/293.52 #equal: runtime: O(1) [1], size: O(1) [2] 1151.70/293.52 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.70/293.52 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.70/293.52 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.70/293.52 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.70/293.52 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.70/293.52 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.70/293.52 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.70/293.52 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.70/293.52 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.70/293.52 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.70/293.52 mod: runtime: O(1) [4], size: INF 1151.70/293.52 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.70/293.52 sum: runtime: O(1) [12], size: O(1) [7] 1151.70/293.52 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.70/293.52 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.52 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.52 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.70/293.52 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.70/293.52 diff: runtime: O(1) [12], size: INF 1151.70/293.52 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.70/293.52 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.70/293.52 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.70/293.52 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.70/293.52 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.52 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.70/293.52 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.70/293.52 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.70/293.52 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.70/293.52 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.70/293.52 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.70/293.52 mult#2: runtime: O(n^1) [10 + 48*z + 16*z'], size: O(n^1) [z + 32*z'] 1151.70/293.52 mult#1: runtime: O(n^3) [1 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z'], size: O(n^2) [2 + z + 32*z*z'] 1151.70/293.52 mult: runtime: O(n^3) [2 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z'], size: O(n^2) [2 + z + 32*z*z'] 1151.70/293.52 mult3: runtime: ?, size: INF 1151.70/293.52 1151.70/293.52 ---------------------------------------- 1151.70/293.52 1151.70/293.52 (331) IntTrsBoundProof (UPPER BOUND(ID)) 1151.70/293.52 1151.70/293.52 Computed RUNTIME bound using KoAT for: mult3 1151.70/293.52 after applying outer abstraction to obtain an ITS, 1151.70/293.52 resulting in: O(n^5) with polynomial bound: 1015 + 1010*z + 34656*z*z' + 394240*z*z'^2 + 192*z^2 + 12288*z^2*z' + 294912*z^2*z'^2 + 3145728*z^2*z'^3 + 12352*z' 1151.70/293.52 1151.70/293.52 ---------------------------------------- 1151.70/293.52 1151.70/293.52 (332) 1151.70/293.52 Obligation: 1151.70/293.52 Complexity RNTS consisting of the following rules: 1151.70/293.52 1151.70/293.52 #abs(z) -{ 1 }-> 0 :|: z = 0 1151.70/293.52 #abs(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #abs(z) -{ 1 }-> 1 + (z - 1) :|: z - 1 >= 0 1151.70/293.52 #abs(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s :|: s >= 0, s <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 1 + (1 + (z' - 3)) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 1 + (1 + (1 + (z' - 2))) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s1 :|: s1 >= 0, s1 <= 0 + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> s2 :|: s2 >= 0, s2 <= 1 + (1 + 0) + 2, z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0 1151.70/293.52 #add(z, z') -{ 0 }-> s27 :|: s25 >= 0, s25 <= 2 * (1 + (1 + (z - 4))) + z', s26 >= 0, s26 <= s25 + 2, s27 >= 0, s27 <= s26 + 2, z - 4 >= 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> s30 :|: s28 >= 0, s28 <= 2 * (1 + (1 + (z - 4))) + z', s29 >= 0, s29 <= s28 + 2, s30 >= 0, s30 <= s29 + 2, z - 4 >= 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> z' :|: z = 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0, z' = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + 0), z' >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z - 3 >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, v0' >= 0, 0 = v0' 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, v0 >= 0, 1 + (1 + (z' - 3)) = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, v0 >= 0, 1 + (1 + (1 + (z' - 2))) = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), v0 >= 0, 0 = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.70/293.52 #add(z, z') -{ 0 }-> 0 :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, 1 + (1 + 0) = 1 + (1 + 0) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + (1 + @x')) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + @x') :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + (1 + @x')) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + 0), z' >= 0, z' = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z - 3 >= 0, z' >= 0, 0 = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, 0 = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + 0) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 1 + (1 + 0), 0 = 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (z' - 3)) :|: z = 1 + (1 + 0), z' >= 0, z' - 3 >= 0 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x)) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' = 0, @x >= 0, 1 + (1 + 0) = 1 + (1 + @x) 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 3 >= 0, @x' >= 0, 1 + (1 + (z' - 3)) = 1 + (1 + @x') 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + @x')) :|: z = 1 + (1 + (1 + 0)), z' >= 0, z' - 2 >= 0, @x' >= 0, 1 + (1 + (1 + (z' - 2))) = 1 + (1 + @x') 1151.70/293.52 #add(z, z') -{ 0 }-> 1 + (1 + (1 + (z' - 2))) :|: z = 1 + (1 + 0), z' >= 0, z' - 2 >= 0 1151.70/293.52 #and(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.52 #and(z, z') -{ 0 }-> 1 :|: z = 1, z' = 1 1151.70/293.52 #and(z, z') -{ 0 }-> 1 :|: z' = 2, z = 1 1151.70/293.52 #and(z, z') -{ 0 }-> 1 :|: z = 2, z' = 1 1151.70/293.52 #and(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #ckgt(z) -{ 0 }-> 2 :|: z = 2 1151.70/293.52 #ckgt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.52 #ckgt(z) -{ 0 }-> 1 :|: z = 3 1151.70/293.52 #ckgt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #cklt(z) -{ 0 }-> 2 :|: z = 3 1151.70/293.52 #cklt(z) -{ 0 }-> 1 :|: z = 1 1151.70/293.52 #cklt(z) -{ 0 }-> 1 :|: z = 2 1151.70/293.52 #cklt(z) -{ 0 }-> 0 :|: z >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> s5 :|: s5 >= 0, s5 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 3, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 3 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 3 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 2 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.52 #compare(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #div(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.70/293.52 #div(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #div(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #div(z, z') -{ 0 }-> 1 + s32 :|: s32 >= 0, s32 <= z - 1 + 1, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> s41 :|: s41 >= 0, s41 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> s44 :|: s42 >= 0, s42 <= 2, s43 >= 0, s43 <= 2, s44 >= 0, s44 <= 2, @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.52 #eq(z, z') -{ 0 }-> 2 :|: z = 0, z' = 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 2 :|: z = 2, z' = 2 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z = 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z' = 2, z = 1 + @x_1 + @x_2, @x_2 >= 0 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: @x_1 >= 0, z = 1 + @x_1 + @x_2, @y_1 >= 0, @x_2 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.52 #eq(z, z') -{ 0 }-> 1 :|: z = 2, @y_1 >= 0, @y_2 >= 0, z' = 1 + @y_1 + @y_2 1151.70/293.52 #eq(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.70/293.52 #equal(z, z') -{ 1 }-> s36 :|: s36 >= 0, s36 <= 2, z >= 0, z' >= 0 1151.70/293.52 #greater(z, z') -{ 1 }-> s10 :|: s9 >= 0, s9 <= 3, s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.52 #greater(z, z') -{ 1 }-> s8 :|: s7 >= 0, s7 <= 3, s8 >= 0, s8 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.70/293.52 #greater(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.70/293.52 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.70/293.52 #greater(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.89/293.52 #greater(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.89/293.52 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.89/293.52 #greater(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.89/293.52 #greater(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.89/293.52 #greater(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.89/293.52 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.89/293.52 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.89/293.52 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.89/293.52 #greater(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.89/293.52 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.89/293.52 #greater(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.89/293.52 #greater(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.89/293.52 #less(z, z') -{ 1 }-> s12 :|: s11 >= 0, s11 <= 3, s12 >= 0, s12 <= 2, z' - 1 >= 0, z - 1 >= 0 1151.89/293.52 #less(z, z') -{ 1 }-> s14 :|: s13 >= 0, s13 <= 3, s14 >= 0, s14 <= 2, z - 1 >= 0, z' - 1 >= 0 1151.89/293.52 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z = 0, 3 = 3 1151.89/293.52 #less(z, z') -{ 1 }-> 2 :|: z - 1 >= 0, z' = 0, 3 = 3 1151.89/293.52 #less(z, z') -{ 1 }-> 2 :|: z' - 1 >= 0, z - 1 >= 0, 3 = 3 1151.89/293.52 #less(z, z') -{ 1 }-> 1 :|: z = 0, z' = 0, 1 = 1 1151.89/293.52 #less(z, z') -{ 1 }-> 1 :|: z' - 1 >= 0, z = 0, 2 = 2 1151.89/293.52 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0, 2 = 2 1151.89/293.52 #less(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' - 1 >= 0, 2 = 2 1151.89/293.52 #less(z, z') -{ 1 }-> 0 :|: z = 0, z' = 0, v0 >= 0, 1 = v0 1151.89/293.52 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 2 = v0 1151.89/293.52 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z = 0, v0 >= 0, 3 = v0 1151.89/293.52 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 3 = v0 1151.89/293.52 #less(z, z') -{ 1 }-> 0 :|: z' - 1 >= 0, z - 1 >= 0, v0 >= 0, 3 = v0 1151.89/293.52 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' = 0, v0 >= 0, 2 = v0 1151.89/293.52 #less(z, z') -{ 1 }-> 0 :|: z - 1 >= 0, z' - 1 >= 0, v0 >= 0, 2 = v0 1151.89/293.52 #less(z, z') -{ 1 }-> 0 :|: z >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.89/293.52 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' = 0 1151.89/293.52 #mult(z, z') -{ 0 }-> 0 :|: z = 0, z' - 1 >= 0 1151.89/293.52 #mult(z, z') -{ 0 }-> 0 :|: z - 1 >= 0, z' = 0 1151.89/293.52 #mult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.89/293.52 #mult(z, z') -{ 0 }-> 1 + s51 :|: s51 >= 0, s51 <= 4 * (z' - 1) + 4 * ((z' - 1) * (z - 1)) + 4 * (z - 1) + 4, z - 1 >= 0, z' - 1 >= 0 1151.89/293.52 #natdiv(z, z') -{ 0 }-> 1 :|: z = 0, z' = 0 1151.89/293.52 #natdiv(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.89/293.52 #natdiv(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + 1, z - 1 >= 0, z' = 1 + 0 1151.89/293.52 #natdiv(z, z') -{ 0 }-> 1 + s34 :|: s34 >= 0, s34 <= s3 + 1, s3 >= 0, s3 <= z - 2, z - 2 >= 0, z' - 2 >= 0 1151.89/293.52 #natdiv(z, z') -{ 0 }-> 1 + s35 :|: s35 >= 0, s35 <= 0 + 1, z - 1 >= 0, z' - 1 >= 0 1151.89/293.52 #natmult(z, z') -{ 0 }-> s22 :|: s22 >= 0, s22 <= 2 * (1 + z') + 0, z = 1 + 0, z' >= 0 1151.89/293.52 #natmult(z, z') -{ 0 }-> s23 :|: s23 >= 0, s23 <= 2 * (1 + z') + 0, z - 1 >= 0, z' >= 0 1151.89/293.52 #natmult(z, z') -{ 0 }-> s54 :|: s52 >= 0, s52 <= 4 * z' + 4 * (z' * (z - 2)) + 4 * (z - 2) + 4, s53 >= 0, s53 <= 2 * (1 + z') + s52, s54 >= 0, s54 <= 2 * (1 + z') + s53, z - 2 >= 0, z' >= 0 1151.89/293.52 #natmult(z, z') -{ 0 }-> 0 :|: z = 0, z' >= 0 1151.89/293.52 #natmult(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.89/293.52 #natsub(z, z') -{ 0 }-> s4 :|: s4 >= 0, s4 <= z - 1, z - 1 >= 0, z' - 1 >= 0 1151.89/293.52 #natsub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.89/293.52 #natsub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.89/293.52 #pred(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.89/293.52 #pred(z) -{ 0 }-> 0 :|: z >= 0 1151.89/293.52 #pred(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.89/293.52 #pred(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.89/293.52 #pred(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.89/293.52 #sub(z, z') -{ 0 }-> s24 :|: s24 >= 0, s24 <= 2 * z + (1 + (z' - 1)), z >= 0, z' - 1 >= 0 1151.89/293.52 #sub(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 1151.89/293.52 #sub(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.89/293.52 #succ(z) -{ 0 }-> 0 :|: z = 1 + (1 + 0) 1151.89/293.52 #succ(z) -{ 0 }-> 0 :|: z >= 0 1151.89/293.52 #succ(z) -{ 0 }-> 1 + (1 + 0) :|: z = 0 1151.89/293.52 #succ(z) -{ 0 }-> 1 + (1 + (z - 3)) :|: z - 3 >= 0 1151.89/293.52 #succ(z) -{ 0 }-> 1 + (1 + (1 + (z - 2))) :|: z - 2 >= 0 1151.89/293.52 add(z, z') -{ 7 + 16*z + 48*z' }-> s89 :|: s89 >= 0, s89 <= 32 * z, z' >= 0, z >= 0 1151.89/293.52 add(z, z') -{ 6 + 16*z + 48*z' }-> s90 :|: s90 >= 0, s90 <= 32 * z, z' >= 0, z >= 0 1151.89/293.52 add'(z, z', z'') -{ 5 + 16*z + 48*z' }-> s91 :|: s91 >= 0, s91 <= 32 * z, z' >= 0, z >= 0, z'' >= 0 1151.89/293.52 add'#1(z, z', z'') -{ 3 + 16*@xs + 48*z' }-> s92 :|: s92 >= 0, s92 <= 32 * @xs + 28, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.89/293.52 add'#1(z, z', z'') -{ 1 }-> 2 :|: z = 2, z' >= 0, z'' >= 0 1151.89/293.52 add'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.89/293.52 add'#2(z, z', z'', z1) -{ 19 + 48*@ys + 16*z1 }-> s93 :|: s93 >= 0, s93 <= s84 + 32 * z1, s84 >= 0, s84 <= 7, s55 >= 0, s55 <= 2 * z'' + @y, s56 >= 0, s56 <= 2 * s55 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.89/293.52 add'#2(z, z', z'', z1) -{ 1 }-> 2 :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.89/293.52 add'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.89/293.52 add'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.89/293.52 add'#3(z, z', z'') -{ 6 + 16*z' + 48*z'' }-> 1 + @z + s94 :|: s94 >= 0, s94 <= 32 * z', z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.89/293.52 bitToInt(z) -{ 10 + 10*z }-> s79 :|: s79 >= 0, s79 <= inf, z >= 0 1151.89/293.52 bitToInt(z) -{ 9 + 10*z }-> s80 :|: s80 >= 0, s80 <= inf', z >= 0 1151.89/293.52 bitToInt'(z, z') -{ 3 + 10*z }-> s81 :|: s81 >= 0, s81 <= inf'', z' >= 0, z >= 0 1151.89/293.52 bitToInt'#1(z, z') -{ 12 + 10*@xs }-> s83 :|: s82 >= 0, s82 <= inf1, s83 >= 0, s83 <= 2 * s73 + s82, s73 >= 0, s73 <= 4 * (z' * @x) + 1, s74 >= 0, s74 <= 4 * ((1 + (1 + (1 + 0))) * z') + 1, @x >= 0, z = 1 + @x + @xs, z' >= 0, @xs >= 0 1151.89/293.52 bitToInt'#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.89/293.52 bitToInt'#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.89/293.52 bitToInt'#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.89/293.52 compare(z, z') -{ 26 + 11*z' }-> s101 :|: s101 >= 0, s101 <= 3 * z', z' >= 0, z >= 0 1151.89/293.52 compare#1(z, z') -{ 25 + 11*z' }-> s102 :|: s102 >= 0, s102 <= 3 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.89/293.52 compare#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.89/293.52 compare#1(z, z') -{ 2 }-> 0 :|: z = 2, z' >= 0, 0 = 0 1151.89/293.52 compare#1(z, z') -{ 1 }-> 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0 1151.89/293.52 compare#2(z, z', z'') -{ 35 + 11*@ys }-> s104 :|: s103 >= 0, s103 <= 3 * @ys, s104 >= 0, s104 <= s103 + 3, z = 1 + @y + @ys, z' >= 0, z'' >= 0, @y >= 0, @ys >= 0 1151.89/293.52 compare#2(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.89/293.52 compare#2(z, z', z'') -{ 2 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, 0 = 0 1151.89/293.52 compare#2(z, z', z'') -{ 1 }-> 0 :|: z = 2, z' >= 0, z'' >= 0, v0 >= 0, 0 = v0 1151.89/293.52 compare#3(z, z', z'') -{ 8 }-> s86 :|: s86 >= 0, s86 <= z + 3, s37 >= 0, s37 <= 2, z' >= 0, z'' >= 0, z >= 0 1151.89/293.52 compare#4(z, z', z'', z1) -{ 6 }-> s76 :|: s76 >= 0, s76 <= 3, s15 >= 0, s15 <= 3, s16 >= 0, s16 <= 2, z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.89/293.52 compare#4(z, z', z'', z1) -{ 1 }-> z' :|: z'' >= 0, z = 1, z1 >= 0, z' >= 0 1151.89/293.52 compare#4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.89/293.52 compare#5(z, z', z'') -{ 4 }-> s19 :|: s17 >= 0, s17 <= 3, s18 >= 0, s18 <= 2, s19 >= 0, s19 <= 3, z' >= 0, z = 1, z'' >= 0 1151.89/293.52 compare#5(z, z', z'') -{ 2 }-> s64 :|: s64 >= 0, s64 <= 2 * 0 + (1 + (1 + 0)), z = 2, z' >= 0, z'' >= 0 1151.89/293.52 compare#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.89/293.52 compare#6(z) -{ 0 }-> 0 :|: z >= 0 1151.89/293.52 compare#6(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.89/293.52 compare#6(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.89/293.52 compare#6(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.89/293.52 compare#6(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.89/293.52 compare#6(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.89/293.52 diff(z, z', z'') -{ 12 }-> 1 + s87 + s67 :|: s87 >= 0, s87 <= inf2, s65 >= 0, s65 <= 2 * s50 + z'', s66 >= 0, s66 <= 2, s67 >= 0, s67 <= 3, s58 >= 0, s58 <= 2 * s31 + z'', s50 >= 0, s50 <= 2 * z + z', s31 >= 0, s31 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.89/293.52 diff#1(z) -{ 0 }-> 0 :|: z >= 0 1151.89/293.52 diff#1(z) -{ 2 }-> 0 :|: z = 1, 0 = 0 1151.89/293.52 diff#1(z) -{ 1 }-> 0 :|: z = 1, v0 >= 0, 0 = v0 1151.89/293.52 diff#1(z) -{ 1 }-> 0 :|: z = 2, v0 >= 0, 1 + (1 + 0) = v0 1151.89/293.52 diff#1(z) -{ 2 }-> 1 + @x :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.89/293.52 diff#1(z) -{ 2 }-> 1 + (1 + @x) :|: z = 2, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.89/293.52 div(z, z') -{ 1 }-> s61 :|: s61 >= 0, s61 <= z + 1, z >= 0, z' >= 0 1151.89/293.52 leq(z, z') -{ 28 + 11*z' }-> s106 :|: s105 >= 0, s105 <= 3 * z', s106 >= 0, s106 <= 2, z' >= 0, z >= 0 1151.89/293.52 minus(z, z') -{ 1 }-> s49 :|: s49 >= 0, s49 <= 2 * z + z', z >= 0, z' >= 0 1151.89/293.52 mod(z, z') -{ 4 }-> s78 :|: s77 >= 0, s77 <= 4 * (s62 * z) + 1, s78 >= 0, s78 <= 2 * z + s77, s62 >= 0, s62 <= z + 1, z >= 0, z' >= 0 1151.89/293.52 mult(z, z') -{ 2 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> s112 :|: s112 >= 0, s112 <= 32 * (z' * z) + z + 2, z' >= 0, z >= 0 1151.89/293.52 mult#1(z, z') -{ 62 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s113 + 16*z' }-> s114 :|: s113 >= 0, s113 <= 32 * (z' * @xs) + @xs + 2, s114 >= 0, s114 <= 1 + 0 + s113 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.89/293.52 mult#1(z, z') -{ 61 + 313*@xs + 32*@xs*z' + 96*@xs^2 + 3072*@xs^2*z' + 48*s115 + 16*z' }-> s116 :|: s115 >= 0, s115 <= 32 * (z' * @xs) + @xs + 2, s116 >= 0, s116 <= 1 + 0 + s115 + 32 * z', @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0 1151.89/293.52 mult#1(z, z') -{ 1 }-> 2 :|: z = 2, z' >= 0 1151.89/293.52 mult#1(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.89/293.52 mult#2(z, z', z'') -{ 10 + 48*z + 16*z' }-> s111 :|: s111 >= 0, s111 <= 32 * z' + z, s38 >= 0, s38 <= 2, z'' >= 0, z' >= 0, z >= 0 1151.89/293.52 mult#3(z, z', z'') -{ 8 + 16*z' + 48*z'' }-> s100 :|: s100 >= 0, s100 <= 32 * z', z = 2, z' >= 0, z'' >= 0 1151.89/293.52 mult#3(z, z', z'') -{ 1 }-> z'' :|: z = 1, z' >= 0, z'' >= 0 1151.89/293.52 mult#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.89/293.52 mult3(z, z', z'') -{ 5 + 313*s117 + 32*s117*z' + 96*s117^2 + 3072*s117^2*z' + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z' }-> s118 :|: s118 >= 0, s118 <= s117 + 32 * (z' * s117) + 2, s117 >= 0, s117 <= 32 * (z' * z) + z + 2, z'' >= 0, z' >= 0, z >= 0 1151.89/293.52 plus(z, z') -{ 1 }-> s20 :|: s20 >= 0, s20 <= 2 * z + z', z >= 0, z' >= 0 1151.89/293.52 sub(z, z') -{ 45 + 20*z }-> s108 :|: s107 >= 0, s107 <= inf8, s108 >= 0, s108 <= s107, z' >= 0, z >= 0 1151.89/293.52 sub(z, z') -{ 44 + 20*z }-> s110 :|: s109 >= 0, s109 <= inf9, s110 >= 0, s110 <= s109, z' >= 0, z >= 0 1151.89/293.52 sub#1(z) -{ 1 }-> @b :|: @_@1 >= 0, z = 1 + @b + @_@1, @b >= 0 1151.89/293.52 sub'(z, z', z'') -{ 42 + 20*z }-> s95 :|: s95 >= 0, s95 <= inf4, z' >= 0, z >= 0, z'' >= 0 1151.89/293.52 sub'#1(z, z', z'') -{ 61 + 20*@xs }-> s96 :|: s96 >= 0, s96 <= inf5, @x >= 0, z = 1 + @x + @xs, @xs >= 0, z' >= 0, z'' >= 0 1151.89/293.52 sub'#1(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.89/293.52 sub'#1(z, z', z'') -{ 1 }-> 1 + 2 + z'' :|: z = 2, z' >= 0, z'' >= 0 1151.89/293.52 sub'#2(z, z', z'', z1) -{ 60 + 20*z1 }-> s99 :|: s99 >= 0, s99 <= inf7, s88 >= 0, s88 <= inf3, s68 >= 0, s68 <= 2 * z'' + @y, s69 >= 0, s69 <= 2 * s68 + z', s70 >= 0, s70 <= 2, s71 >= 0, s71 <= 3, s59 >= 0, s59 <= 2 * z'' + @y, s60 >= 0, s60 <= 2 * s59 + z', z = 1 + @y + @ys, z'' >= 0, z1 >= 0, @y >= 0, @ys >= 0, z' >= 0 1151.89/293.52 sub'#2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 1151.89/293.52 sub'#2(z, z', z'', z1) -{ 1 }-> 1 + 2 + z' :|: z = 2, z'' >= 0, z1 >= 0, z' >= 0 1151.89/293.52 sub'#3(z, z', z'') -{ 47 + 20*z' }-> s98 :|: s97 >= 0, s97 <= inf6, s98 >= 0, s98 <= s97 + @z + 1, z = 1 + @z + @r', z' >= 0, @r' >= 0, z'' >= 0, @z >= 0 1151.89/293.52 sub'#3(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.89/293.52 sub'#4(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.89/293.52 sub'#4(z, z') -{ 4 }-> 1 + s46 + @s :|: s45 >= 0, s45 <= 2, s46 >= 0, s46 <= z' + @zs + 1, z = 1 + @zs + @s, @zs >= 0, @s >= 0, z' >= 0 1151.89/293.52 sub'#5(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 1151.89/293.52 sub'#5(z, z', z'') -{ 1 }-> 1 + z' + z'' :|: z = 1, z'' >= 0, z' >= 0 1151.89/293.52 sub'#5(z, z', z'') -{ 2 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, 0 = 0 1151.89/293.52 sub'#5(z, z', z'') -{ 1 }-> 1 + 0 + z'' :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, 0 = v0 1151.89/293.52 sum(z, z', z'') -{ 12 }-> s85 :|: s85 >= 0, s85 <= 7, s57 >= 0, s57 <= 2 * s21 + z'', s21 >= 0, s21 <= 2 * z + z', z >= 0, z' >= 0, z'' >= 0 1151.89/293.52 sum#1(z) -{ 9 }-> s75 :|: s75 >= 0, s75 <= 7, s39 >= 0, s39 <= 2, z >= 0 1151.89/293.52 sum#2(z, z') -{ 7 }-> s63 :|: s63 >= 0, s63 <= 7, s40 >= 0, s40 <= 2, z = 1, z' >= 0 1151.89/293.52 sum#2(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.89/293.52 sum#2(z, z') -{ 3 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0 1151.89/293.52 sum#2(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 1151.89/293.52 sum#2(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' 1151.89/293.52 sum#3(z, z') -{ 5 }-> s48 :|: s47 >= 0, s47 <= 2, s48 >= 0, s48 <= 7, z = 1, z' >= 0 1151.89/293.52 sum#3(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 1151.89/293.52 sum#3(z, z') -{ 2 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, 0 = 0 1151.89/293.52 sum#3(z, z') -{ 1 }-> 1 + 0 + 0 :|: z = 2, z' >= 0, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 0 = v0' 1151.89/293.52 sum#3(z, z') -{ 3 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.89/293.52 sum#3(z, z') -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.89/293.52 sum#3(z, z') -{ 3 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, 0 = 0 1151.89/293.52 sum#3(z, z') -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 2, z' >= 0, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 0 = v0 1151.89/293.52 sum#4(z) -{ 0 }-> 0 :|: z >= 0 1151.89/293.52 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.89/293.52 sum#4(z) -{ 2 }-> 1 + 0 + 0 :|: z = 2, 0 = 0, v0 >= 0, 1 + (1 + 0) = v0 1151.89/293.52 sum#4(z) -{ 1 }-> 1 + 0 + 0 :|: z = 2, v0 >= 0, 0 = v0, v0' >= 0, 1 + (1 + 0) = v0' 1151.89/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.89/293.52 sum#4(z) -{ 3 }-> 1 + 0 + (1 + @x) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.89/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + @x) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.89/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 1, v0 >= 0, 1 + (1 + 0) = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.89/293.52 sum#4(z) -{ 3 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, 0 = 0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.89/293.52 sum#4(z) -{ 2 }-> 1 + 0 + (1 + (1 + @x)) :|: z = 2, v0 >= 0, 0 = v0, @x >= 0, 1 + (1 + 0) = 1 + @x 1151.89/293.52 sum#4(z) -{ 2 }-> 1 + (1 + @x) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.89/293.52 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.89/293.52 sum#4(z) -{ 3 }-> 1 + (1 + @x) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.89/293.52 sum#4(z) -{ 2 }-> 1 + (1 + (1 + @x)) + 0 :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, v0 >= 0, 1 + (1 + 0) = v0 1151.89/293.52 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + @x') :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.89/293.52 sum#4(z) -{ 3 }-> 1 + (1 + (1 + @x)) + (1 + (1 + @x')) :|: z = 1, @x >= 0, 1 + (1 + 0) = 1 + @x, @x' >= 0, 1 + (1 + 0) = 1 + @x' 1151.89/293.52 times(z, z') -{ 1 }-> s72 :|: s72 >= 0, s72 <= 4 * (z' * z) + 1, z >= 0, z' >= 0 1151.89/293.52 1151.89/293.52 Function symbols to be analyzed: 1151.89/293.52 Previous analysis results are: 1151.89/293.52 #ckgt: runtime: O(1) [0], size: O(1) [2] 1151.89/293.52 sub#1: runtime: O(1) [1], size: O(n^1) [z] 1151.89/293.52 #pred: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.89/293.52 #natsub: runtime: O(1) [0], size: O(n^1) [z] 1151.89/293.52 compare#6: runtime: O(1) [2], size: O(1) [3] 1151.89/293.52 sum#4: runtime: O(1) [3], size: O(1) [7] 1151.89/293.52 #and: runtime: O(1) [0], size: O(1) [2] 1151.89/293.52 sub'#5: runtime: O(1) [2], size: O(n^1) [1 + z' + z''] 1151.89/293.52 #cklt: runtime: O(1) [0], size: O(1) [2] 1151.89/293.52 #compare: runtime: O(1) [0], size: O(1) [3] 1151.89/293.52 diff#1: runtime: O(1) [2], size: O(1) [3] 1151.89/293.52 #abs: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.89/293.52 #succ: runtime: O(1) [0], size: O(n^1) [2 + z] 1151.89/293.52 #greater: runtime: O(1) [1], size: O(1) [2] 1151.89/293.52 #add: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.89/293.52 #natdiv: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.89/293.52 #eq: runtime: O(1) [0], size: O(1) [2] 1151.89/293.52 #less: runtime: O(1) [1], size: O(1) [2] 1151.89/293.52 #sub: runtime: O(1) [0], size: O(n^1) [2*z + z'] 1151.89/293.52 #natmult: runtime: O(1) [0], size: O(n^2) [4 + 4*z + 4*z*z' + 4*z'] 1151.89/293.52 plus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.89/293.52 #div: runtime: O(1) [0], size: O(n^1) [1 + z] 1151.89/293.52 sum#3: runtime: O(1) [5], size: O(1) [7] 1151.89/293.52 sub'#4: runtime: O(1) [4], size: O(n^1) [1 + z + z'] 1151.89/293.52 #equal: runtime: O(1) [1], size: O(1) [2] 1151.89/293.52 minus: runtime: O(1) [1], size: O(n^1) [2*z + z'] 1151.89/293.52 #mult: runtime: O(1) [0], size: O(n^2) [1 + 4*z*z'] 1151.89/293.52 div: runtime: O(1) [1], size: O(n^1) [1 + z] 1151.89/293.52 sum#2: runtime: O(1) [7], size: O(1) [7] 1151.89/293.52 compare#5: runtime: O(1) [4], size: O(1) [3] 1151.89/293.52 times: runtime: O(1) [1], size: O(n^2) [1 + 4*z*z'] 1151.89/293.52 bitToInt': runtime: O(n^1) [8 + 10*z], size: INF 1151.89/293.52 bitToInt'#1: runtime: O(n^1) [2 + 10*z], size: INF 1151.89/293.52 sum#1: runtime: O(1) [9], size: O(1) [7] 1151.89/293.52 compare#4: runtime: O(1) [6], size: O(n^1) [3 + z'] 1151.89/293.52 mod: runtime: O(1) [4], size: INF 1151.89/293.52 bitToInt: runtime: O(n^1) [10 + 10*z], size: INF 1151.89/293.52 sum: runtime: O(1) [12], size: O(1) [7] 1151.89/293.52 add'#2: runtime: O(n^1) [2 + 48*z + 16*z1], size: O(n^1) [28 + 32*z1] 1151.89/293.52 add'#1: runtime: O(n^1) [4 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.89/293.52 add': runtime: O(n^1) [5 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.89/293.52 add'#3: runtime: O(n^1) [6 + 16*z' + 48*z''], size: O(n^1) [z + 32*z'] 1151.89/293.52 compare#3: runtime: O(1) [8], size: O(n^1) [3 + z] 1151.89/293.52 diff: runtime: O(1) [12], size: INF 1151.89/293.52 sub'#2: runtime: O(n^1) [60 + 20*z1], size: INF 1151.89/293.52 sub'#1: runtime: O(n^1) [41 + 20*z], size: INF 1151.89/293.52 sub'#3: runtime: O(n^1) [47 + 20*z'], size: INF 1151.89/293.52 add: runtime: O(n^1) [7 + 16*z + 48*z'], size: O(n^1) [32*z] 1151.89/293.52 compare#1: runtime: O(n^1) [25 + 11*z'], size: O(n^1) [3*z'] 1151.89/293.52 compare#2: runtime: O(n^1) [24 + 11*z], size: O(n^1) [3*z] 1151.89/293.52 sub': runtime: O(n^1) [42 + 20*z], size: INF 1151.89/293.52 mult#3: runtime: O(n^1) [8 + 16*z' + 48*z''], size: O(n^1) [32*z' + z''] 1151.89/293.52 leq: runtime: O(n^1) [28 + 11*z'], size: O(1) [2] 1151.89/293.52 compare: runtime: O(n^1) [26 + 11*z'], size: O(n^1) [3*z'] 1151.89/293.52 sub: runtime: O(n^1) [45 + 20*z], size: INF 1151.89/293.52 mult#2: runtime: O(n^1) [10 + 48*z + 16*z'], size: O(n^1) [z + 32*z'] 1151.89/293.52 mult#1: runtime: O(n^3) [1 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z'], size: O(n^2) [2 + z + 32*z*z'] 1151.89/293.52 mult: runtime: O(n^3) [2 + 313*z + 32*z*z' + 96*z^2 + 3072*z^2*z'], size: O(n^2) [2 + z + 32*z*z'] 1151.89/293.52 mult3: runtime: O(n^5) [1015 + 1010*z + 34656*z*z' + 394240*z*z'^2 + 192*z^2 + 12288*z^2*z' + 294912*z^2*z'^2 + 3145728*z^2*z'^3 + 12352*z'], size: INF 1151.89/293.52 1151.89/293.52 ---------------------------------------- 1151.89/293.52 1151.89/293.52 (333) FinalProof (FINISHED) 1151.89/293.52 Computed overall runtime complexity 1151.89/293.52 ---------------------------------------- 1151.89/293.52 1151.89/293.52 (334) 1151.89/293.52 BOUNDS(1, n^5) 1151.89/293.52 1151.89/293.52 ---------------------------------------- 1151.89/293.52 1151.89/293.52 (335) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) 1151.89/293.52 Transformed a relative TRS into a decreasing-loop problem. 1151.89/293.52 ---------------------------------------- 1151.89/293.52 1151.89/293.52 (336) 1151.89/293.52 Obligation: 1151.89/293.52 Analyzing the following TRS for decreasing loops: 1151.89/293.52 1151.89/293.52 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^5). 1151.89/293.52 1151.89/293.52 1151.89/293.52 The TRS R consists of the following rules: 1151.89/293.52 1151.89/293.52 #abs(#0) -> #0 1151.89/293.52 #abs(#neg(@x)) -> #pos(@x) 1151.89/293.52 #abs(#pos(@x)) -> #pos(@x) 1151.89/293.52 #abs(#s(@x)) -> #pos(#s(@x)) 1151.89/293.52 #equal(@x, @y) -> #eq(@x, @y) 1151.89/293.52 #greater(@x, @y) -> #ckgt(#compare(@x, @y)) 1151.89/293.52 #less(@x, @y) -> #cklt(#compare(@x, @y)) 1151.89/293.52 *(@x, @y) -> #mult(@x, @y) 1151.89/293.52 +(@x, @y) -> #add(@x, @y) 1151.89/293.52 -(@x, @y) -> #sub(@x, @y) 1151.89/293.52 add(@b1, @b2) -> add'(@b1, @b2, #abs(#0)) 1151.89/293.52 add'(@b1, @b2, @r) -> add'#1(@b1, @b2, @r) 1151.89/293.52 add'#1(::(@x, @xs), @b2, @r) -> add'#2(@b2, @r, @x, @xs) 1151.89/293.52 add'#1(nil, @b2, @r) -> nil 1151.89/293.52 add'#2(::(@y, @ys), @r, @x, @xs) -> add'#3(sum(@x, @y, @r), @xs, @ys) 1151.89/293.52 add'#2(nil, @r, @x, @xs) -> nil 1151.89/293.52 add'#3(tuple#2(@z, @r'), @xs, @ys) -> ::(@z, add'(@xs, @ys, @r')) 1151.89/293.52 bitToInt(@b) -> bitToInt'(@b, #abs(#pos(#s(#0)))) 1151.89/293.52 bitToInt'(@b, @n) -> bitToInt'#1(@b, @n) 1151.89/293.52 bitToInt'#1(::(@x, @xs), @n) -> +(*(@x, @n), bitToInt'(@xs, *(@n, #pos(#s(#s(#0)))))) 1151.89/293.52 bitToInt'#1(nil, @n) -> #abs(#0) 1151.89/293.52 compare(@b1, @b2) -> compare#1(@b1, @b2) 1151.89/293.52 compare#1(::(@x, @xs), @b2) -> compare#2(@b2, @x, @xs) 1151.89/293.52 compare#1(nil, @b2) -> #abs(#0) 1151.89/293.52 compare#2(::(@y, @ys), @x, @xs) -> compare#3(compare(@xs, @ys), @x, @y) 1151.89/293.52 compare#2(nil, @x, @xs) -> #abs(#0) 1151.89/293.52 compare#3(@r, @x, @y) -> compare#4(#equal(@r, #0), @r, @x, @y) 1151.89/293.52 compare#4(#false, @r, @x, @y) -> @r 1151.89/293.52 compare#4(#true, @r, @x, @y) -> compare#5(#less(@x, @y), @x, @y) 1151.89/293.52 compare#5(#false, @x, @y) -> compare#6(#greater(@x, @y)) 1151.89/293.52 compare#5(#true, @x, @y) -> -(#0, #pos(#s(#0))) 1151.89/293.52 compare#6(#false) -> #abs(#0) 1151.89/293.52 compare#6(#true) -> #abs(#pos(#s(#0))) 1151.89/293.52 diff(@x, @y, @r) -> tuple#2(mod(+(+(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(-(-(@x, @y), @r), #0))) 1151.89/293.52 diff#1(#false) -> #abs(#0) 1151.89/293.52 diff#1(#true) -> #abs(#pos(#s(#0))) 1151.89/293.52 div(@x, @y) -> #div(@x, @y) 1151.89/293.52 leq(@b1, @b2) -> #less(compare(@b1, @b2), #pos(#s(#0))) 1151.89/293.52 mod(@x, @y) -> -(@x, *(@x, div(@x, @y))) 1151.89/293.52 mult(@b1, @b2) -> mult#1(@b1, @b2) 1151.89/293.52 mult#1(::(@x, @xs), @b2) -> mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) 1151.89/293.52 mult#1(nil, @b2) -> nil 1151.89/293.52 mult#2(@zs, @b2, @x) -> mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) 1151.89/293.52 mult#3(#false, @b2, @zs) -> @zs 1151.89/293.52 mult#3(#true, @b2, @zs) -> add(@b2, @zs) 1151.89/293.52 mult3(@b1, @b2, @b3) -> mult(mult(@b1, @b2), @b2) 1151.89/293.52 sub(@b1, @b2) -> sub#1(sub'(@b1, @b2, #abs(#0))) 1151.89/293.52 sub#1(tuple#2(@b, @_@1)) -> @b 1151.89/293.52 sub'(@b1, @b2, @r) -> sub'#1(@b1, @b2, @r) 1151.89/293.52 sub'#1(::(@x, @xs), @b2, @r) -> sub'#2(@b2, @r, @x, @xs) 1151.89/293.52 sub'#1(nil, @b2, @r) -> tuple#2(nil, @r) 1151.89/293.52 sub'#2(::(@y, @ys), @r, @x, @xs) -> sub'#3(diff(@x, @y, @r), @xs, @ys) 1151.89/293.52 sub'#2(nil, @r, @x, @xs) -> tuple#2(nil, @r) 1151.89/293.52 sub'#3(tuple#2(@z, @r'), @xs, @ys) -> sub'#4(sub'(@xs, @ys, @r'), @z) 1151.89/293.52 sub'#4(tuple#2(@zs, @s), @z) -> tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) 1151.89/293.52 sub'#5(#false, @z, @zs) -> ::(@z, @zs) 1151.89/293.52 sub'#5(#true, @z, @zs) -> ::(#abs(#0), @zs) 1151.89/293.52 sum(@x, @y, @r) -> sum#1(+(+(@x, @y), @r)) 1151.89/293.52 sum#1(@s) -> sum#2(#equal(@s, #0), @s) 1151.89/293.52 sum#2(#false, @s) -> sum#3(#equal(@s, #pos(#s(#0))), @s) 1151.89/293.52 sum#2(#true, @s) -> tuple#2(#abs(#0), #abs(#0)) 1151.89/293.52 sum#3(#false, @s) -> sum#4(#equal(@s, #pos(#s(#s(#0))))) 1151.89/293.52 sum#3(#true, @s) -> tuple#2(#abs(#pos(#s(#0))), #abs(#0)) 1151.89/293.52 sum#4(#false) -> tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) 1151.89/293.52 sum#4(#true) -> tuple#2(#abs(#0), #abs(#pos(#s(#0)))) 1151.89/293.52 1151.89/293.52 The (relative) TRS S consists of the following rules: 1151.89/293.52 1151.89/293.52 #add(#0, @y) -> @y 1151.89/293.52 #add(#neg(#s(#0)), @y) -> #pred(@y) 1151.89/293.52 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) 1151.89/293.52 #add(#pos(#s(#0)), @y) -> #succ(@y) 1151.89/293.52 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) 1151.89/293.52 #and(#false, #false) -> #false 1151.89/293.52 #and(#false, #true) -> #false 1151.89/293.52 #and(#true, #false) -> #false 1151.89/293.52 #and(#true, #true) -> #true 1151.89/293.52 #ckgt(#EQ) -> #false 1151.89/293.52 #ckgt(#GT) -> #true 1151.89/293.52 #ckgt(#LT) -> #false 1151.89/293.52 #cklt(#EQ) -> #false 1151.89/293.52 #cklt(#GT) -> #false 1151.89/293.52 #cklt(#LT) -> #true 1151.89/293.52 #compare(#0, #0) -> #EQ 1151.89/293.52 #compare(#0, #neg(@y)) -> #GT 1151.89/293.52 #compare(#0, #pos(@y)) -> #LT 1151.89/293.52 #compare(#0, #s(@y)) -> #LT 1151.89/293.52 #compare(#neg(@x), #0) -> #LT 1151.89/293.52 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) 1151.89/293.52 #compare(#neg(@x), #pos(@y)) -> #LT 1151.89/293.52 #compare(#pos(@x), #0) -> #GT 1151.89/293.52 #compare(#pos(@x), #neg(@y)) -> #GT 1151.89/293.52 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) 1151.89/293.52 #compare(#s(@x), #0) -> #GT 1151.89/293.52 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) 1151.89/293.52 #div(#0, #0) -> #divByZero 1151.89/293.52 #div(#0, #neg(@y)) -> #0 1151.89/293.52 #div(#0, #pos(@y)) -> #0 1151.89/293.52 #div(#neg(@x), #0) -> #divByZero 1151.89/293.52 #div(#neg(@x), #neg(@y)) -> #pos(#natdiv(@x, @y)) 1151.89/293.52 #div(#neg(@x), #pos(@y)) -> #neg(#natdiv(@x, @y)) 1151.89/293.52 #div(#pos(@x), #0) -> #divByZero 1151.89/293.52 #div(#pos(@x), #neg(@y)) -> #neg(#natdiv(@x, @y)) 1151.89/293.52 #div(#pos(@x), #pos(@y)) -> #pos(#natdiv(@x, @y)) 1151.89/293.52 #eq(#0, #0) -> #true 1151.89/293.52 #eq(#0, #neg(@y)) -> #false 1151.89/293.52 #eq(#0, #pos(@y)) -> #false 1151.89/293.52 #eq(#0, #s(@y)) -> #false 1151.89/293.52 #eq(#neg(@x), #0) -> #false 1151.89/293.52 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) 1151.89/293.52 #eq(#neg(@x), #pos(@y)) -> #false 1151.89/293.52 #eq(#pos(@x), #0) -> #false 1151.89/293.52 #eq(#pos(@x), #neg(@y)) -> #false 1151.89/293.52 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) 1151.89/293.52 #eq(#s(@x), #0) -> #false 1151.89/293.52 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) 1151.89/293.52 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1151.89/293.52 #eq(::(@x_1, @x_2), nil) -> #false 1151.89/293.52 #eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #false 1151.89/293.52 #eq(nil, ::(@y_1, @y_2)) -> #false 1151.89/293.52 #eq(nil, nil) -> #true 1151.89/293.52 #eq(nil, tuple#2(@y_1, @y_2)) -> #false 1151.89/293.52 #eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) -> #false 1151.89/293.52 #eq(tuple#2(@x_1, @x_2), nil) -> #false 1151.89/293.52 #eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1151.89/293.52 #mult(#0, #0) -> #0 1151.89/293.52 #mult(#0, #neg(@y)) -> #0 1151.89/293.52 #mult(#0, #pos(@y)) -> #0 1151.89/293.52 #mult(#neg(@x), #0) -> #0 1151.89/293.52 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) 1151.89/293.52 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) 1151.89/293.52 #mult(#pos(@x), #0) -> #0 1151.89/293.52 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) 1151.89/293.52 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) 1151.89/293.52 #natdiv(#0, #0) -> #divByZero 1151.89/293.53 #natdiv(#s(@x), #s(@y)) -> #s(#natdiv(#natsub(@x, @y), #s(@y))) 1151.89/293.53 #natmult(#0, @y) -> #0 1151.89/293.53 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) 1151.89/293.53 #natsub(@x, #0) -> @x 1151.89/293.53 #natsub(#s(@x), #s(@y)) -> #natsub(@x, @y) 1151.89/293.53 #pred(#0) -> #neg(#s(#0)) 1151.89/293.53 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) 1151.89/293.53 #pred(#pos(#s(#0))) -> #0 1151.89/293.53 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) 1151.89/293.53 #sub(@x, #0) -> @x 1151.89/293.53 #sub(@x, #neg(@y)) -> #add(@x, #pos(@y)) 1151.89/293.53 #sub(@x, #pos(@y)) -> #add(@x, #neg(@y)) 1151.89/293.53 #succ(#0) -> #pos(#s(#0)) 1151.89/293.53 #succ(#neg(#s(#0))) -> #0 1151.89/293.53 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) 1151.89/293.53 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) 1151.89/293.53 1151.89/293.53 Rewrite Strategy: INNERMOST 1151.89/293.53 ---------------------------------------- 1151.89/293.53 1151.89/293.53 (337) DecreasingLoopProof (LOWER BOUND(ID)) 1151.89/293.53 The following loop(s) give(s) rise to the lower bound Omega(n^1): 1151.89/293.53 1151.89/293.53 The rewrite sequence 1151.89/293.53 1151.89/293.53 bitToInt'(::(@x1_0, @xs2_0), @n) ->^+ +(*(@x1_0, @n), bitToInt'(@xs2_0, *(@n, #pos(#s(#s(#0)))))) 1151.89/293.53 1151.89/293.53 gives rise to a decreasing loop by considering the right hand sides subterm at position [1]. 1151.89/293.53 1151.89/293.53 The pumping substitution is [@xs2_0 / ::(@x1_0, @xs2_0)]. 1151.89/293.53 1151.89/293.53 The result substitution is [@n / *(@n, #pos(#s(#s(#0))))]. 1151.89/293.53 1151.89/293.53 1151.89/293.53 1151.89/293.53 1151.89/293.53 ---------------------------------------- 1151.89/293.53 1151.89/293.53 (338) 1151.89/293.53 Complex Obligation (BEST) 1151.89/293.53 1151.89/293.53 ---------------------------------------- 1151.89/293.53 1151.89/293.53 (339) 1151.89/293.53 Obligation: 1151.89/293.53 Proved the lower bound n^1 for the following obligation: 1151.89/293.53 1151.89/293.53 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^5). 1151.89/293.53 1151.89/293.53 1151.89/293.53 The TRS R consists of the following rules: 1151.89/293.53 1151.89/293.53 #abs(#0) -> #0 1151.89/293.53 #abs(#neg(@x)) -> #pos(@x) 1151.89/293.53 #abs(#pos(@x)) -> #pos(@x) 1151.89/293.53 #abs(#s(@x)) -> #pos(#s(@x)) 1151.89/293.53 #equal(@x, @y) -> #eq(@x, @y) 1151.89/293.53 #greater(@x, @y) -> #ckgt(#compare(@x, @y)) 1151.89/293.53 #less(@x, @y) -> #cklt(#compare(@x, @y)) 1151.89/293.53 *(@x, @y) -> #mult(@x, @y) 1151.89/293.53 +(@x, @y) -> #add(@x, @y) 1151.89/293.53 -(@x, @y) -> #sub(@x, @y) 1151.89/293.53 add(@b1, @b2) -> add'(@b1, @b2, #abs(#0)) 1151.89/293.53 add'(@b1, @b2, @r) -> add'#1(@b1, @b2, @r) 1151.89/293.53 add'#1(::(@x, @xs), @b2, @r) -> add'#2(@b2, @r, @x, @xs) 1151.89/293.53 add'#1(nil, @b2, @r) -> nil 1151.89/293.53 add'#2(::(@y, @ys), @r, @x, @xs) -> add'#3(sum(@x, @y, @r), @xs, @ys) 1151.89/293.53 add'#2(nil, @r, @x, @xs) -> nil 1151.89/293.53 add'#3(tuple#2(@z, @r'), @xs, @ys) -> ::(@z, add'(@xs, @ys, @r')) 1151.89/293.53 bitToInt(@b) -> bitToInt'(@b, #abs(#pos(#s(#0)))) 1151.89/293.53 bitToInt'(@b, @n) -> bitToInt'#1(@b, @n) 1151.89/293.53 bitToInt'#1(::(@x, @xs), @n) -> +(*(@x, @n), bitToInt'(@xs, *(@n, #pos(#s(#s(#0)))))) 1151.89/293.53 bitToInt'#1(nil, @n) -> #abs(#0) 1151.89/293.53 compare(@b1, @b2) -> compare#1(@b1, @b2) 1151.89/293.53 compare#1(::(@x, @xs), @b2) -> compare#2(@b2, @x, @xs) 1151.89/293.53 compare#1(nil, @b2) -> #abs(#0) 1151.89/293.53 compare#2(::(@y, @ys), @x, @xs) -> compare#3(compare(@xs, @ys), @x, @y) 1151.89/293.53 compare#2(nil, @x, @xs) -> #abs(#0) 1151.89/293.53 compare#3(@r, @x, @y) -> compare#4(#equal(@r, #0), @r, @x, @y) 1151.89/293.53 compare#4(#false, @r, @x, @y) -> @r 1151.89/293.53 compare#4(#true, @r, @x, @y) -> compare#5(#less(@x, @y), @x, @y) 1151.89/293.53 compare#5(#false, @x, @y) -> compare#6(#greater(@x, @y)) 1151.89/293.53 compare#5(#true, @x, @y) -> -(#0, #pos(#s(#0))) 1151.89/293.53 compare#6(#false) -> #abs(#0) 1151.89/293.53 compare#6(#true) -> #abs(#pos(#s(#0))) 1151.89/293.53 diff(@x, @y, @r) -> tuple#2(mod(+(+(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(-(-(@x, @y), @r), #0))) 1151.89/293.53 diff#1(#false) -> #abs(#0) 1151.89/293.53 diff#1(#true) -> #abs(#pos(#s(#0))) 1151.89/293.53 div(@x, @y) -> #div(@x, @y) 1151.89/293.53 leq(@b1, @b2) -> #less(compare(@b1, @b2), #pos(#s(#0))) 1151.89/293.53 mod(@x, @y) -> -(@x, *(@x, div(@x, @y))) 1151.89/293.53 mult(@b1, @b2) -> mult#1(@b1, @b2) 1151.89/293.53 mult#1(::(@x, @xs), @b2) -> mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) 1151.89/293.53 mult#1(nil, @b2) -> nil 1151.89/293.53 mult#2(@zs, @b2, @x) -> mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) 1151.89/293.53 mult#3(#false, @b2, @zs) -> @zs 1151.89/293.53 mult#3(#true, @b2, @zs) -> add(@b2, @zs) 1151.89/293.53 mult3(@b1, @b2, @b3) -> mult(mult(@b1, @b2), @b2) 1151.89/293.53 sub(@b1, @b2) -> sub#1(sub'(@b1, @b2, #abs(#0))) 1151.89/293.53 sub#1(tuple#2(@b, @_@1)) -> @b 1151.89/293.53 sub'(@b1, @b2, @r) -> sub'#1(@b1, @b2, @r) 1151.89/293.53 sub'#1(::(@x, @xs), @b2, @r) -> sub'#2(@b2, @r, @x, @xs) 1151.89/293.53 sub'#1(nil, @b2, @r) -> tuple#2(nil, @r) 1151.89/293.53 sub'#2(::(@y, @ys), @r, @x, @xs) -> sub'#3(diff(@x, @y, @r), @xs, @ys) 1151.89/293.53 sub'#2(nil, @r, @x, @xs) -> tuple#2(nil, @r) 1151.89/293.53 sub'#3(tuple#2(@z, @r'), @xs, @ys) -> sub'#4(sub'(@xs, @ys, @r'), @z) 1151.89/293.53 sub'#4(tuple#2(@zs, @s), @z) -> tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) 1151.89/293.53 sub'#5(#false, @z, @zs) -> ::(@z, @zs) 1151.89/293.53 sub'#5(#true, @z, @zs) -> ::(#abs(#0), @zs) 1151.89/293.53 sum(@x, @y, @r) -> sum#1(+(+(@x, @y), @r)) 1151.89/293.53 sum#1(@s) -> sum#2(#equal(@s, #0), @s) 1151.89/293.53 sum#2(#false, @s) -> sum#3(#equal(@s, #pos(#s(#0))), @s) 1151.89/293.53 sum#2(#true, @s) -> tuple#2(#abs(#0), #abs(#0)) 1151.89/293.53 sum#3(#false, @s) -> sum#4(#equal(@s, #pos(#s(#s(#0))))) 1151.89/293.53 sum#3(#true, @s) -> tuple#2(#abs(#pos(#s(#0))), #abs(#0)) 1151.89/293.53 sum#4(#false) -> tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) 1151.89/293.53 sum#4(#true) -> tuple#2(#abs(#0), #abs(#pos(#s(#0)))) 1151.89/293.53 1151.89/293.53 The (relative) TRS S consists of the following rules: 1151.89/293.53 1151.89/293.53 #add(#0, @y) -> @y 1151.89/293.53 #add(#neg(#s(#0)), @y) -> #pred(@y) 1151.89/293.53 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) 1151.89/293.53 #add(#pos(#s(#0)), @y) -> #succ(@y) 1151.89/293.53 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) 1151.89/293.53 #and(#false, #false) -> #false 1151.89/293.53 #and(#false, #true) -> #false 1151.89/293.53 #and(#true, #false) -> #false 1151.89/293.53 #and(#true, #true) -> #true 1151.89/293.53 #ckgt(#EQ) -> #false 1151.89/293.53 #ckgt(#GT) -> #true 1151.89/293.53 #ckgt(#LT) -> #false 1151.89/293.53 #cklt(#EQ) -> #false 1151.89/293.53 #cklt(#GT) -> #false 1151.89/293.53 #cklt(#LT) -> #true 1151.89/293.53 #compare(#0, #0) -> #EQ 1151.89/293.53 #compare(#0, #neg(@y)) -> #GT 1151.89/293.53 #compare(#0, #pos(@y)) -> #LT 1151.89/293.53 #compare(#0, #s(@y)) -> #LT 1151.89/293.53 #compare(#neg(@x), #0) -> #LT 1151.89/293.53 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) 1151.89/293.53 #compare(#neg(@x), #pos(@y)) -> #LT 1151.89/293.53 #compare(#pos(@x), #0) -> #GT 1151.89/293.53 #compare(#pos(@x), #neg(@y)) -> #GT 1151.89/293.53 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) 1151.89/293.53 #compare(#s(@x), #0) -> #GT 1151.89/293.53 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) 1151.89/293.53 #div(#0, #0) -> #divByZero 1151.89/293.53 #div(#0, #neg(@y)) -> #0 1151.89/293.53 #div(#0, #pos(@y)) -> #0 1151.89/293.53 #div(#neg(@x), #0) -> #divByZero 1151.89/293.53 #div(#neg(@x), #neg(@y)) -> #pos(#natdiv(@x, @y)) 1151.89/293.53 #div(#neg(@x), #pos(@y)) -> #neg(#natdiv(@x, @y)) 1151.89/293.53 #div(#pos(@x), #0) -> #divByZero 1151.89/293.53 #div(#pos(@x), #neg(@y)) -> #neg(#natdiv(@x, @y)) 1151.89/293.53 #div(#pos(@x), #pos(@y)) -> #pos(#natdiv(@x, @y)) 1151.89/293.53 #eq(#0, #0) -> #true 1151.89/293.53 #eq(#0, #neg(@y)) -> #false 1151.89/293.53 #eq(#0, #pos(@y)) -> #false 1151.89/293.53 #eq(#0, #s(@y)) -> #false 1151.89/293.53 #eq(#neg(@x), #0) -> #false 1151.89/293.53 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) 1151.89/293.53 #eq(#neg(@x), #pos(@y)) -> #false 1151.89/293.53 #eq(#pos(@x), #0) -> #false 1151.89/293.53 #eq(#pos(@x), #neg(@y)) -> #false 1151.89/293.53 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) 1151.89/293.53 #eq(#s(@x), #0) -> #false 1151.89/293.53 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) 1151.89/293.53 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1151.89/293.53 #eq(::(@x_1, @x_2), nil) -> #false 1151.89/293.53 #eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #false 1151.89/293.53 #eq(nil, ::(@y_1, @y_2)) -> #false 1151.89/293.53 #eq(nil, nil) -> #true 1151.89/293.53 #eq(nil, tuple#2(@y_1, @y_2)) -> #false 1151.89/293.53 #eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) -> #false 1151.89/293.53 #eq(tuple#2(@x_1, @x_2), nil) -> #false 1151.89/293.53 #eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1151.89/293.53 #mult(#0, #0) -> #0 1151.89/293.53 #mult(#0, #neg(@y)) -> #0 1151.89/293.53 #mult(#0, #pos(@y)) -> #0 1151.89/293.53 #mult(#neg(@x), #0) -> #0 1151.89/293.53 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) 1151.89/293.53 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) 1151.89/293.53 #mult(#pos(@x), #0) -> #0 1151.89/293.53 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) 1151.89/293.53 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) 1151.89/293.53 #natdiv(#0, #0) -> #divByZero 1151.89/293.53 #natdiv(#s(@x), #s(@y)) -> #s(#natdiv(#natsub(@x, @y), #s(@y))) 1151.89/293.53 #natmult(#0, @y) -> #0 1151.89/293.53 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) 1151.89/293.53 #natsub(@x, #0) -> @x 1151.89/293.53 #natsub(#s(@x), #s(@y)) -> #natsub(@x, @y) 1151.89/293.53 #pred(#0) -> #neg(#s(#0)) 1151.89/293.53 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) 1151.89/293.53 #pred(#pos(#s(#0))) -> #0 1151.89/293.53 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) 1151.89/293.53 #sub(@x, #0) -> @x 1151.89/293.53 #sub(@x, #neg(@y)) -> #add(@x, #pos(@y)) 1151.89/293.53 #sub(@x, #pos(@y)) -> #add(@x, #neg(@y)) 1151.89/293.53 #succ(#0) -> #pos(#s(#0)) 1151.89/293.53 #succ(#neg(#s(#0))) -> #0 1151.89/293.53 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) 1151.89/293.53 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) 1151.89/293.53 1151.89/293.53 Rewrite Strategy: INNERMOST 1151.89/293.53 ---------------------------------------- 1151.89/293.53 1151.89/293.53 (340) LowerBoundPropagationProof (FINISHED) 1151.89/293.53 Propagated lower bound. 1151.89/293.53 ---------------------------------------- 1151.89/293.53 1151.89/293.53 (341) 1151.89/293.53 BOUNDS(n^1, INF) 1151.89/293.53 1151.89/293.53 ---------------------------------------- 1151.89/293.53 1151.89/293.53 (342) 1151.89/293.53 Obligation: 1151.89/293.53 Analyzing the following TRS for decreasing loops: 1151.89/293.53 1151.89/293.53 The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^5). 1151.89/293.53 1151.89/293.53 1151.89/293.53 The TRS R consists of the following rules: 1151.89/293.53 1151.89/293.53 #abs(#0) -> #0 1151.89/293.53 #abs(#neg(@x)) -> #pos(@x) 1151.89/293.53 #abs(#pos(@x)) -> #pos(@x) 1151.89/293.53 #abs(#s(@x)) -> #pos(#s(@x)) 1151.89/293.53 #equal(@x, @y) -> #eq(@x, @y) 1151.89/293.53 #greater(@x, @y) -> #ckgt(#compare(@x, @y)) 1151.89/293.53 #less(@x, @y) -> #cklt(#compare(@x, @y)) 1151.89/293.53 *(@x, @y) -> #mult(@x, @y) 1151.89/293.53 +(@x, @y) -> #add(@x, @y) 1151.89/293.53 -(@x, @y) -> #sub(@x, @y) 1151.89/293.53 add(@b1, @b2) -> add'(@b1, @b2, #abs(#0)) 1151.89/293.53 add'(@b1, @b2, @r) -> add'#1(@b1, @b2, @r) 1151.89/293.53 add'#1(::(@x, @xs), @b2, @r) -> add'#2(@b2, @r, @x, @xs) 1151.89/293.53 add'#1(nil, @b2, @r) -> nil 1151.89/293.53 add'#2(::(@y, @ys), @r, @x, @xs) -> add'#3(sum(@x, @y, @r), @xs, @ys) 1151.89/293.53 add'#2(nil, @r, @x, @xs) -> nil 1151.89/293.53 add'#3(tuple#2(@z, @r'), @xs, @ys) -> ::(@z, add'(@xs, @ys, @r')) 1151.89/293.53 bitToInt(@b) -> bitToInt'(@b, #abs(#pos(#s(#0)))) 1151.89/293.53 bitToInt'(@b, @n) -> bitToInt'#1(@b, @n) 1151.89/293.53 bitToInt'#1(::(@x, @xs), @n) -> +(*(@x, @n), bitToInt'(@xs, *(@n, #pos(#s(#s(#0)))))) 1151.89/293.53 bitToInt'#1(nil, @n) -> #abs(#0) 1151.89/293.53 compare(@b1, @b2) -> compare#1(@b1, @b2) 1151.89/293.53 compare#1(::(@x, @xs), @b2) -> compare#2(@b2, @x, @xs) 1151.89/293.53 compare#1(nil, @b2) -> #abs(#0) 1151.89/293.53 compare#2(::(@y, @ys), @x, @xs) -> compare#3(compare(@xs, @ys), @x, @y) 1151.89/293.53 compare#2(nil, @x, @xs) -> #abs(#0) 1151.89/293.53 compare#3(@r, @x, @y) -> compare#4(#equal(@r, #0), @r, @x, @y) 1151.89/293.53 compare#4(#false, @r, @x, @y) -> @r 1151.89/293.53 compare#4(#true, @r, @x, @y) -> compare#5(#less(@x, @y), @x, @y) 1151.89/293.53 compare#5(#false, @x, @y) -> compare#6(#greater(@x, @y)) 1151.89/293.53 compare#5(#true, @x, @y) -> -(#0, #pos(#s(#0))) 1151.89/293.53 compare#6(#false) -> #abs(#0) 1151.89/293.53 compare#6(#true) -> #abs(#pos(#s(#0))) 1151.89/293.53 diff(@x, @y, @r) -> tuple#2(mod(+(+(@x, @y), @r), #pos(#s(#s(#0)))), diff#1(#less(-(-(@x, @y), @r), #0))) 1151.89/293.53 diff#1(#false) -> #abs(#0) 1151.89/293.53 diff#1(#true) -> #abs(#pos(#s(#0))) 1151.89/293.53 div(@x, @y) -> #div(@x, @y) 1151.89/293.53 leq(@b1, @b2) -> #less(compare(@b1, @b2), #pos(#s(#0))) 1151.89/293.53 mod(@x, @y) -> -(@x, *(@x, div(@x, @y))) 1151.89/293.53 mult(@b1, @b2) -> mult#1(@b1, @b2) 1151.89/293.53 mult#1(::(@x, @xs), @b2) -> mult#2(::(#abs(#0), mult(@xs, @b2)), @b2, @x) 1151.89/293.53 mult#1(nil, @b2) -> nil 1151.89/293.53 mult#2(@zs, @b2, @x) -> mult#3(#equal(@x, #pos(#s(#0))), @b2, @zs) 1151.89/293.53 mult#3(#false, @b2, @zs) -> @zs 1151.89/293.53 mult#3(#true, @b2, @zs) -> add(@b2, @zs) 1151.89/293.53 mult3(@b1, @b2, @b3) -> mult(mult(@b1, @b2), @b2) 1151.89/293.53 sub(@b1, @b2) -> sub#1(sub'(@b1, @b2, #abs(#0))) 1151.89/293.53 sub#1(tuple#2(@b, @_@1)) -> @b 1151.89/293.53 sub'(@b1, @b2, @r) -> sub'#1(@b1, @b2, @r) 1151.89/293.53 sub'#1(::(@x, @xs), @b2, @r) -> sub'#2(@b2, @r, @x, @xs) 1151.89/293.53 sub'#1(nil, @b2, @r) -> tuple#2(nil, @r) 1151.89/293.53 sub'#2(::(@y, @ys), @r, @x, @xs) -> sub'#3(diff(@x, @y, @r), @xs, @ys) 1151.89/293.53 sub'#2(nil, @r, @x, @xs) -> tuple#2(nil, @r) 1151.89/293.53 sub'#3(tuple#2(@z, @r'), @xs, @ys) -> sub'#4(sub'(@xs, @ys, @r'), @z) 1151.89/293.53 sub'#4(tuple#2(@zs, @s), @z) -> tuple#2(sub'#5(#equal(@s, #pos(#s(#0))), @z, @zs), @s) 1151.89/293.53 sub'#5(#false, @z, @zs) -> ::(@z, @zs) 1151.89/293.53 sub'#5(#true, @z, @zs) -> ::(#abs(#0), @zs) 1151.89/293.53 sum(@x, @y, @r) -> sum#1(+(+(@x, @y), @r)) 1151.89/293.53 sum#1(@s) -> sum#2(#equal(@s, #0), @s) 1151.89/293.53 sum#2(#false, @s) -> sum#3(#equal(@s, #pos(#s(#0))), @s) 1151.89/293.53 sum#2(#true, @s) -> tuple#2(#abs(#0), #abs(#0)) 1151.89/293.53 sum#3(#false, @s) -> sum#4(#equal(@s, #pos(#s(#s(#0))))) 1151.89/293.53 sum#3(#true, @s) -> tuple#2(#abs(#pos(#s(#0))), #abs(#0)) 1151.89/293.53 sum#4(#false) -> tuple#2(#abs(#pos(#s(#0))), #abs(#pos(#s(#0)))) 1151.89/293.53 sum#4(#true) -> tuple#2(#abs(#0), #abs(#pos(#s(#0)))) 1151.89/293.53 1151.89/293.53 The (relative) TRS S consists of the following rules: 1151.89/293.53 1151.89/293.53 #add(#0, @y) -> @y 1151.89/293.53 #add(#neg(#s(#0)), @y) -> #pred(@y) 1151.89/293.53 #add(#neg(#s(#s(@x))), @y) -> #pred(#add(#pos(#s(@x)), @y)) 1151.89/293.53 #add(#pos(#s(#0)), @y) -> #succ(@y) 1151.89/293.53 #add(#pos(#s(#s(@x))), @y) -> #succ(#add(#pos(#s(@x)), @y)) 1151.89/293.53 #and(#false, #false) -> #false 1151.89/293.53 #and(#false, #true) -> #false 1151.89/293.53 #and(#true, #false) -> #false 1151.89/293.53 #and(#true, #true) -> #true 1151.89/293.53 #ckgt(#EQ) -> #false 1151.89/293.53 #ckgt(#GT) -> #true 1151.89/293.53 #ckgt(#LT) -> #false 1151.89/293.53 #cklt(#EQ) -> #false 1151.89/293.53 #cklt(#GT) -> #false 1151.89/293.53 #cklt(#LT) -> #true 1151.89/293.53 #compare(#0, #0) -> #EQ 1151.89/293.53 #compare(#0, #neg(@y)) -> #GT 1151.89/293.53 #compare(#0, #pos(@y)) -> #LT 1151.89/293.53 #compare(#0, #s(@y)) -> #LT 1151.89/293.53 #compare(#neg(@x), #0) -> #LT 1151.89/293.53 #compare(#neg(@x), #neg(@y)) -> #compare(@y, @x) 1151.89/293.53 #compare(#neg(@x), #pos(@y)) -> #LT 1151.89/293.53 #compare(#pos(@x), #0) -> #GT 1151.89/293.53 #compare(#pos(@x), #neg(@y)) -> #GT 1151.89/293.53 #compare(#pos(@x), #pos(@y)) -> #compare(@x, @y) 1151.89/293.53 #compare(#s(@x), #0) -> #GT 1151.89/293.53 #compare(#s(@x), #s(@y)) -> #compare(@x, @y) 1151.89/293.53 #div(#0, #0) -> #divByZero 1151.89/293.53 #div(#0, #neg(@y)) -> #0 1151.89/293.53 #div(#0, #pos(@y)) -> #0 1151.89/293.53 #div(#neg(@x), #0) -> #divByZero 1151.89/293.53 #div(#neg(@x), #neg(@y)) -> #pos(#natdiv(@x, @y)) 1151.89/293.53 #div(#neg(@x), #pos(@y)) -> #neg(#natdiv(@x, @y)) 1151.89/293.53 #div(#pos(@x), #0) -> #divByZero 1151.89/293.53 #div(#pos(@x), #neg(@y)) -> #neg(#natdiv(@x, @y)) 1151.89/293.53 #div(#pos(@x), #pos(@y)) -> #pos(#natdiv(@x, @y)) 1151.89/293.53 #eq(#0, #0) -> #true 1151.89/293.53 #eq(#0, #neg(@y)) -> #false 1151.89/293.53 #eq(#0, #pos(@y)) -> #false 1151.89/293.53 #eq(#0, #s(@y)) -> #false 1151.89/293.53 #eq(#neg(@x), #0) -> #false 1151.89/293.53 #eq(#neg(@x), #neg(@y)) -> #eq(@x, @y) 1151.89/293.53 #eq(#neg(@x), #pos(@y)) -> #false 1151.89/293.53 #eq(#pos(@x), #0) -> #false 1151.89/293.53 #eq(#pos(@x), #neg(@y)) -> #false 1151.89/293.53 #eq(#pos(@x), #pos(@y)) -> #eq(@x, @y) 1151.89/293.53 #eq(#s(@x), #0) -> #false 1151.89/293.53 #eq(#s(@x), #s(@y)) -> #eq(@x, @y) 1151.89/293.53 #eq(::(@x_1, @x_2), ::(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1151.89/293.53 #eq(::(@x_1, @x_2), nil) -> #false 1151.89/293.53 #eq(::(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #false 1151.89/293.53 #eq(nil, ::(@y_1, @y_2)) -> #false 1151.89/293.53 #eq(nil, nil) -> #true 1151.89/293.53 #eq(nil, tuple#2(@y_1, @y_2)) -> #false 1151.89/293.53 #eq(tuple#2(@x_1, @x_2), ::(@y_1, @y_2)) -> #false 1151.89/293.53 #eq(tuple#2(@x_1, @x_2), nil) -> #false 1151.89/293.53 #eq(tuple#2(@x_1, @x_2), tuple#2(@y_1, @y_2)) -> #and(#eq(@x_1, @y_1), #eq(@x_2, @y_2)) 1151.89/293.53 #mult(#0, #0) -> #0 1151.89/293.53 #mult(#0, #neg(@y)) -> #0 1151.89/293.53 #mult(#0, #pos(@y)) -> #0 1151.89/293.53 #mult(#neg(@x), #0) -> #0 1151.89/293.53 #mult(#neg(@x), #neg(@y)) -> #pos(#natmult(@x, @y)) 1151.89/293.53 #mult(#neg(@x), #pos(@y)) -> #neg(#natmult(@x, @y)) 1151.89/293.53 #mult(#pos(@x), #0) -> #0 1151.89/293.53 #mult(#pos(@x), #neg(@y)) -> #neg(#natmult(@x, @y)) 1151.89/293.53 #mult(#pos(@x), #pos(@y)) -> #pos(#natmult(@x, @y)) 1151.89/293.53 #natdiv(#0, #0) -> #divByZero 1151.89/293.53 #natdiv(#s(@x), #s(@y)) -> #s(#natdiv(#natsub(@x, @y), #s(@y))) 1151.89/293.53 #natmult(#0, @y) -> #0 1151.89/293.53 #natmult(#s(@x), @y) -> #add(#pos(@y), #natmult(@x, @y)) 1151.89/293.53 #natsub(@x, #0) -> @x 1151.89/293.53 #natsub(#s(@x), #s(@y)) -> #natsub(@x, @y) 1151.89/293.53 #pred(#0) -> #neg(#s(#0)) 1151.89/293.53 #pred(#neg(#s(@x))) -> #neg(#s(#s(@x))) 1151.89/293.53 #pred(#pos(#s(#0))) -> #0 1151.89/293.53 #pred(#pos(#s(#s(@x)))) -> #pos(#s(@x)) 1151.89/293.53 #sub(@x, #0) -> @x 1151.89/293.53 #sub(@x, #neg(@y)) -> #add(@x, #pos(@y)) 1151.89/293.53 #sub(@x, #pos(@y)) -> #add(@x, #neg(@y)) 1151.89/293.53 #succ(#0) -> #pos(#s(#0)) 1151.89/293.53 #succ(#neg(#s(#0))) -> #0 1151.89/293.53 #succ(#neg(#s(#s(@x)))) -> #neg(#s(@x)) 1151.89/293.53 #succ(#pos(#s(@x))) -> #pos(#s(#s(@x))) 1151.89/293.53 1151.89/293.53 Rewrite Strategy: INNERMOST 1152.21/293.69 EOF