WORST_CASE(?,O(n^1)) proof of input_wx64hZr3ci.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^1). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 130 ms] (2) CpxRelTRS (3) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (4) CpxWeightedTrs (5) CpxWeightedTrsRenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxWeightedTrs (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxTypedWeightedTrs (9) CompletionProof [UPPER BOUND(ID), 0 ms] (10) CpxTypedWeightedCompleteTrs (11) NarrowingProof [BOTH BOUNDS(ID, ID), 6 ms] (12) CpxTypedWeightedCompleteTrs (13) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 25 ms] (14) CpxRNTS (15) InliningProof [UPPER BOUND(ID), 291 ms] (16) CpxRNTS (17) SimplificationProof [BOTH BOUNDS(ID, ID), 28 ms] (18) CpxRNTS (19) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CpxRNTS (21) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 186 ms] (24) CpxRNTS (25) IntTrsBoundProof [UPPER BOUND(ID), 98 ms] (26) CpxRNTS (27) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 231 ms] (30) CpxRNTS (31) IntTrsBoundProof [UPPER BOUND(ID), 63 ms] (32) CpxRNTS (33) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 88 ms] (36) CpxRNTS (37) IntTrsBoundProof [UPPER BOUND(ID), 73 ms] (38) CpxRNTS (39) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 189 ms] (42) CpxRNTS (43) IntTrsBoundProof [UPPER BOUND(ID), 63 ms] (44) CpxRNTS (45) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 178 ms] (48) CpxRNTS (49) IntTrsBoundProof [UPPER BOUND(ID), 73 ms] (50) CpxRNTS (51) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (52) CpxRNTS (53) IntTrsBoundProof [UPPER BOUND(ID), 140 ms] (54) CpxRNTS (55) IntTrsBoundProof [UPPER BOUND(ID), 94 ms] (56) CpxRNTS (57) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (58) CpxRNTS (59) IntTrsBoundProof [UPPER BOUND(ID), 119 ms] (60) CpxRNTS (61) IntTrsBoundProof [UPPER BOUND(ID), 52 ms] (62) CpxRNTS (63) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (64) CpxRNTS (65) IntTrsBoundProof [UPPER BOUND(ID), 288 ms] (66) CpxRNTS (67) IntTrsBoundProof [UPPER BOUND(ID), 92 ms] (68) CpxRNTS (69) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (70) CpxRNTS (71) IntTrsBoundProof [UPPER BOUND(ID), 168 ms] (72) CpxRNTS (73) IntTrsBoundProof [UPPER BOUND(ID), 63 ms] (74) CpxRNTS (75) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (76) CpxRNTS (77) IntTrsBoundProof [UPPER BOUND(ID), 401 ms] (78) CpxRNTS (79) IntTrsBoundProof [UPPER BOUND(ID), 93 ms] (80) CpxRNTS (81) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (82) CpxRNTS (83) IntTrsBoundProof [UPPER BOUND(ID), 310 ms] (84) CpxRNTS (85) IntTrsBoundProof [UPPER BOUND(ID), 93 ms] (86) CpxRNTS (87) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (88) CpxRNTS (89) IntTrsBoundProof [UPPER BOUND(ID), 167 ms] (90) CpxRNTS (91) IntTrsBoundProof [UPPER BOUND(ID), 62 ms] (92) CpxRNTS (93) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (94) CpxRNTS (95) IntTrsBoundProof [UPPER BOUND(ID), 170 ms] (96) CpxRNTS (97) IntTrsBoundProof [UPPER BOUND(ID), 54 ms] (98) CpxRNTS (99) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (100) CpxRNTS (101) IntTrsBoundProof [UPPER BOUND(ID), 406 ms] (102) CpxRNTS (103) IntTrsBoundProof [UPPER BOUND(ID), 147 ms] (104) CpxRNTS (105) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (106) CpxRNTS (107) IntTrsBoundProof [UPPER BOUND(ID), 904 ms] (108) CpxRNTS (109) IntTrsBoundProof [UPPER BOUND(ID), 368 ms] (110) CpxRNTS (111) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (112) CpxRNTS (113) IntTrsBoundProof [UPPER BOUND(ID), 288 ms] (114) CpxRNTS (115) IntTrsBoundProof [UPPER BOUND(ID), 82 ms] (116) CpxRNTS (117) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (118) CpxRNTS (119) IntTrsBoundProof [UPPER BOUND(ID), 136 ms] (120) CpxRNTS (121) IntTrsBoundProof [UPPER BOUND(ID), 54 ms] (122) CpxRNTS (123) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (124) CpxRNTS (125) IntTrsBoundProof [UPPER BOUND(ID), 392 ms] (126) CpxRNTS (127) IntTrsBoundProof [UPPER BOUND(ID), 74 ms] (128) CpxRNTS (129) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (130) CpxRNTS (131) IntTrsBoundProof [UPPER BOUND(ID), 178 ms] (132) CpxRNTS (133) IntTrsBoundProof [UPPER BOUND(ID), 52 ms] (134) CpxRNTS (135) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (136) CpxRNTS (137) IntTrsBoundProof [UPPER BOUND(ID), 8728 ms] (138) CpxRNTS (139) IntTrsBoundProof [UPPER BOUND(ID), 3221 ms] (140) CpxRNTS (141) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (142) CpxRNTS (143) IntTrsBoundProof [UPPER BOUND(ID), 146 ms] (144) CpxRNTS (145) IntTrsBoundProof [UPPER BOUND(ID), 54 ms] (146) CpxRNTS (147) FinalProof [FINISHED, 0 ms] (148) BOUNDS(1, n^1) ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: m2(S(0), b, res, True) -> False m2(S(S(x)), b, res, True) -> True m2(0, b, res, True) -> False m3(S(0), b, res, t) -> False m3(S(S(x)), b, res, t) -> True m3(0, b, res, t) -> False l8(res, y, res', True, mtmp, t) -> res l5(x, y, res, tmp, mtmp, True) -> 0 help1(S(0)) -> False help1(S(S(x))) -> True e4(a, b, res, False) -> False e4(a, b, res, True) -> True e2(a, b, res, False) -> False l15(x, y, res, tmp, False, t) -> l16(x, y, gcd(y, 0), tmp, False, t) l15(x, y, res, tmp, True, t) -> l16(x, y, gcd(y, S(0)), tmp, True, t) l13(x, y, res, tmp, False, t) -> l16(x, y, gcd(0, y), tmp, False, t) l13(x, y, res, tmp, True, t) -> l16(x, y, gcd(S(0), y), tmp, True, t) m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) m2(a, b, res, False) -> m4(a, b, res, False) l8(x, y, res, False, mtmp, t) -> l10(x, y, res, False, mtmp, t) l5(x, y, res, tmp, mtmp, False) -> l7(x, y, res, tmp, mtmp, False) l2(x, y, res, tmp, mtmp, False) -> l3(x, y, res, tmp, mtmp, False) l2(x, y, res, tmp, mtmp, True) -> res l11(x, y, res, tmp, mtmp, False) -> l14(x, y, res, tmp, mtmp, False) l11(x, y, res, tmp, mtmp, True) -> l12(x, y, res, tmp, mtmp, True) help1(0) -> False e2(a, b, res, True) -> e3(a, b, res, True) bool2Nat(False) -> 0 bool2Nat(True) -> S(0) m1(a, x, res, t) -> m2(a, x, res, False) l9(res, y, res', tmp, mtmp, t) -> res l6(x, y, res, tmp, mtmp, t) -> 0 l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False) l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False) e7(a, b, res, t) -> False e6(a, b, res, t) -> False e5(a, b, res, t) -> True monus(a, b) -> m1(a, b, False, False) m5(a, b, res, t) -> res l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0, tmp, mtmp, t) l16(x, y, res, tmp, mtmp, t) -> res l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) gcd(x, y) -> l1(x, y, 0, False, False, False) equal0(a, b) -> e1(a, b, False, False) e8(a, b, res, t) -> res e3(a, b, res, t) -> e4(a, b, res, <(b, a)) e1(a, b, res, t) -> e2(a, b, res, <(a, b)) The (relative) TRS S consists of the following rules: <(S(x), S(y)) -> <(x, y) <(0, S(y)) -> True <(x, 0) -> False Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: m2(S(0), b, res, True) -> False m2(S(S(x)), b, res, True) -> True m2(0, b, res, True) -> False m3(S(0), b, res, t) -> False m3(S(S(x)), b, res, t) -> True m3(0, b, res, t) -> False l8(res, y, res', True, mtmp, t) -> res l5(x, y, res, tmp, mtmp, True) -> 0 help1(S(0)) -> False help1(S(S(x))) -> True e4(a, b, res, False) -> False e4(a, b, res, True) -> True e2(a, b, res, False) -> False l15(x, y, res, tmp, False, t) -> l16(x, y, gcd(y, 0), tmp, False, t) l15(x, y, res, tmp, True, t) -> l16(x, y, gcd(y, S(0)), tmp, True, t) l13(x, y, res, tmp, False, t) -> l16(x, y, gcd(0, y), tmp, False, t) l13(x, y, res, tmp, True, t) -> l16(x, y, gcd(S(0), y), tmp, True, t) m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) m2(a, b, res, False) -> m4(a, b, res, False) l8(x, y, res, False, mtmp, t) -> l10(x, y, res, False, mtmp, t) l5(x, y, res, tmp, mtmp, False) -> l7(x, y, res, tmp, mtmp, False) l2(x, y, res, tmp, mtmp, False) -> l3(x, y, res, tmp, mtmp, False) l2(x, y, res, tmp, mtmp, True) -> res l11(x, y, res, tmp, mtmp, False) -> l14(x, y, res, tmp, mtmp, False) l11(x, y, res, tmp, mtmp, True) -> l12(x, y, res, tmp, mtmp, True) help1(0) -> False e2(a, b, res, True) -> e3(a, b, res, True) bool2Nat(False) -> 0 bool2Nat(True) -> S(0) m1(a, x, res, t) -> m2(a, x, res, False) l9(res, y, res', tmp, mtmp, t) -> res l6(x, y, res, tmp, mtmp, t) -> 0 l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False) l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False) e7(a, b, res, t) -> False e6(a, b, res, t) -> False e5(a, b, res, t) -> True monus(a, b) -> m1(a, b, False, False) m5(a, b, res, t) -> res l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0, tmp, mtmp, t) l16(x, y, res, tmp, mtmp, t) -> res l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) gcd(x, y) -> l1(x, y, 0, False, False, False) equal0(a, b) -> e1(a, b, False, False) e8(a, b, res, t) -> res e3(a, b, res, t) -> e4(a, b, res, <(b, a)) e1(a, b, res, t) -> e2(a, b, res, <(a, b)) The (relative) TRS S consists of the following rules: <(S(x), S(y)) -> <(x, y) <(0, S(y)) -> True <(x, 0) -> False Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (4) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: m2(S(0), b, res, True) -> False [1] m2(S(S(x)), b, res, True) -> True [1] m2(0, b, res, True) -> False [1] m3(S(0), b, res, t) -> False [1] m3(S(S(x)), b, res, t) -> True [1] m3(0, b, res, t) -> False [1] l8(res, y, res', True, mtmp, t) -> res [1] l5(x, y, res, tmp, mtmp, True) -> 0 [1] help1(S(0)) -> False [1] help1(S(S(x))) -> True [1] e4(a, b, res, False) -> False [1] e4(a, b, res, True) -> True [1] e2(a, b, res, False) -> False [1] l15(x, y, res, tmp, False, t) -> l16(x, y, gcd(y, 0), tmp, False, t) [1] l15(x, y, res, tmp, True, t) -> l16(x, y, gcd(y, S(0)), tmp, True, t) [1] l13(x, y, res, tmp, False, t) -> l16(x, y, gcd(0, y), tmp, False, t) [1] l13(x, y, res, tmp, True, t) -> l16(x, y, gcd(S(0), y), tmp, True, t) [1] m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) [1] m2(a, b, res, False) -> m4(a, b, res, False) [1] l8(x, y, res, False, mtmp, t) -> l10(x, y, res, False, mtmp, t) [1] l5(x, y, res, tmp, mtmp, False) -> l7(x, y, res, tmp, mtmp, False) [1] l2(x, y, res, tmp, mtmp, False) -> l3(x, y, res, tmp, mtmp, False) [1] l2(x, y, res, tmp, mtmp, True) -> res [1] l11(x, y, res, tmp, mtmp, False) -> l14(x, y, res, tmp, mtmp, False) [1] l11(x, y, res, tmp, mtmp, True) -> l12(x, y, res, tmp, mtmp, True) [1] help1(0) -> False [1] e2(a, b, res, True) -> e3(a, b, res, True) [1] bool2Nat(False) -> 0 [1] bool2Nat(True) -> S(0) [1] m1(a, x, res, t) -> m2(a, x, res, False) [1] l9(res, y, res', tmp, mtmp, t) -> res [1] l6(x, y, res, tmp, mtmp, t) -> 0 [1] l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False) [1] l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False) [1] e7(a, b, res, t) -> False [1] e6(a, b, res, t) -> False [1] e5(a, b, res, t) -> True [1] monus(a, b) -> m1(a, b, False, False) [1] m5(a, b, res, t) -> res [1] l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) [1] l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0, tmp, mtmp, t) [1] l16(x, y, res, tmp, mtmp, t) -> res [1] l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) [1] l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) [1] l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, <(x, y)) [1] gcd(x, y) -> l1(x, y, 0, False, False, False) [1] equal0(a, b) -> e1(a, b, False, False) [1] e8(a, b, res, t) -> res [1] e3(a, b, res, t) -> e4(a, b, res, <(b, a)) [1] e1(a, b, res, t) -> e2(a, b, res, <(a, b)) [1] <(S(x), S(y)) -> <(x, y) [0] <(0, S(y)) -> True [0] <(x, 0) -> False [0] Rewrite Strategy: INNERMOST ---------------------------------------- (5) CpxWeightedTrsRenamingProof (BOTH BOUNDS(ID, ID)) Renamed defined symbols to avoid conflicts with arithmetic symbols: < => lt ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: m2(S(0), b, res, True) -> False [1] m2(S(S(x)), b, res, True) -> True [1] m2(0, b, res, True) -> False [1] m3(S(0), b, res, t) -> False [1] m3(S(S(x)), b, res, t) -> True [1] m3(0, b, res, t) -> False [1] l8(res, y, res', True, mtmp, t) -> res [1] l5(x, y, res, tmp, mtmp, True) -> 0 [1] help1(S(0)) -> False [1] help1(S(S(x))) -> True [1] e4(a, b, res, False) -> False [1] e4(a, b, res, True) -> True [1] e2(a, b, res, False) -> False [1] l15(x, y, res, tmp, False, t) -> l16(x, y, gcd(y, 0), tmp, False, t) [1] l15(x, y, res, tmp, True, t) -> l16(x, y, gcd(y, S(0)), tmp, True, t) [1] l13(x, y, res, tmp, False, t) -> l16(x, y, gcd(0, y), tmp, False, t) [1] l13(x, y, res, tmp, True, t) -> l16(x, y, gcd(S(0), y), tmp, True, t) [1] m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) [1] m2(a, b, res, False) -> m4(a, b, res, False) [1] l8(x, y, res, False, mtmp, t) -> l10(x, y, res, False, mtmp, t) [1] l5(x, y, res, tmp, mtmp, False) -> l7(x, y, res, tmp, mtmp, False) [1] l2(x, y, res, tmp, mtmp, False) -> l3(x, y, res, tmp, mtmp, False) [1] l2(x, y, res, tmp, mtmp, True) -> res [1] l11(x, y, res, tmp, mtmp, False) -> l14(x, y, res, tmp, mtmp, False) [1] l11(x, y, res, tmp, mtmp, True) -> l12(x, y, res, tmp, mtmp, True) [1] help1(0) -> False [1] e2(a, b, res, True) -> e3(a, b, res, True) [1] bool2Nat(False) -> 0 [1] bool2Nat(True) -> S(0) [1] m1(a, x, res, t) -> m2(a, x, res, False) [1] l9(res, y, res', tmp, mtmp, t) -> res [1] l6(x, y, res, tmp, mtmp, t) -> 0 [1] l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False) [1] l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False) [1] e7(a, b, res, t) -> False [1] e6(a, b, res, t) -> False [1] e5(a, b, res, t) -> True [1] monus(a, b) -> m1(a, b, False, False) [1] m5(a, b, res, t) -> res [1] l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) [1] l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0, tmp, mtmp, t) [1] l16(x, y, res, tmp, mtmp, t) -> res [1] l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) [1] l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) [1] l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, lt(x, y)) [1] gcd(x, y) -> l1(x, y, 0, False, False, False) [1] equal0(a, b) -> e1(a, b, False, False) [1] e8(a, b, res, t) -> res [1] e3(a, b, res, t) -> e4(a, b, res, lt(b, a)) [1] e1(a, b, res, t) -> e2(a, b, res, lt(a, b)) [1] lt(S(x), S(y)) -> lt(x, y) [0] lt(0, S(y)) -> True [0] lt(x, 0) -> False [0] Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (8) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: m2(S(0), b, res, True) -> False [1] m2(S(S(x)), b, res, True) -> True [1] m2(0, b, res, True) -> False [1] m3(S(0), b, res, t) -> False [1] m3(S(S(x)), b, res, t) -> True [1] m3(0, b, res, t) -> False [1] l8(res, y, res', True, mtmp, t) -> res [1] l5(x, y, res, tmp, mtmp, True) -> 0 [1] help1(S(0)) -> False [1] help1(S(S(x))) -> True [1] e4(a, b, res, False) -> False [1] e4(a, b, res, True) -> True [1] e2(a, b, res, False) -> False [1] l15(x, y, res, tmp, False, t) -> l16(x, y, gcd(y, 0), tmp, False, t) [1] l15(x, y, res, tmp, True, t) -> l16(x, y, gcd(y, S(0)), tmp, True, t) [1] l13(x, y, res, tmp, False, t) -> l16(x, y, gcd(0, y), tmp, False, t) [1] l13(x, y, res, tmp, True, t) -> l16(x, y, gcd(S(0), y), tmp, True, t) [1] m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) [1] m2(a, b, res, False) -> m4(a, b, res, False) [1] l8(x, y, res, False, mtmp, t) -> l10(x, y, res, False, mtmp, t) [1] l5(x, y, res, tmp, mtmp, False) -> l7(x, y, res, tmp, mtmp, False) [1] l2(x, y, res, tmp, mtmp, False) -> l3(x, y, res, tmp, mtmp, False) [1] l2(x, y, res, tmp, mtmp, True) -> res [1] l11(x, y, res, tmp, mtmp, False) -> l14(x, y, res, tmp, mtmp, False) [1] l11(x, y, res, tmp, mtmp, True) -> l12(x, y, res, tmp, mtmp, True) [1] help1(0) -> False [1] e2(a, b, res, True) -> e3(a, b, res, True) [1] bool2Nat(False) -> 0 [1] bool2Nat(True) -> S(0) [1] m1(a, x, res, t) -> m2(a, x, res, False) [1] l9(res, y, res', tmp, mtmp, t) -> res [1] l6(x, y, res, tmp, mtmp, t) -> 0 [1] l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False) [1] l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False) [1] e7(a, b, res, t) -> False [1] e6(a, b, res, t) -> False [1] e5(a, b, res, t) -> True [1] monus(a, b) -> m1(a, b, False, False) [1] m5(a, b, res, t) -> res [1] l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) [1] l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0, tmp, mtmp, t) [1] l16(x, y, res, tmp, mtmp, t) -> res [1] l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) [1] l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) [1] l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, lt(x, y)) [1] gcd(x, y) -> l1(x, y, 0, False, False, False) [1] equal0(a, b) -> e1(a, b, False, False) [1] e8(a, b, res, t) -> res [1] e3(a, b, res, t) -> e4(a, b, res, lt(b, a)) [1] e1(a, b, res, t) -> e2(a, b, res, lt(a, b)) [1] lt(S(x), S(y)) -> lt(x, y) [0] lt(0, S(y)) -> True [0] lt(x, 0) -> False [0] The TRS has the following type information: m2 :: 0:S -> 0:S -> True:False -> True:False -> True:False S :: 0:S -> 0:S 0 :: 0:S True :: True:False False :: True:False m3 :: 0:S -> a -> b -> c -> True:False l8 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S l5 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S help1 :: 0:S -> True:False e4 :: 0:S -> 0:S -> True:False -> True:False -> True:False e2 :: 0:S -> 0:S -> True:False -> True:False -> True:False l15 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S l16 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S gcd :: 0:S -> 0:S -> 0:S l13 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S m4 :: 0:S -> 0:S -> True:False -> True:False -> True:False m5 :: 0:S -> 0:S -> True:False -> True:False -> True:False monus :: 0:S -> 0:S -> True:False l10 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S l7 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S l2 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S l3 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S l11 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S l14 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S l12 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S e3 :: 0:S -> 0:S -> True:False -> True:False -> True:False bool2Nat :: True:False -> 0:S m1 :: 0:S -> 0:S -> True:False -> True:False -> True:False l9 :: l9 -> d -> e -> f -> g -> h -> l9 l6 :: i -> j -> k -> l -> m -> n -> 0:S l4 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S l1 :: 0:S -> 0:S -> 0:S -> True:False -> True:False -> True:False -> 0:S e7 :: o -> p -> q -> r -> True:False e6 :: s -> t -> u -> v -> True:False e5 :: w -> x -> y -> z -> True:False equal0 :: 0:S -> 0:S -> True:False lt :: 0:S -> 0:S -> True:False e1 :: 0:S -> 0:S -> True:False -> True:False -> True:False e8 :: za -> zaa -> e8 -> zaaa -> e8 Rewrite Strategy: INNERMOST ---------------------------------------- (9) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: m3_4 help1_1 bool2Nat_1 l9_6 l6_6 e7_4 e6_4 e5_4 e8_4 (c) The following functions are completely defined: gcd_2 equal0_2 monus_2 e1_4 l1_6 l2_6 e2_4 m1_4 l3_6 m2_4 l4_6 m4_4 e3_4 m5_4 e4_4 l5_6 l7_6 l8_6 l10_6 l11_6 l14_6 l12_6 l15_6 l16_6 l13_6 lt_2 Due to the following rules being added: lt(v0, v1) -> null_lt [0] l2(v0, v1, v2, v3, v4, v5) -> 0 [0] e2(v0, v1, v2, v3) -> null_e2 [0] m2(v0, v1, v2, v3) -> null_m2 [0] m4(v0, v1, v2, v3) -> null_m4 [0] e4(v0, v1, v2, v3) -> null_e4 [0] l5(v0, v1, v2, v3, v4, v5) -> 0 [0] l8(v0, v1, v2, v3, v4, v5) -> 0 [0] l11(v0, v1, v2, v3, v4, v5) -> 0 [0] l15(v0, v1, v2, v3, v4, v5) -> 0 [0] l13(v0, v1, v2, v3, v4, v5) -> 0 [0] And the following fresh constants: null_lt, null_e2, null_m2, null_m4, null_e4, const, const1, const2, const3, const4, const5, const6, const7, const8, const9, const10, const11, const12, const13, const14, const15, const16, const17, const18, const19, const20, const21, const22, const23, const24, const25, const26, const27, const28, const29, const30 ---------------------------------------- (10) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: m2(S(0), b, res, True) -> False [1] m2(S(S(x)), b, res, True) -> True [1] m2(0, b, res, True) -> False [1] m3(S(0), b, res, t) -> False [1] m3(S(S(x)), b, res, t) -> True [1] m3(0, b, res, t) -> False [1] l8(res, y, res', True, mtmp, t) -> res [1] l5(x, y, res, tmp, mtmp, True) -> 0 [1] help1(S(0)) -> False [1] help1(S(S(x))) -> True [1] e4(a, b, res, False) -> False [1] e4(a, b, res, True) -> True [1] e2(a, b, res, False) -> False [1] l15(x, y, res, tmp, False, t) -> l16(x, y, gcd(y, 0), tmp, False, t) [1] l15(x, y, res, tmp, True, t) -> l16(x, y, gcd(y, S(0)), tmp, True, t) [1] l13(x, y, res, tmp, False, t) -> l16(x, y, gcd(0, y), tmp, False, t) [1] l13(x, y, res, tmp, True, t) -> l16(x, y, gcd(S(0), y), tmp, True, t) [1] m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), monus(x', x), t) [1] m2(a, b, res, False) -> m4(a, b, res, False) [1] l8(x, y, res, False, mtmp, t) -> l10(x, y, res, False, mtmp, t) [1] l5(x, y, res, tmp, mtmp, False) -> l7(x, y, res, tmp, mtmp, False) [1] l2(x, y, res, tmp, mtmp, False) -> l3(x, y, res, tmp, mtmp, False) [1] l2(x, y, res, tmp, mtmp, True) -> res [1] l11(x, y, res, tmp, mtmp, False) -> l14(x, y, res, tmp, mtmp, False) [1] l11(x, y, res, tmp, mtmp, True) -> l12(x, y, res, tmp, mtmp, True) [1] help1(0) -> False [1] e2(a, b, res, True) -> e3(a, b, res, True) [1] bool2Nat(False) -> 0 [1] bool2Nat(True) -> S(0) [1] m1(a, x, res, t) -> m2(a, x, res, False) [1] l9(res, y, res', tmp, mtmp, t) -> res [1] l6(x, y, res, tmp, mtmp, t) -> 0 [1] l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False) [1] l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False) [1] e7(a, b, res, t) -> False [1] e6(a, b, res, t) -> False [1] e5(a, b, res, t) -> True [1] monus(a, b) -> m1(a, b, False, False) [1] m5(a, b, res, t) -> res [1] l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, equal0(x, y), mtmp, t) [1] l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0, tmp, mtmp, t) [1] l16(x, y, res, tmp, mtmp, t) -> res [1] l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, monus(x, y), t) [1] l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, monus(x, y), t) [1] l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, lt(x, y)) [1] gcd(x, y) -> l1(x, y, 0, False, False, False) [1] equal0(a, b) -> e1(a, b, False, False) [1] e8(a, b, res, t) -> res [1] e3(a, b, res, t) -> e4(a, b, res, lt(b, a)) [1] e1(a, b, res, t) -> e2(a, b, res, lt(a, b)) [1] lt(S(x), S(y)) -> lt(x, y) [0] lt(0, S(y)) -> True [0] lt(x, 0) -> False [0] lt(v0, v1) -> null_lt [0] l2(v0, v1, v2, v3, v4, v5) -> 0 [0] e2(v0, v1, v2, v3) -> null_e2 [0] m2(v0, v1, v2, v3) -> null_m2 [0] m4(v0, v1, v2, v3) -> null_m4 [0] e4(v0, v1, v2, v3) -> null_e4 [0] l5(v0, v1, v2, v3, v4, v5) -> 0 [0] l8(v0, v1, v2, v3, v4, v5) -> 0 [0] l11(v0, v1, v2, v3, v4, v5) -> 0 [0] l15(v0, v1, v2, v3, v4, v5) -> 0 [0] l13(v0, v1, v2, v3, v4, v5) -> 0 [0] The TRS has the following type information: m2 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 S :: 0:S -> 0:S 0 :: 0:S True :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 False :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 m3 :: 0:S -> a -> b -> c -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 l8 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l5 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S help1 :: 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e4 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e2 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 l15 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l16 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S gcd :: 0:S -> 0:S -> 0:S l13 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S m4 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 m5 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 monus :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 l10 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l7 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l2 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l3 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l11 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l14 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l12 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S e3 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 bool2Nat :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S m1 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 l9 :: l9 -> d -> e -> f -> g -> h -> l9 l6 :: i -> j -> k -> l -> m -> n -> 0:S l4 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l1 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S e7 :: o -> p -> q -> r -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e6 :: s -> t -> u -> v -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e5 :: w -> x -> y -> z -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 equal0 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 lt :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e1 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e8 :: za -> zaa -> e8 -> zaaa -> e8 null_lt :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 null_e2 :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 null_m2 :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 null_m4 :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 null_e4 :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 const :: a const1 :: b const2 :: c const3 :: l9 const4 :: d const5 :: e const6 :: f const7 :: g const8 :: h const9 :: i const10 :: j const11 :: k const12 :: l const13 :: m const14 :: n const15 :: o const16 :: p const17 :: q const18 :: r const19 :: s const20 :: t const21 :: u const22 :: v const23 :: w const24 :: x const25 :: y const26 :: z const27 :: e8 const28 :: za const29 :: zaa const30 :: zaaa Rewrite Strategy: INNERMOST ---------------------------------------- (11) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (12) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: m2(S(0), b, res, True) -> False [1] m2(S(S(x)), b, res, True) -> True [1] m2(0, b, res, True) -> False [1] m3(S(0), b, res, t) -> False [1] m3(S(S(x)), b, res, t) -> True [1] m3(0, b, res, t) -> False [1] l8(res, y, res', True, mtmp, t) -> res [1] l5(x, y, res, tmp, mtmp, True) -> 0 [1] help1(S(0)) -> False [1] help1(S(S(x))) -> True [1] e4(a, b, res, False) -> False [1] e4(a, b, res, True) -> True [1] e2(a, b, res, False) -> False [1] l15(x, y, res, tmp, False, t) -> l16(x, y, l1(y, 0, 0, False, False, False), tmp, False, t) [2] l15(x, y, res, tmp, True, t) -> l16(x, y, l1(y, S(0), 0, False, False, False), tmp, True, t) [2] l13(x, y, res, tmp, False, t) -> l16(x, y, l1(0, y, 0, False, False, False), tmp, False, t) [2] l13(x, y, res, tmp, True, t) -> l16(x, y, l1(S(0), y, 0, False, False, False), tmp, True, t) [2] m4(S(x'), S(x), res, t) -> m5(S(x'), S(x), m1(x', x, False, False), t) [2] m2(a, b, res, False) -> m4(a, b, res, False) [1] l8(x, y, res, False, mtmp, t) -> l10(x, y, res, False, mtmp, t) [1] l5(x, y, res, tmp, mtmp, False) -> l7(x, y, res, tmp, mtmp, False) [1] l2(x, y, res, tmp, mtmp, False) -> l3(x, y, res, tmp, mtmp, False) [1] l2(x, y, res, tmp, mtmp, True) -> res [1] l11(x, y, res, tmp, mtmp, False) -> l14(x, y, res, tmp, mtmp, False) [1] l11(x, y, res, tmp, mtmp, True) -> l12(x, y, res, tmp, mtmp, True) [1] help1(0) -> False [1] e2(a, b, res, True) -> e3(a, b, res, True) [1] bool2Nat(False) -> 0 [1] bool2Nat(True) -> S(0) [1] m1(a, x, res, t) -> m2(a, x, res, False) [1] l9(res, y, res', tmp, mtmp, t) -> res [1] l6(x, y, res, tmp, mtmp, t) -> 0 [1] l4(x', x, res, tmp, mtmp, t) -> l5(x', x, res, tmp, mtmp, False) [1] l1(x, y, res, tmp, mtmp, t) -> l2(x, y, res, tmp, mtmp, False) [1] e7(a, b, res, t) -> False [1] e6(a, b, res, t) -> False [1] e5(a, b, res, t) -> True [1] monus(a, b) -> m1(a, b, False, False) [1] m5(a, b, res, t) -> res [1] l7(x, y, res, tmp, mtmp, t) -> l8(x, y, res, e1(x, y, False, False), mtmp, t) [2] l3(x, y, res, tmp, mtmp, t) -> l4(x, y, 0, tmp, mtmp, t) [1] l16(x, y, res, tmp, mtmp, t) -> res [1] l14(x, y, res, tmp, mtmp, t) -> l15(x, y, res, tmp, m1(x, y, False, False), t) [2] l12(x, y, res, tmp, mtmp, t) -> l13(x, y, res, tmp, m1(x, y, False, False), t) [2] l10(S(x''), S(y'), res, tmp, mtmp, t) -> l11(S(x''), S(y'), res, tmp, mtmp, lt(x'', y')) [1] l10(0, S(y''), res, tmp, mtmp, t) -> l11(0, S(y''), res, tmp, mtmp, True) [1] l10(x, 0, res, tmp, mtmp, t) -> l11(x, 0, res, tmp, mtmp, False) [1] l10(x, y, res, tmp, mtmp, t) -> l11(x, y, res, tmp, mtmp, null_lt) [1] gcd(x, y) -> l1(x, y, 0, False, False, False) [1] equal0(a, b) -> e1(a, b, False, False) [1] e8(a, b, res, t) -> res [1] e3(S(y1), S(x1), res, t) -> e4(S(y1), S(x1), res, lt(x1, y1)) [1] e3(S(y2), 0, res, t) -> e4(S(y2), 0, res, True) [1] e3(0, b, res, t) -> e4(0, b, res, False) [1] e3(a, b, res, t) -> e4(a, b, res, null_lt) [1] e1(S(x2), S(y3), res, t) -> e2(S(x2), S(y3), res, lt(x2, y3)) [1] e1(0, S(y4), res, t) -> e2(0, S(y4), res, True) [1] e1(a, 0, res, t) -> e2(a, 0, res, False) [1] e1(a, b, res, t) -> e2(a, b, res, null_lt) [1] lt(S(x), S(y)) -> lt(x, y) [0] lt(0, S(y)) -> True [0] lt(x, 0) -> False [0] lt(v0, v1) -> null_lt [0] l2(v0, v1, v2, v3, v4, v5) -> 0 [0] e2(v0, v1, v2, v3) -> null_e2 [0] m2(v0, v1, v2, v3) -> null_m2 [0] m4(v0, v1, v2, v3) -> null_m4 [0] e4(v0, v1, v2, v3) -> null_e4 [0] l5(v0, v1, v2, v3, v4, v5) -> 0 [0] l8(v0, v1, v2, v3, v4, v5) -> 0 [0] l11(v0, v1, v2, v3, v4, v5) -> 0 [0] l15(v0, v1, v2, v3, v4, v5) -> 0 [0] l13(v0, v1, v2, v3, v4, v5) -> 0 [0] The TRS has the following type information: m2 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 S :: 0:S -> 0:S 0 :: 0:S True :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 False :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 m3 :: 0:S -> a -> b -> c -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 l8 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l5 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S help1 :: 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e4 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e2 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 l15 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l16 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S gcd :: 0:S -> 0:S -> 0:S l13 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S m4 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 m5 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 monus :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 l10 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l7 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l2 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l3 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l11 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l14 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l12 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S e3 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 bool2Nat :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S m1 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 l9 :: l9 -> d -> e -> f -> g -> h -> l9 l6 :: i -> j -> k -> l -> m -> n -> 0:S l4 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S l1 :: 0:S -> 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> 0:S e7 :: o -> p -> q -> r -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e6 :: s -> t -> u -> v -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e5 :: w -> x -> y -> z -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 equal0 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 lt :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e1 :: 0:S -> 0:S -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 -> True:False:null_lt:null_e2:null_m2:null_m4:null_e4 e8 :: za -> zaa -> e8 -> zaaa -> e8 null_lt :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 null_e2 :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 null_m2 :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 null_m4 :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 null_e4 :: True:False:null_lt:null_e2:null_m2:null_m4:null_e4 const :: a const1 :: b const2 :: c const3 :: l9 const4 :: d const5 :: e const6 :: f const7 :: g const8 :: h const9 :: i const10 :: j const11 :: k const12 :: l const13 :: m const14 :: n const15 :: o const16 :: p const17 :: q const18 :: r const19 :: s const20 :: t const21 :: u const22 :: v const23 :: w const24 :: x const25 :: y const26 :: z const27 :: e8 const28 :: za const29 :: zaa const30 :: zaaa Rewrite Strategy: INNERMOST ---------------------------------------- (13) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: 0 => 0 True => 2 False => 1 null_lt => 0 null_e2 => 0 null_m2 => 0 null_m4 => 0 null_e4 => 0 const => 0 const1 => 0 const2 => 0 const3 => 0 const4 => 0 const5 => 0 const6 => 0 const7 => 0 const8 => 0 const9 => 0 const10 => 0 const11 => 0 const12 => 0 const13 => 0 const14 => 0 const15 => 0 const16 => 0 const17 => 0 const18 => 0 const19 => 0 const20 => 0 const21 => 0 const22 => 0 const23 => 0 const24 => 0 const25 => 0 const26 => 0 const27 => 0 const28 => 0 const29 => 0 const30 => 0 ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(a, b, res, 0) :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(a, 0, res, 1) :|: z = a, a >= 0, z'' = res, z1 = t, t >= 0, res >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + y4, res, 2) :|: z'' = res, z1 = t, t >= 0, z' = 1 + y4, res >= 0, y4 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + x2, 1 + y3, res, lt(x2, y3)) :|: z'' = res, z1 = t, z = 1 + x2, y3 >= 0, t >= 0, z' = 1 + y3, res >= 0, x2 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(a, b, res, 2) :|: z = a, b >= 0, z1 = 2, a >= 0, z'' = res, z' = b, res >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = 1, z' = b, res >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(a, b, res, 0) :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(0, b, res, 1) :|: b >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0, z = 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + y1, 1 + x1, res, lt(x1, y1)) :|: z = 1 + y1, y1 >= 0, x1 >= 0, z'' = res, z1 = t, t >= 0, res >= 0, z' = 1 + x1 e3(z, z', z'', z1) -{ 1 }-> e4(1 + y2, 0, res, 2) :|: z'' = res, z = 1 + y2, z1 = t, t >= 0, res >= 0, y2 >= 0, z' = 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z = a, b >= 0, z1 = 2, a >= 0, z'' = res, z' = b, res >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = 1, z' = b, res >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 e8(z, z', z'', z1) -{ 1 }-> res :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 equal0(z, z') -{ 1 }-> e1(a, b, 1, 1) :|: z = a, b >= 0, a >= 0, z' = b gcd(z, z') -{ 1 }-> l1(x, y, 0, 1, 1, 1) :|: x >= 0, y >= 0, z = x, z' = y help1(z) -{ 1 }-> 2 :|: x >= 0, z = 1 + (1 + x) help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(x, y, res, tmp, mtmp, 1) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(x, y, res, tmp, mtmp, 0) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(x, 0, res, tmp, mtmp, 1) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z1 = tmp, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + y'', res, tmp, mtmp, 2) :|: mtmp >= 0, z' = 1 + y'', z3 = t, z2 = mtmp, z'' = res, y'' >= 0, t >= 0, res >= 0, tmp >= 0, z = 0, z1 = tmp l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + x'', 1 + y', res, tmp, mtmp, lt(x'', y')) :|: z = 1 + x'', mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, y' >= 0, t >= 0, res >= 0, tmp >= 0, z' = 1 + y', x'' >= 0, z1 = tmp l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(x, y, res, tmp, mtmp, 1) :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, z3 = 1, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(x, y, res, tmp, mtmp, 2) :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(x, y, res, tmp, m1(x, y, 1, 1), t) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(x, y, l1(0, y, 0, 1, 1, 1), tmp, 1, t) :|: z3 = t, z2 = 1, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(x, y, l1(1 + 0, y, 0, 1, 1, 1), tmp, 2, t) :|: z2 = 2, z3 = t, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(x, y, res, tmp, m1(x, y, 1, 1), t) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(x, y, l1(y, 0, 0, 1, 1, 1), tmp, 1, t) :|: z3 = t, z2 = 1, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(x, y, l1(y, 1 + 0, 0, 1, 1, 1), tmp, 2, t) :|: z2 = 2, z3 = t, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> res :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l2(z, z', z'', z1, z2, z3) -{ 1 }-> res :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(x, y, res, tmp, mtmp, 1) :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, z3 = 1, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(x, y, 0, tmp, mtmp, t) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(x', x, res, tmp, mtmp, 1) :|: mtmp >= 0, z3 = t, z' = x, z2 = mtmp, z'' = res, x' >= 0, x >= 0, t >= 0, res >= 0, tmp >= 0, z1 = tmp, z = x' l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(x, y, res, tmp, mtmp, 1) :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, z3 = 1, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(x, y, res, e1(x, y, 1, 1), mtmp, t) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l8(z, z', z'', z1, z2, z3) -{ 1 }-> res :|: mtmp >= 0, z3 = t, z'' = res', z1 = 2, z2 = mtmp, y >= 0, t >= 0, z = res, res >= 0, z' = y, res' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(x, y, res, 1, mtmp, t) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, z1 = 1, t >= 0, res >= 0, z = x, z' = y l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> res :|: mtmp >= 0, z3 = t, z'' = res', z2 = mtmp, y >= 0, t >= 0, z = res, res >= 0, tmp >= 0, z' = y, z1 = tmp, res' >= 0 lt(z, z') -{ 0 }-> lt(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x lt(z, z') -{ 0 }-> 2 :|: z' = 1 + y, y >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: x >= 0, z = x, z' = 0 lt(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 m1(z, z', z'', z1) -{ 1 }-> m2(a, x, res, 1) :|: z = a, z' = x, a >= 0, z'' = res, x >= 0, z1 = t, t >= 0, res >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(a, b, res, 1) :|: z = a, b >= 0, a >= 0, z'' = res, z1 = 1, z' = b, res >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: b >= 0, z1 = 2, z'' = res, x >= 0, z' = b, res >= 0, z = 1 + (1 + x) m2(z, z', z'', z1) -{ 1 }-> 1 :|: b >= 0, z1 = 2, z = 1 + 0, z'' = res, z' = b, res >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: b >= 0, z1 = 2, z'' = res, z' = b, res >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: b >= 0, z'' = res, x >= 0, z1 = t, z' = b, t >= 0, res >= 0, z = 1 + (1 + x) m3(z, z', z'', z1) -{ 1 }-> 1 :|: b >= 0, z = 1 + 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: b >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + x', 1 + x, m1(x', x, 1, 1), t) :|: z = 1 + x', z' = 1 + x, z'' = res, x' >= 0, x >= 0, z1 = t, t >= 0, res >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 m5(z, z', z'', z1) -{ 1 }-> res :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 monus(z, z') -{ 1 }-> m1(a, b, 1, 1) :|: z = a, b >= 0, a >= 0, z' = b ---------------------------------------- (15) InliningProof (UPPER BOUND(ID)) Inlined the following terminating rules on right-hand sides where appropriate: e4(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = 1, z' = b, res >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z = a, b >= 0, z1 = 2, a >= 0, z'' = res, z' = b, res >= 0 m5(z, z', z'', z1) -{ 1 }-> res :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> res :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(a, b, res, 0) :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(a, 0, res, 1) :|: z = a, a >= 0, z'' = res, z1 = t, t >= 0, res >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + y4, res, 2) :|: z'' = res, z1 = t, t >= 0, z' = 1 + y4, res >= 0, y4 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + x2, 1 + y3, res, lt(x2, y3)) :|: z'' = res, z1 = t, z = 1 + x2, y3 >= 0, t >= 0, z' = 1 + y3, res >= 0, x2 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(a, b, res, 2) :|: z = a, b >= 0, z1 = 2, a >= 0, z'' = res, z' = b, res >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = 1, z' = b, res >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + y1, 1 + x1, res, lt(x1, y1)) :|: z = 1 + y1, y1 >= 0, x1 >= 0, z'' = res, z1 = t, t >= 0, res >= 0, z' = 1 + x1 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z'' = res, z = 1 + y2, z1 = t, t >= 0, res >= 0, y2 >= 0, z' = 0, 1 + y2 = a, b >= 0, 2 = 2, a >= 0, res = res', 0 = b, res' >= 0 e3(z, z', z'', z1) -{ 2 }-> 1 :|: b >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0, z = 0, 0 = a, b' >= 0, a >= 0, res = res', 1 = 1, b = b', res' >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z'' = res, z = 1 + y2, z1 = t, t >= 0, res >= 0, y2 >= 0, z' = 0, 2 = v3, v0 >= 0, res = v2, v1 >= 0, 1 + y2 = v0, 0 = v1, v2 >= 0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: b >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0, z = 0, 1 = v3, v0 >= 0, res = v2, v1 >= 0, 0 = v0, b = v1, v2 >= 0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0, 0 = v3, v0 >= 0, res = v2, v1 >= 0, a = v0, b = v1, v2 >= 0, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z = a, b >= 0, z1 = 2, a >= 0, z'' = res, z' = b, res >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = 1, z' = b, res >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 e8(z, z', z'', z1) -{ 1 }-> res :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 equal0(z, z') -{ 1 }-> e1(a, b, 1, 1) :|: z = a, b >= 0, a >= 0, z' = b gcd(z, z') -{ 1 }-> l1(x, y, 0, 1, 1, 1) :|: x >= 0, y >= 0, z = x, z' = y help1(z) -{ 1 }-> 2 :|: x >= 0, z = 1 + (1 + x) help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(x, y, res, tmp, mtmp, 1) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(x, y, res, tmp, mtmp, 0) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(x, 0, res, tmp, mtmp, 1) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z1 = tmp, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + y'', res, tmp, mtmp, 2) :|: mtmp >= 0, z' = 1 + y'', z3 = t, z2 = mtmp, z'' = res, y'' >= 0, t >= 0, res >= 0, tmp >= 0, z = 0, z1 = tmp l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + x'', 1 + y', res, tmp, mtmp, lt(x'', y')) :|: z = 1 + x'', mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, y' >= 0, t >= 0, res >= 0, tmp >= 0, z' = 1 + y', x'' >= 0, z1 = tmp l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(x, y, res, tmp, mtmp, 1) :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, z3 = 1, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(x, y, res, tmp, mtmp, 2) :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(x, y, res, tmp, m1(x, y, 1, 1), t) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(x, y, l1(0, y, 0, 1, 1, 1), tmp, 1, t) :|: z3 = t, z2 = 1, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(x, y, l1(1 + 0, y, 0, 1, 1, 1), tmp, 2, t) :|: z2 = 2, z3 = t, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(x, y, res, tmp, m1(x, y, 1, 1), t) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(x, y, l1(y, 0, 0, 1, 1, 1), tmp, 1, t) :|: z3 = t, z2 = 1, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(x, y, l1(y, 1 + 0, 0, 1, 1, 1), tmp, 2, t) :|: z2 = 2, z3 = t, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> res :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l2(z, z', z'', z1, z2, z3) -{ 1 }-> res :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(x, y, res, tmp, mtmp, 1) :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, z3 = 1, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(x, y, 0, tmp, mtmp, t) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(x', x, res, tmp, mtmp, 1) :|: mtmp >= 0, z3 = t, z' = x, z2 = mtmp, z'' = res, x' >= 0, x >= 0, t >= 0, res >= 0, tmp >= 0, z1 = tmp, z = x' l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(x, y, res, tmp, mtmp, 1) :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, z3 = 1, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: mtmp >= 0, z2 = mtmp, z'' = res, x >= 0, y >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(x, y, res, e1(x, y, 1, 1), mtmp, t) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, t >= 0, res >= 0, tmp >= 0, z = x, z' = y, z1 = tmp l8(z, z', z'', z1, z2, z3) -{ 1 }-> res :|: mtmp >= 0, z3 = t, z'' = res', z1 = 2, z2 = mtmp, y >= 0, t >= 0, z = res, res >= 0, z' = y, res' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(x, y, res, 1, mtmp, t) :|: mtmp >= 0, z3 = t, z2 = mtmp, z'' = res, x >= 0, y >= 0, z1 = 1, t >= 0, res >= 0, z = x, z' = y l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z1 = v3, z3 = v5, v0 >= 0, v4 >= 0, z'' = v2, v1 >= 0, v5 >= 0, z = v0, z' = v1, z2 = v4, v2 >= 0, v3 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> res :|: mtmp >= 0, z3 = t, z'' = res', z2 = mtmp, y >= 0, t >= 0, z = res, res >= 0, tmp >= 0, z' = y, z1 = tmp, res' >= 0 lt(z, z') -{ 0 }-> lt(x, y) :|: z' = 1 + y, x >= 0, y >= 0, z = 1 + x lt(z, z') -{ 0 }-> 2 :|: z' = 1 + y, y >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: x >= 0, z = x, z' = 0 lt(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 m1(z, z', z'', z1) -{ 1 }-> m2(a, x, res, 1) :|: z = a, z' = x, a >= 0, z'' = res, x >= 0, z1 = t, t >= 0, res >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(a, b, res, 1) :|: z = a, b >= 0, a >= 0, z'' = res, z1 = 1, z' = b, res >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: b >= 0, z1 = 2, z'' = res, x >= 0, z' = b, res >= 0, z = 1 + (1 + x) m2(z, z', z'', z1) -{ 1 }-> 1 :|: b >= 0, z1 = 2, z = 1 + 0, z'' = res, z' = b, res >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: b >= 0, z1 = 2, z'' = res, z' = b, res >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: b >= 0, z'' = res, x >= 0, z1 = t, z' = b, t >= 0, res >= 0, z = 1 + (1 + x) m3(z, z', z'', z1) -{ 1 }-> 1 :|: b >= 0, z = 1 + 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: b >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + x', 1 + x, m1(x', x, 1, 1), t) :|: z = 1 + x', z' = 1 + x, z'' = res, x' >= 0, x >= 0, z1 = t, t >= 0, res >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z1 = v3, v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0, v3 >= 0 m5(z, z', z'', z1) -{ 1 }-> res :|: z = a, b >= 0, a >= 0, z'' = res, z1 = t, z' = b, t >= 0, res >= 0 monus(z, z') -{ 1 }-> m1(a, b, 1, 1) :|: z = a, b >= 0, a >= 0, z' = b ---------------------------------------- (17) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 ---------------------------------------- (19) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { e4 } { l16 } { e5 } { e8 } { m5 } { l6 } { bool2Nat } { l9 } { e6 } { lt } { m3 } { e7 } { help1 } { e3 } { m1, m4, m2 } { e2 } { monus } { e1 } { equal0 } { l5, l7, l11, l1, l3, l13, l2, l14, l4, l10, l8, l15, l12 } { gcd } ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e4}, {l16}, {e5}, {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} ---------------------------------------- (21) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e4}, {l16}, {e5}, {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} ---------------------------------------- (23) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: e4 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e4}, {l16}, {e5}, {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: ?, size: O(1) [2] ---------------------------------------- (25) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: e4 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {l16}, {e5}, {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] ---------------------------------------- (27) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {l16}, {e5}, {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: l16 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z'' ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {l16}, {e5}, {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: ?, size: O(n^1) [z''] ---------------------------------------- (31) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: l16 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e5}, {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] ---------------------------------------- (33) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e5}, {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: e5 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e5}, {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: ?, size: O(1) [2] ---------------------------------------- (37) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: e5 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] ---------------------------------------- (39) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: e8 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z'' ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e8}, {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: ?, size: O(n^1) [z''] ---------------------------------------- (43) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: e8 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] ---------------------------------------- (45) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] ---------------------------------------- (47) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: m5 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z'' ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {m5}, {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: ?, size: O(n^1) [z''] ---------------------------------------- (49) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: m5 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] ---------------------------------------- (51) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] ---------------------------------------- (53) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: l6 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (54) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {l6}, {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: ?, size: O(1) [0] ---------------------------------------- (55) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: l6 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (56) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] ---------------------------------------- (57) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (58) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] ---------------------------------------- (59) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: bool2Nat after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (60) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {bool2Nat}, {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: ?, size: O(1) [1] ---------------------------------------- (61) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: bool2Nat after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (62) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (63) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (64) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (65) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: l9 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (66) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {l9}, {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: ?, size: O(n^1) [z] ---------------------------------------- (67) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: l9 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (68) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] ---------------------------------------- (69) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (70) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] ---------------------------------------- (71) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: e6 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (72) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e6}, {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: ?, size: O(1) [1] ---------------------------------------- (73) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: e6 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (74) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (75) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (76) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (77) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: lt after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (78) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {lt}, {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: ?, size: O(1) [2] ---------------------------------------- (79) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: lt after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (80) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', lt(z - 1, z' - 1)) :|: z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 1 }-> e4(1 + (z - 1), 1 + (z' - 1), z'', lt(z' - 1, z - 1)) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, lt(z - 1, z' - 1)) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> lt(z - 1, z' - 1) :|: z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (81) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (82) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (83) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: m3 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (84) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {m3}, {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: ?, size: O(1) [2] ---------------------------------------- (85) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: m3 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (86) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] ---------------------------------------- (87) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (88) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] ---------------------------------------- (89) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: e7 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (90) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e7}, {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: ?, size: O(1) [1] ---------------------------------------- (91) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: e7 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (92) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (93) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (94) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (95) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: help1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (96) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {help1}, {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: ?, size: O(1) [2] ---------------------------------------- (97) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: help1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (98) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] ---------------------------------------- (99) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (100) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] ---------------------------------------- (101) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: e3 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (102) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e3}, {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: ?, size: O(1) [2] ---------------------------------------- (103) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: e3 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (104) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 1 }-> e3(z, z', z'', 2) :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] ---------------------------------------- (105) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (106) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] ---------------------------------------- (107) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: m1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: m4 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: m2 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (108) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {m1,m4,m2}, {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: ?, size: O(1) [0] m4: runtime: ?, size: O(1) [0] m2: runtime: ?, size: O(1) [2] ---------------------------------------- (109) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: m1 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + 5*z' Computed RUNTIME bound using CoFloCo for: m4 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 5*z' Computed RUNTIME bound using CoFloCo for: m2 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + 5*z' ---------------------------------------- (110) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 2 }-> l13(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 2 }-> l15(z, z', z'', z1, m1(z, z', 1, 1), z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 1 }-> m2(z, z', z'', 1) :|: z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> m4(z, z', z'', 1) :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 2 }-> m5(1 + (z - 1), 1 + (z' - 1), m1(z - 1, z' - 1, 1, 1), z1) :|: z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 1 }-> m1(z, z', 1, 1) :|: z' >= 0, z >= 0 Function symbols to be analyzed: {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] ---------------------------------------- (111) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (112) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] ---------------------------------------- (113) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: e2 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (114) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {e2}, {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: ?, size: O(1) [2] ---------------------------------------- (115) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: e2 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 3 ---------------------------------------- (116) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 1 }-> e2(z, z', z'', 0) :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e1(z, z', z'', z1) -{ 1 }-> e2(z, 0, z'', 1) :|: z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 1 }-> e2(0, 1 + (z' - 1), z'', 2) :|: z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 1 }-> e2(1 + (z - 1), 1 + (z' - 1), z'', s') :|: s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] ---------------------------------------- (117) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (118) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] ---------------------------------------- (119) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: monus after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (120) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {monus}, {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: ?, size: O(1) [0] ---------------------------------------- (121) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: monus after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 3 + 5*z' ---------------------------------------- (122) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] ---------------------------------------- (123) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (124) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] ---------------------------------------- (125) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: e1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (126) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {e1}, {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] e1: runtime: ?, size: O(1) [2] ---------------------------------------- (127) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: e1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 4 ---------------------------------------- (128) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 1 }-> e1(z, z', 1, 1) :|: z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 2 }-> l8(z, z', z'', e1(z, z', 1, 1), z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] e1: runtime: O(1) [4], size: O(1) [2] ---------------------------------------- (129) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (130) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 5 }-> s16 :|: s16 >= 0, s16 <= 2, z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 6 }-> l8(z, z', z'', s15, z2, z3) :|: s15 >= 0, s15 <= 2, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] e1: runtime: O(1) [4], size: O(1) [2] ---------------------------------------- (131) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: equal0 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (132) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 5 }-> s16 :|: s16 >= 0, s16 <= 2, z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 6 }-> l8(z, z', z'', s15, z2, z3) :|: s15 >= 0, s15 <= 2, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {equal0}, {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] e1: runtime: O(1) [4], size: O(1) [2] equal0: runtime: ?, size: O(1) [2] ---------------------------------------- (133) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: equal0 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 5 ---------------------------------------- (134) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 5 }-> s16 :|: s16 >= 0, s16 <= 2, z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 6 }-> l8(z, z', z'', s15, z2, z3) :|: s15 >= 0, s15 <= 2, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] e1: runtime: O(1) [4], size: O(1) [2] equal0: runtime: O(1) [5], size: O(1) [2] ---------------------------------------- (135) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (136) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 5 }-> s16 :|: s16 >= 0, s16 <= 2, z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 6 }-> l8(z, z', z'', s15, z2, z3) :|: s15 >= 0, s15 <= 2, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] e1: runtime: O(1) [4], size: O(1) [2] equal0: runtime: O(1) [5], size: O(1) [2] ---------------------------------------- (137) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: l5 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z Computed SIZE bound using CoFloCo for: l7 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z Computed SIZE bound using CoFloCo for: l11 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: l1 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z Computed SIZE bound using CoFloCo for: l3 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z Computed SIZE bound using CoFloCo for: l13 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 Computed SIZE bound using CoFloCo for: l2 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z + z'' Computed SIZE bound using CoFloCo for: l14 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: l4 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z Computed SIZE bound using CoFloCo for: l10 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: l8 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z Computed SIZE bound using CoFloCo for: l15 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' Computed SIZE bound using CoFloCo for: l12 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (138) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 5 }-> s16 :|: s16 >= 0, s16 <= 2, z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 6 }-> l8(z, z', z'', s15, z2, z3) :|: s15 >= 0, s15 <= 2, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {l5,l7,l11,l1,l3,l13,l2,l14,l4,l10,l8,l15,l12}, {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] e1: runtime: O(1) [4], size: O(1) [2] equal0: runtime: O(1) [5], size: O(1) [2] l5: runtime: ?, size: O(n^1) [z] l7: runtime: ?, size: O(n^1) [z] l11: runtime: ?, size: O(1) [0] l1: runtime: ?, size: O(n^1) [z] l3: runtime: ?, size: O(n^1) [z] l13: runtime: ?, size: O(1) [1] l2: runtime: ?, size: O(n^1) [z + z''] l14: runtime: ?, size: O(1) [0] l4: runtime: ?, size: O(n^1) [z] l10: runtime: ?, size: O(1) [0] l8: runtime: ?, size: O(n^1) [z] l15: runtime: ?, size: O(n^1) [z'] l12: runtime: ?, size: O(1) [1] ---------------------------------------- (139) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: l5 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 14 + 5*z' Computed RUNTIME bound using CoFloCo for: l7 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 13 + 5*z' Computed RUNTIME bound using CoFloCo for: l11 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 5 + 5*z' Computed RUNTIME bound using CoFloCo for: l1 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 18 + 5*z' Computed RUNTIME bound using CoFloCo for: l3 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 16 + 5*z' Computed RUNTIME bound using CoFloCo for: l13 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 21 + 5*z' Computed RUNTIME bound using CoFloCo for: l2 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 17 + 5*z' Computed RUNTIME bound using CoFloCo for: l14 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 4 + 5*z' Computed RUNTIME bound using CoFloCo for: l4 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 15 + 5*z' Computed RUNTIME bound using CoFloCo for: l10 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 6 + 5*z' Computed RUNTIME bound using CoFloCo for: l8 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 7 + 5*z' Computed RUNTIME bound using CoFloCo for: l15 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 26 Computed RUNTIME bound using CoFloCo for: l12 after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 25 + 10*z' ---------------------------------------- (140) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 5 }-> s16 :|: s16 >= 0, s16 <= 2, z' >= 0, z >= 0 gcd(z, z') -{ 1 }-> l1(z, z', 0, 1, 1, 1) :|: z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 1 }-> l2(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, z', z'', z1, z2, 0) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(z, 0, z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(0, 1 + (z' - 1), z'', z1, z2, 2) :|: z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 1 }-> l11(1 + (z - 1), 1 + (z' - 1), z'', z1, z2, s) :|: s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l14(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 1 }-> l12(z, z', z'', z1, z2, 2) :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l13(z, z', z'', z1, s8, z3) :|: s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(0, z', 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(1 + 0, z', 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 4 + 5*z' }-> l15(z, z', z'', z1, s7, z3) :|: s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 0, 0, 1, 1, 1), z1, 1, z3) :|: z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 2 }-> l16(z, z', l1(z', 1 + 0, 0, 1, 1, 1), z1, 2, z3) :|: z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 1 }-> l3(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 1 }-> l4(z, z', 0, z1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 1 }-> l5(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> l7(z, z', z'', z1, z2, 1) :|: z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 6 }-> l8(z, z', z'', s15, z2, z3) :|: s15 >= 0, s15 <= 2, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> l10(z, z', z'', 1, z2, z3) :|: z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] e1: runtime: O(1) [4], size: O(1) [2] equal0: runtime: O(1) [5], size: O(1) [2] l5: runtime: O(n^1) [14 + 5*z'], size: O(n^1) [z] l7: runtime: O(n^1) [13 + 5*z'], size: O(n^1) [z] l11: runtime: O(n^1) [5 + 5*z'], size: O(1) [0] l1: runtime: O(n^1) [18 + 5*z'], size: O(n^1) [z] l3: runtime: O(n^1) [16 + 5*z'], size: O(n^1) [z] l13: runtime: O(n^1) [21 + 5*z'], size: O(1) [1] l2: runtime: O(n^1) [17 + 5*z'], size: O(n^1) [z + z''] l14: runtime: O(n^1) [4 + 5*z'], size: O(1) [0] l4: runtime: O(n^1) [15 + 5*z'], size: O(n^1) [z] l10: runtime: O(n^1) [6 + 5*z'], size: O(1) [0] l8: runtime: O(n^1) [7 + 5*z'], size: O(n^1) [z] l15: runtime: O(1) [26], size: O(n^1) [z'] l12: runtime: O(n^1) [25 + 10*z'], size: O(1) [1] ---------------------------------------- (141) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (142) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 5 }-> s16 :|: s16 >= 0, s16 <= 2, z' >= 0, z >= 0 gcd(z, z') -{ 19 + 5*z' }-> s32 :|: s32 >= 0, s32 <= z, z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 18 + 5*z' }-> s23 :|: s23 >= 0, s23 <= z'' + z, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 6 + 5*z' }-> s28 :|: s28 >= 0, s28 <= 0, s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 6 + 5*z' }-> s29 :|: s29 >= 0, s29 <= 0, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 6 }-> s30 :|: s30 >= 0, s30 <= 0, z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 6 + 5*z' }-> s31 :|: s31 >= 0, s31 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 5 + 5*z' }-> s20 :|: s20 >= 0, s20 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 26 + 10*z' }-> s21 :|: s21 >= 0, s21 <= 1, z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 25 + 10*z' }-> s27 :|: s27 >= 0, s27 <= 1, s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 21 + 5*z' }-> s38 :|: s37 >= 0, s37 <= 0, s38 >= 0, s38 <= s37, z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 21 + 5*z' }-> s40 :|: s39 >= 0, s39 <= 1 + 0, s40 >= 0, s40 <= s39, z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 30 + 5*z' }-> s26 :|: s26 >= 0, s26 <= z', s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 21 }-> s34 :|: s33 >= 0, s33 <= z', s34 >= 0, s34 <= s33, z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 26 }-> s36 :|: s35 >= 0, s35 <= z', s36 >= 0, s36 <= s35, z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 17 + 5*z' }-> s19 :|: s19 >= 0, s19 <= z, z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 16 + 5*z' }-> s25 :|: s25 >= 0, s25 <= z, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 15 + 5*z' }-> s22 :|: s22 >= 0, s22 <= z, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 14 + 5*z' }-> s18 :|: s18 >= 0, s18 <= z, z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 13 + 5*z' }-> s24 :|: s24 >= 0, s24 <= z, s15 >= 0, s15 <= 2, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 7 + 5*z' }-> s17 :|: s17 >= 0, s17 <= 0, z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] e1: runtime: O(1) [4], size: O(1) [2] equal0: runtime: O(1) [5], size: O(1) [2] l5: runtime: O(n^1) [14 + 5*z'], size: O(n^1) [z] l7: runtime: O(n^1) [13 + 5*z'], size: O(n^1) [z] l11: runtime: O(n^1) [5 + 5*z'], size: O(1) [0] l1: runtime: O(n^1) [18 + 5*z'], size: O(n^1) [z] l3: runtime: O(n^1) [16 + 5*z'], size: O(n^1) [z] l13: runtime: O(n^1) [21 + 5*z'], size: O(1) [1] l2: runtime: O(n^1) [17 + 5*z'], size: O(n^1) [z + z''] l14: runtime: O(n^1) [4 + 5*z'], size: O(1) [0] l4: runtime: O(n^1) [15 + 5*z'], size: O(n^1) [z] l10: runtime: O(n^1) [6 + 5*z'], size: O(1) [0] l8: runtime: O(n^1) [7 + 5*z'], size: O(n^1) [z] l15: runtime: O(1) [26], size: O(n^1) [z'] l12: runtime: O(n^1) [25 + 10*z'], size: O(1) [1] ---------------------------------------- (143) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: gcd after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (144) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 5 }-> s16 :|: s16 >= 0, s16 <= 2, z' >= 0, z >= 0 gcd(z, z') -{ 19 + 5*z' }-> s32 :|: s32 >= 0, s32 <= z, z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 18 + 5*z' }-> s23 :|: s23 >= 0, s23 <= z'' + z, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 6 + 5*z' }-> s28 :|: s28 >= 0, s28 <= 0, s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 6 + 5*z' }-> s29 :|: s29 >= 0, s29 <= 0, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 6 }-> s30 :|: s30 >= 0, s30 <= 0, z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 6 + 5*z' }-> s31 :|: s31 >= 0, s31 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 5 + 5*z' }-> s20 :|: s20 >= 0, s20 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 26 + 10*z' }-> s21 :|: s21 >= 0, s21 <= 1, z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 25 + 10*z' }-> s27 :|: s27 >= 0, s27 <= 1, s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 21 + 5*z' }-> s38 :|: s37 >= 0, s37 <= 0, s38 >= 0, s38 <= s37, z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 21 + 5*z' }-> s40 :|: s39 >= 0, s39 <= 1 + 0, s40 >= 0, s40 <= s39, z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 30 + 5*z' }-> s26 :|: s26 >= 0, s26 <= z', s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 21 }-> s34 :|: s33 >= 0, s33 <= z', s34 >= 0, s34 <= s33, z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 26 }-> s36 :|: s35 >= 0, s35 <= z', s36 >= 0, s36 <= s35, z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 17 + 5*z' }-> s19 :|: s19 >= 0, s19 <= z, z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 16 + 5*z' }-> s25 :|: s25 >= 0, s25 <= z, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 15 + 5*z' }-> s22 :|: s22 >= 0, s22 <= z, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 14 + 5*z' }-> s18 :|: s18 >= 0, s18 <= z, z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 13 + 5*z' }-> s24 :|: s24 >= 0, s24 <= z, s15 >= 0, s15 <= 2, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 7 + 5*z' }-> s17 :|: s17 >= 0, s17 <= 0, z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: {gcd} Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] e1: runtime: O(1) [4], size: O(1) [2] equal0: runtime: O(1) [5], size: O(1) [2] l5: runtime: O(n^1) [14 + 5*z'], size: O(n^1) [z] l7: runtime: O(n^1) [13 + 5*z'], size: O(n^1) [z] l11: runtime: O(n^1) [5 + 5*z'], size: O(1) [0] l1: runtime: O(n^1) [18 + 5*z'], size: O(n^1) [z] l3: runtime: O(n^1) [16 + 5*z'], size: O(n^1) [z] l13: runtime: O(n^1) [21 + 5*z'], size: O(1) [1] l2: runtime: O(n^1) [17 + 5*z'], size: O(n^1) [z + z''] l14: runtime: O(n^1) [4 + 5*z'], size: O(1) [0] l4: runtime: O(n^1) [15 + 5*z'], size: O(n^1) [z] l10: runtime: O(n^1) [6 + 5*z'], size: O(1) [0] l8: runtime: O(n^1) [7 + 5*z'], size: O(n^1) [z] l15: runtime: O(1) [26], size: O(n^1) [z'] l12: runtime: O(n^1) [25 + 10*z'], size: O(1) [1] gcd: runtime: ?, size: O(n^1) [z] ---------------------------------------- (145) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: gcd after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 19 + 5*z' ---------------------------------------- (146) Obligation: Complexity RNTS consisting of the following rules: bool2Nat(z) -{ 1 }-> 0 :|: z = 1 bool2Nat(z) -{ 1 }-> 1 + 0 :|: z = 2 e1(z, z', z'', z1) -{ 4 }-> s11 :|: s11 >= 0, s11 <= 2, s' >= 0, s' <= 2, z' - 1 >= 0, z1 >= 0, z'' >= 0, z - 1 >= 0 e1(z, z', z'', z1) -{ 4 }-> s12 :|: s12 >= 0, s12 <= 2, z1 >= 0, z'' >= 0, z' - 1 >= 0, z = 0 e1(z, z', z'', z1) -{ 4 }-> s13 :|: s13 >= 0, s13 <= 2, z >= 0, z1 >= 0, z'' >= 0, z' = 0 e1(z, z', z'', z1) -{ 4 }-> s14 :|: s14 >= 0, s14 <= 2, z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 3 }-> s3 :|: s3 >= 0, s3 <= 2, z' >= 0, z1 = 2, z >= 0, z'' >= 0 e2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e3(z, z', z'', z1) -{ 2 }-> s2 :|: s1 >= 0, s1 <= 2, s2 >= 0, s2 <= 2, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 e3(z, z', z'', z1) -{ 2 }-> 2 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 1 + (z - 1) = a, b >= 0, 2 = 2, a >= 0, 0 = b e3(z, z', z'', z1) -{ 2 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 0 = a, a >= 0, 1 = 1 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' >= 0, z - 1 >= 0, z' = 0, 2 = v3, v0 >= 0, v1 >= 0, 1 + (z - 1) = v0, 0 = v1, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0, 1 = v3, v0 >= 0, 0 = v0, v3 >= 0 e3(z, z', z'', z1) -{ 1 }-> 0 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0, 0 = v3, v3 >= 0 e4(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z >= 0, z'' >= 0 e4(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 = 1, z'' >= 0 e4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 e5(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e6(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e7(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 e8(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 equal0(z, z') -{ 5 }-> s16 :|: s16 >= 0, s16 <= 2, z' >= 0, z >= 0 gcd(z, z') -{ 19 + 5*z' }-> s32 :|: s32 >= 0, s32 <= z, z >= 0, z' >= 0 help1(z) -{ 1 }-> 2 :|: z - 2 >= 0 help1(z) -{ 1 }-> 1 :|: z = 1 + 0 help1(z) -{ 1 }-> 1 :|: z = 0 l1(z, z', z'', z1, z2, z3) -{ 18 + 5*z' }-> s23 :|: s23 >= 0, s23 <= z'' + z, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 6 + 5*z' }-> s28 :|: s28 >= 0, s28 <= 0, s >= 0, s <= 2, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z - 1 >= 0 l10(z, z', z'', z1, z2, z3) -{ 6 + 5*z' }-> s29 :|: s29 >= 0, s29 <= 0, z2 >= 0, z' - 1 >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z = 0 l10(z, z', z'', z1, z2, z3) -{ 6 }-> s30 :|: s30 >= 0, s30 <= 0, z2 >= 0, z >= 0, z3 >= 0, z'' >= 0, z1 >= 0, z' = 0 l10(z, z', z'', z1, z2, z3) -{ 6 + 5*z' }-> s31 :|: s31 >= 0, s31 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 5 + 5*z' }-> s20 :|: s20 >= 0, s20 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l11(z, z', z'', z1, z2, z3) -{ 26 + 10*z' }-> s21 :|: s21 >= 0, s21 <= 1, z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l11(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l12(z, z', z'', z1, z2, z3) -{ 25 + 10*z' }-> s27 :|: s27 >= 0, s27 <= 1, s8 >= 0, s8 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 21 + 5*z' }-> s38 :|: s37 >= 0, s37 <= 0, s38 >= 0, s38 <= s37, z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 21 + 5*z' }-> s40 :|: s39 >= 0, s39 <= 1 + 0, s40 >= 0, s40 <= s39, z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l13(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l14(z, z', z'', z1, z2, z3) -{ 30 + 5*z' }-> s26 :|: s26 >= 0, s26 <= z', s7 >= 0, s7 <= 0, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 21 }-> s34 :|: s33 >= 0, s33 <= z', s34 >= 0, s34 <= s33, z2 = 1, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 26 }-> s36 :|: s35 >= 0, s35 <= z', s36 >= 0, s36 <= s35, z2 = 2, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l15(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l16(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 17 + 5*z' }-> s19 :|: s19 >= 0, s19 <= z, z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l2(z, z', z'', z1, z2, z3) -{ 1 }-> z'' :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l2(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l3(z, z', z'', z1, z2, z3) -{ 16 + 5*z' }-> s25 :|: s25 >= 0, s25 <= z, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l4(z, z', z'', z1, z2, z3) -{ 15 + 5*z' }-> s22 :|: s22 >= 0, s22 <= z, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 14 + 5*z' }-> s18 :|: s18 >= 0, s18 <= z, z2 >= 0, z >= 0, z' >= 0, z3 = 1, z'' >= 0, z1 >= 0 l5(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z'' >= 0, z1 >= 0, z3 = 2 l5(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l6(z, z', z'', z1, z2, z3) -{ 1 }-> 0 :|: z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l7(z, z', z'', z1, z2, z3) -{ 13 + 5*z' }-> s24 :|: s24 >= 0, s24 <= z, s15 >= 0, s15 <= 2, z2 >= 0, z >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l8(z, z', z'', z1, z2, z3) -{ 7 + 5*z' }-> s17 :|: s17 >= 0, s17 <= 0, z2 >= 0, z >= 0, z' >= 0, z1 = 1, z3 >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z1 = 2, z' >= 0, z3 >= 0, z >= 0, z'' >= 0 l8(z, z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' >= 0, z1 >= 0 l9(z, z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 >= 0, z' >= 0, z3 >= 0, z >= 0, z1 >= 0, z'' >= 0 lt(z, z') -{ 0 }-> s'' :|: s'' >= 0, s'' <= 2, z - 1 >= 0, z' - 1 >= 0 lt(z, z') -{ 0 }-> 2 :|: z' - 1 >= 0, z = 0 lt(z, z') -{ 0 }-> 1 :|: z >= 0, z' = 0 lt(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 m1(z, z', z'', z1) -{ 2 + 5*z' }-> s5 :|: s5 >= 0, s5 <= 2, z >= 0, z' >= 0, z1 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 + 5*z' }-> s4 :|: s4 >= 0, s4 <= 0, z' >= 0, z >= 0, z1 = 1, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z1 = 2, z - 2 >= 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z = 1 + 0, z'' >= 0 m2(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 = 2, z'' >= 0, z = 0 m2(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m3(z, z', z'', z1) -{ 1 }-> 2 :|: z' >= 0, z - 2 >= 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z = 1 + 0, z1 >= 0, z'' >= 0 m3(z, z', z'', z1) -{ 1 }-> 1 :|: z' >= 0, z1 >= 0, z'' >= 0, z = 0 m4(z, z', z'', z1) -{ 5*z' }-> s10 :|: s9 >= 0, s9 <= 0, s10 >= 0, s10 <= s9, z - 1 >= 0, z' - 1 >= 0, z1 >= 0, z'' >= 0 m4(z, z', z'', z1) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z1 >= 0 m5(z, z', z'', z1) -{ 1 }-> z'' :|: z' >= 0, z >= 0, z1 >= 0, z'' >= 0 monus(z, z') -{ 3 + 5*z' }-> s6 :|: s6 >= 0, s6 <= 0, z' >= 0, z >= 0 Function symbols to be analyzed: Previous analysis results are: e4: runtime: O(1) [1], size: O(1) [2] l16: runtime: O(1) [1], size: O(n^1) [z''] e5: runtime: O(1) [1], size: O(1) [2] e8: runtime: O(1) [1], size: O(n^1) [z''] m5: runtime: O(1) [1], size: O(n^1) [z''] l6: runtime: O(1) [1], size: O(1) [0] bool2Nat: runtime: O(1) [1], size: O(1) [1] l9: runtime: O(1) [1], size: O(n^1) [z] e6: runtime: O(1) [1], size: O(1) [1] lt: runtime: O(1) [0], size: O(1) [2] m3: runtime: O(1) [1], size: O(1) [2] e7: runtime: O(1) [1], size: O(1) [1] help1: runtime: O(1) [1], size: O(1) [2] e3: runtime: O(1) [2], size: O(1) [2] m1: runtime: O(n^1) [2 + 5*z'], size: O(1) [0] m4: runtime: O(n^1) [5*z'], size: O(1) [0] m2: runtime: O(n^1) [1 + 5*z'], size: O(1) [2] e2: runtime: O(1) [3], size: O(1) [2] monus: runtime: O(n^1) [3 + 5*z'], size: O(1) [0] e1: runtime: O(1) [4], size: O(1) [2] equal0: runtime: O(1) [5], size: O(1) [2] l5: runtime: O(n^1) [14 + 5*z'], size: O(n^1) [z] l7: runtime: O(n^1) [13 + 5*z'], size: O(n^1) [z] l11: runtime: O(n^1) [5 + 5*z'], size: O(1) [0] l1: runtime: O(n^1) [18 + 5*z'], size: O(n^1) [z] l3: runtime: O(n^1) [16 + 5*z'], size: O(n^1) [z] l13: runtime: O(n^1) [21 + 5*z'], size: O(1) [1] l2: runtime: O(n^1) [17 + 5*z'], size: O(n^1) [z + z''] l14: runtime: O(n^1) [4 + 5*z'], size: O(1) [0] l4: runtime: O(n^1) [15 + 5*z'], size: O(n^1) [z] l10: runtime: O(n^1) [6 + 5*z'], size: O(1) [0] l8: runtime: O(n^1) [7 + 5*z'], size: O(n^1) [z] l15: runtime: O(1) [26], size: O(n^1) [z'] l12: runtime: O(n^1) [25 + 10*z'], size: O(1) [1] gcd: runtime: O(n^1) [19 + 5*z'], size: O(n^1) [z] ---------------------------------------- (147) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (148) BOUNDS(1, n^1)